<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[CraneInForest的专栏]]></title><description><![CDATA[技术积累和项目管理,沉淀到这里]]></description><link>https://blog.youkuaiyun.com/wanzi215</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wanzi215]]></copyright><item><title><![CDATA[多人在线游戏技术难点分析]]></title><link>https://blog.youkuaiyun.com/wanzi215/article/details/115792511</link><guid>https://blog.youkuaiyun.com/wanzi215/article/details/115792511</guid><author>wanzi215</author><pubDate>Mon, 10 May 2021 17:30:44 +0800</pubDate><description><![CDATA[本文主要聚焦于多人在线游戏的两个技术难点:
1.服务器的承载能力
2.玩家体验
通信架构
同步方式和异步方式
同步简单粗暴,数据稳定性高,但需要收集到所有玩家数据后才能做出下一步反应,因此体验取决于网速最慢的那个人
异步方式体验最好,可以容忍更加不稳定的传输线路和糟糕的延迟,但需要处理很多异常状况
游戏中具体采用哪种通信架构并没有一个标准答案,要根据游戏具体的设计和玩法来进行对应的选择
构成游戏世界的三大基本要素:
玩家和npc的交互(异步)
格斗游戏,攻击与躲闪的异步冲突,发送表示原因的数据,不能只发送结]]></description><category></category></item><item><title><![CDATA[Dots初探和原理分析]]></title><link>https://blog.youkuaiyun.com/wanzi215/article/details/113031580</link><guid>https://blog.youkuaiyun.com/wanzi215/article/details/113031580</guid><author>wanzi215</author><pubDate>Sun, 14 Feb 2021 15:42:24 +0800</pubDate><description><![CDATA[什么是DOTS
Data-Oriented Tech Stack
ECS  Entity Component System
C# Job System
Burst Compiler
Dots的官方数据

450w个mesh render
10万个音频文件同时播放
5k个不同的汽车模型
20万个不同的建筑模型
稳定60帧
DOTS原理
ECS 用于编写高性能代码
Job System 用于高效运行多线程代码
Burst Compiler 用于生成高度优化的本地代码
这三者是完全不同的两个概念,可以分开使用,但]]></description><category></category></item><item><title><![CDATA[unity内存优化技巧整理]]></title><link>https://blog.youkuaiyun.com/wanzi215/article/details/111239725</link><guid>https://blog.youkuaiyun.com/wanzi215/article/details/111239725</guid><author>wanzi215</author><pubDate>Tue, 15 Dec 2020 20:32:25 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[unity客户端载入体验优化解决过程记录]]></title><link>https://blog.youkuaiyun.com/wanzi215/article/details/107128841</link><guid>https://blog.youkuaiyun.com/wanzi215/article/details/107128841</guid><author>wanzi215</author><pubDate>Sat, 04 Jul 2020 19:43:26 +0800</pubDate><description><![CDATA[最近运营组提了优化建议,说进入游戏时感觉很卡顿,进入游戏的整个loading过程中会出现3次明显的卡顿,不顺畅,体验很不舒服,同时找了几个竞品游戏做对比,发现我们的游戏确实加载体验不好,遂开始着手分析是哪里出了问题.


1.第一直觉是美术资源加载的问题,资源加载是卡主线程的,肯定会出现画面卡顿.于是我从启动函数开始梳理,直到卡顿的地方,发现还没到加载美术资源的地方就已经卡了,继续


