目录
《龙之谷》手游挺垃圾的代码
再次证明IP好,管你做的多烂,还是一个有“前途”的游戏
希望如最新宣传文档那样能做到优化:《龙之谷2》进行再一次的全面优化介绍
估计悬
《龙之谷》手游这个源码还真不知道该从哪里开始吐槽
槽点太多,有点选择困难
============================
后记,经过半年分析
(前前后后干了很多事,真正分析代码和调整才2星期)
- 手游《龙1》是外包给某公司(已上市,结果这几年搞h5战略小游戏,扑街了吧),腾讯代理
- 手游《龙2》应该是腾讯自己开发,自己代理,各种手机卡通PBR渲染还算靠谱
- 这里仅仅学习《龙1》代码,最下面有《龙1》CTO优化链接,感觉就是张口就来,90%的代码和优化无关,剩下10%好用的框架也是盛大内部框架;《龙2》最新代码暂时并没有的,因为不是原来的外包公司,估计也不可能流出,腾讯流出也没意思
首先,工具乱糟糟
(估计换了几个主程吧,多少人接手才能乱成这样)
Editor上方的MenuTools比较乱,当然有些吹毛求疵,但是门面如此,可知里子亦如此;
一般也只有外包会有这样的代码结构,倒不是整个游戏代码有多烂,主要还是用的盛大的引擎, 封装以外的代码和开发流程就不管了,很怀疑这样的代码能收敛么??
可以想象,《龙之谷》2017年上线那时候游戏行业最后阶段攻坚的优良传统再一次需要被发扬光大,通宵加班48小时
其次,用的Unity4.6~4.7的版本
(乱到没朋友的Unity APP结构 和下面参考链接:手游优化-CTO分享 形成鲜明对比)
根据工具乱的分析,当时肯定是不够能力升级的,所以说的好听就是一直用稳定的Unity4.7版本;然后我们拿到的代码是Unity5.2,是明显升级过程中的产物,能跑通就不错了
另外,发现使用了slua ulua + tolua的组合
1.(其实和时代,和环境,和人手关系不大,整个团队的上限还是全系于主程的个人能力,虽说个人能力有限,大公司真的人多,但龙之谷这样的大制作大公司,还是理应可以找到匹配的主程)
2.框架多,乱,杂代表编程水平真高;主要还是招聘的人多,没管理就会有这个情况吧;我们一般小团队还真的很难与之相比;没有具体数据,后面考证一下
3.lua入口(在Resource目录,后缀恶心,虽然我好像也干过这种事情, .lua.txt)
4.在Unity4.x的年代,没有Assetbundle,资源管理确实缺失,将就用,你看,现在Unity官方各种工具其实也没好多少
其他,后面补充
。。。。。
。、。。。
。。。。
主要场景渲染效果如下
导出模型后,死活不亮,模型比较暗,显示不了原色
LIGHTON
- VERTEXLIGHTON / OFF
- if OFF
- LAMBERT / OFF
- if ON
- ORIGINAL_LIGHT / OFF
- 最终original_lightOff 导致黑色一片
RIMLIGHT
EMISSION
知道了前面ambient的灯光导致颜色变暗,就能定位处理了
fixed3 ambientLighting = UNITY_LIGHTMODEL_AMBIENT.rgb;
那么,AMBIENT这个场景的环境光如何调呢?
(代码shader语法,该这么写还是这么写,同样一段代码在不同的项目真的可以完全不同)
搜索到Unity5.x这个,
然后,在官网文档看到这段说明
最后的最后,原来在这里调(默认灰色,所以整体颜色变暗)
在Unity2020 ->这段也相当于Unity5.x的Ambient Source
代码结构
IP连接
验证(dll内核)
//调用堆栈,大概如下 xShell.Update() this._entrance.Update();//XGameEntrance XGame.Update() --------------------------------- if (this.StageReady && this.notLoadScene) { this._stage.Update(fDeltaT); this._doc.Update(fDeltaT); XSingleton<UIManager>.singleton.Update(fDeltaT); } XSingleton<XLoginDocument>.singleton.AutoAuthorization(true);
你若是不想一步步学习,直接看Log也行
其他代码参考:
public static T CreateSpecificStage<T>() where T : new() => new T(); private bool OnAccountInfoEnterClick(IXUIButton button) internal class RpcC2I_QueryGateIP : Rpc
参考:
窥探Unity5渲染内部之解析UnityShaderVariables.cginc - 战狼96 - 博客园 (cnblogs.com)
欢乐互娱庞池海:《龙之谷》项目性能优化经验分享 - GameRes游资网
- 海报