2.发现运行第一个lua脚本的地方会出现明显卡顿,于是开始分析这个lua脚本做了什么逻辑,一行一行进行注释,调试,最后只剩]]></description><category></category></item><item><title><![CDATA[unity接入bugly无法显示C#错误行号]]></title><link>https://blog.youkuaiyun.com/wanzi215/article/details/104225703</link><guid>https://blog.youkuaiyun.com/wanzi215/article/details/104225703</guid><author>wanzi215</author><pubDate>Sat, 08 Feb 2020 17:38:11 +0800</pubDate><description><![CDATA[项目上线后在bugly后台收集到一些c#的错误日志,如下所示:

可以看到堆栈信息,但看不到具体的行号,这对于一个函数中有多行代码的逻辑来说只能说帮助有限.
在unity社区发现目前并不支持release发布的l2cpp的版本显示行号,于是我尝试改为develop+mono进行打包测试,结果如下:

这次可以正常显示了,为了确认是develop+mono才能正常显示,我又试了试release+mo...]]></description><category></category></item><item><title><![CDATA[unity www在android端不释放内存问题解决方案]]></title><link>https://blog.youkuaiyun.com/wanzi215/article/details/103748234</link><guid>https://blog.youkuaiyun.com/wanzi215/article/details/103748234</guid><author>wanzi215</author><pubDate>Sun, 02 Feb 2020 21:13:19 +0800</pubDate><description><![CDATA[最近在优化unity游戏项目内存占用,游戏打开时会先从包里解压一部分资源到本地,原本是使用的www进行解压,解压的包体有400M,解压完毕后发现unity竟然不会释放这部分内存给系统,而是继续持有,查询了很多相关资料后发现这是C#的问题,C#的设计理念是一但应用可以申请400M的内存进行解压,那这400M内存也不用还给系统,应用后续的其它内存申请可复用之前申请的内存空间,减少数据吞吐提升运行效率,...]]></description><category></category></item><item><title><![CDATA[unity2019.1.5f1及更高版本不再存储UIText的完整vertex信息]]></title><link>https://blog.youkuaiyun.com/wanzi215/article/details/103970269</link><guid>https://blog.youkuaiyun.com/wanzi215/article/details/103970269</guid><author>wanzi215</author><pubDate>Tue, 14 Jan 2020 14:00:02 +0800</pubDate><description><![CDATA[最近在做聊天emoji支持,用的版本是unity 2019.1.8f1
参考了网上多个例子,均出现排版怪异的问题,排查原因后发现是unity新版中不再存储UIText的空格,换行等完整vertex信息,因此,所有通过OnPopulateMesh重新修改text的顶点信息来实现图文混排的算法全部失效.
在这篇帖子中,unity官方给了回复:

https://forum.unity.com/thre...]]></description><category></category></item><item><title><![CDATA[unity+tolua 64位android崩溃排查过程记录]]></title><link>https://blog.youkuaiyun.com/wanzi215/article/details/103747926</link><guid>https://blog.youkuaiyun.com/wanzi215/article/details/103747926</guid><author>wanzi215</author><pubDate>Thu, 02 Jan 2020 15:04:50 +0800</pubDate><description><![CDATA[最近项目上线googleplay,需要打64位包,由于unity l2cpp打包比mono慢很多,因此前期开发过程中都是用的mono打的32位包进行测试.结果64位包出来后发生各种莫名其妙的卡死,尤其是重载场景以后,几乎必然出现
我试着把手机接上androidstudio查询日志,发现卡死的时候触发了bugly,难道是bugly的bug导致的?
于是我决定暂时去掉bugly,结果发现原来会触发卡死...]]></description><category></category></item><item><title><![CDATA[unity IAP错误排查:The object of type ‘AsyncWebUtil‘ has been destroyed but you are still trying to acces]]></title><link>https://blog.youkuaiyun.com/wanzi215/article/details/103747844</link><guid>https://blog.youkuaiyun.com/wanzi215/article/details/103747844</guid><author>wanzi215</author><pubDate>Sat, 28 Dec 2019 19:48:57 +0800</pubDate><description><![CDATA[unity IAP 错误排查:The object of type 'AsyncWebUtil' has been destroyed but you are still trying to access it.
正在开发的项目有超时断线重连的功能,这时候会重载场景,重载后如果调用IAP的支付代码会触发报错:
MissingReferenceException: The object of typ...]]></description><category></category></item><item><title><![CDATA[Luaframework Unity2019适配(附源码)]]></title><link>https://blog.youkuaiyun.com/wanzi215/article/details/90488136</link><guid>https://blog.youkuaiyun.com/wanzi215/article/details/90488136</guid><author>wanzi215</author><pubDate>Thu, 23 May 2019 21:14:16 +0800</pubDate><description><![CDATA[公司最近新开项目,打算升级unity到最新的2019,run了一下最新的luaframework无法正常运行,于是做了一些小调整.
改动了以下三个文件:

在win10, android,ios上均测试通过.
如有类似需求的同学可以参考看看.
源码地址:
https://github.com/CraneInForest/LuaFramework_UGUI.git

具体修改的地方可以看看git仓库...]]></description><category></category></item><item><title><![CDATA[游戏团队,各职位人员离职所带来的影响和不同]]></title><link>https://blog.youkuaiyun.com/wanzi215/article/details/78174345</link><guid>https://blog.youkuaiyun.com/wanzi215/article/details/78174345</guid><author>wanzi215</author><pubDate>Fri, 10 May 2019 09:21:33 +0800</pubDate><description><![CDATA[公司boss是商务出身,不懂技术,也不懂游戏开发和游戏团队,于是常常需要给他普及一些常识性的知识.

游戏制作人

游戏制作人一般为游戏title的发起者,多为公司高层,股东,甚至boss本身,一般来说,游戏制作人是不会轻易离职的,除非公司出现重大变故,或者公司内部政治斗争导致不得不走等等,但,一旦出现游戏制作人离职的情况,那该项目团队或许就要面临解散的局面了.



项目负责人/项目经理

很...]]></description><category></category></item><item><title><![CDATA[科技公司需要了解的重要问题,工程师的思维和情商]]></title><link>https://blog.youkuaiyun.com/wanzi215/article/details/78192947</link><guid>https://blog.youkuaiyun.com/wanzi215/article/details/78192947</guid><author>wanzi215</author><pubDate>Fri, 10 May 2019 09:10:41 +0800</pubDate><description><![CDATA[我是技术出身,对于曾经共事的同事多有观察,发现工程师的思维非常可爱,简单,直接.

会在心里转小九九的地方大都在薪资福利,岗位,职级等地方打转,很少会在人情世故,鸡毛蒜皮的事上的纠结.

代码写累了,阳台人手一根烟就是一群兄弟最真实的写照.



最近公司出了两个新政策,让公司工程师大为光火,公司规定:



1.周末加班餐不可统一报销,必须各报各的,而且需要餐饮发票.

2.周末加班不管加到...]]></description><category></category></item><item><title><![CDATA[skynet中如何使用redis]]></title><link>https://blog.youkuaiyun.com/wanzi215/article/details/78354485</link><guid>https://blog.youkuaiyun.com/wanzi215/article/details/78354485</guid><author>wanzi215</author><pubDate>Fri, 10 May 2019 09:07:25 +0800</pubDate><description><![CDATA[我们最近的项目中,使用Skynet+redis作为搭档,redis这个高速缓存使用起来非常方便,效率也很不错,现在进行一个简单的记录和分享.



我们使用的Redis是适配与skynet的lua版本.

Redis的启动非常简单,一句话搞定:

目录定位到:/skynet/myexample/mulclient

启动命令:

redis-serverredis/redis-na-base-m...]]></description><category></category></item><item><title><![CDATA[项目leader如何把控团队氛围]]></title><link>https://blog.youkuaiyun.com/wanzi215/article/details/78313961</link><guid>https://blog.youkuaiyun.com/wanzi215/article/details/78313961</guid><author>wanzi215</author><pubDate>Fri, 10 May 2019 09:04:34 +0800</pubDate><description><![CDATA[今天主美来找我，说有个做建模的MM反应说团队氛围不好，太过严肃，死气沉沉。这着实让我吃了一惊。

主美问我要不要抽个时间做个团建，聚个餐，缓和一下团队氛围？

直觉告诉我没那么简单，我说让我考虑考虑。



下班回家路上我就在反思哪里出了问题。

最近我定了两个可能让团队成员压抑的规矩：

1.所有人创建工作QQ，上班时间不能使用私人QQ

我发现不少人有在上班时间闲聊QQ的坏习惯，可能是上家公...]]></description><category></category></item><item><title><![CDATA[unity5.x适配Android P刘海屏方案]]></title><link>https://blog.youkuaiyun.com/wanzi215/article/details/88179295</link><guid>https://blog.youkuaiyun.com/wanzi215/article/details/88179295</guid><author>wanzi215</author><pubDate>Tue, 05 Mar 2019 13:45:04 +0800</pubDate><description><![CDATA[unity5.x适配Android P刘海屏方案修改启动Activity生成jar包替代启动Activityunity2018的方案
最近项目有需要适配Android P的刘海屏,尝试在androidManifest.xml中进行了各种配置发现系统仍然自动两边留黑,刘海附近默认不绘制,最后方案是通过修改启动activity进行解决:
修改启动Activity
以下是MainActivity.jav...]]></description><category></category></item><item><title><![CDATA[unity帧同步游戏极简框架及实例(附客户端服务器源码)]]></title><link>https://blog.youkuaiyun.com/wanzi215/article/details/82053036</link><guid>https://blog.youkuaiyun.com/wanzi215/article/details/82053036</guid><author>wanzi215</author><pubDate>Sat, 01 Sep 2018 11:36:51 +0800</pubDate><description><![CDATA[阅前提示: 
此框架专为有帧同步需求的游戏打造,实现了一个最精简的框架,这几篇文章我会详细讲解帧同步游戏的制作要点,伴随框架自带了一个小的塔防demo作为演示.



什么情况下需要使用帧同步
帧同步原理
服务器校验
如何做平台分离
逻辑和绘制如何分离
哪些unity接口不能调用(Debug.log)


定点数
如何去掉Vector2和Vector3
不能使用dotween


随机数
如何做加...]]></description><category></category></item><item><title><![CDATA[游戏开发中常用设计模式梳理和总结]]></title><link>https://blog.youkuaiyun.com/wanzi215/article/details/81805939</link><guid>https://blog.youkuaiyun.com/wanzi215/article/details/81805939</guid><author>wanzi215</author><pubDate>Mon, 20 Aug 2018 08:45:46 +0800</pubDate><description><![CDATA[阅前提示:

本文讲述内容为游戏开发中涉及的常用设计模式,以及个人对这些模式的思考和总结,这些模式来自于前辈们众多项目经验实战总结,因此读者应具备一定的游戏开发经验,方能更好的理解和运用到实际工作中

目录:



状态模式
外观模式
单例模式
中介者模式
桥接模式
策略模式
模板方法模式
工厂模式
建造者模式
享元模式
组合模式
命令模式
责任链模式
观察者模式
备忘录模式
访问者模式
装饰模式...]]></description><category></category></item><item><title><![CDATA[通过Jenkins搭配Unity3d + luaframework实现网页端自动化打包]]></title><link>https://blog.youkuaiyun.com/wanzi215/article/details/81623945</link><guid>https://blog.youkuaiyun.com/wanzi215/article/details/81623945</guid><author>wanzi215</author><pubDate>Mon, 13 Aug 2018 09:10:12 +0800</pubDate><description><![CDATA[阅前提示 
本文讲述内容为在实现unity3d+luaframework一键打包后,如何与jenkins整合,进行自动化打包,如果您不知道如何做到一键打包,请参阅我的另一篇文章: 
https://www.jianshu.com/p/2377340b2a18 
如果您对unity3d,luaframework不熟悉,则不建议阅读.

上一篇我们讲了Unity3D + luaframework如何做...]]></description><category></category></item><item><title><![CDATA[Unity3D + luaframework如何做到一键打包]]></title><link>https://blog.youkuaiyun.com/wanzi215/article/details/81413487</link><guid>https://blog.youkuaiyun.com/wanzi215/article/details/81413487</guid><author>wanzi215</author><pubDate>Sat, 04 Aug 2018 17:48:15 +0800</pubDate><description><![CDATA[阅前提示:

本文讲述内容为如何优化luaframework的打包流程,并不是讲如何使用luaframework配合unity3D进行热更新的基础内容,因此需要读者有unity3d + luaframework的使用经验,以及熟悉assetbundle的热更原理和流程,否则不建议阅读.

目录: 
1.为什么要做一键打包 
2.使用OnScriptsReloaded 来串接整个流程 
3.如何在O...]]></description><category></category></item></channel></rss>