业务和功能介绍
大荒先民是一款内容较多较复杂的单机模拟经营游戏,其目标在于用游戏的方式寓教于乐地展示人类原始社会的运行规律和发展形态。
在这个游戏中,玩家作为一个小型原始部落的酋长,带领自己的部落安居乐业,发展壮大,直到征服世界。
核心模块包括角色寻路,3d角色动画,角色智能模拟其一天的生活,类RTS游戏的多角色战斗,3d自由视角摄像机控制(主要为俯视角),
动态生成和修改的3d体素地形,建筑规划建造,科技树,角色等级和头衔,角色物品栏,3d角色换装,2d角色纸娃娃头像,基于FMOD方案实现3d空间音效等等。
玩家主要通过3d场景和2dUI与游戏进行交互。
项目实现
团队前后共有5个程序员参与程序开发,我本人负责框架搭建、重大核心业务功能的开发(如角色寻路,角色生活智能模拟)与性能优化,其他程序员在我的协调下进行各大业务功能模块的开发。整个开发在unity引擎中用c#完成,UI使用UGUI方案,角色智能战斗用行为树实现,另基于unity制作了一些内部开发工具。
3d角色换装系统,通过skinnedMesh组合的方式,实现千人千面效果,并支持修改角色体型,模拟角色生活状况不同导致高矮胖瘦;
体素地形使用Marching cube算法,在256x256x32的3d空间沙盘上实现任意修改和重构地形的响应时间<0.5秒;
寻路使用多线程方案并优化了ai索敌的调度,确保了在256x256x32的3d空间使用A*寻路时,50vs50的战斗性能不低于50fps(1050显卡)
且每个角色可以单独操作,有装备,士气等复杂数值;
难点与解决方案:
游戏中的角色和场景物品数量都比较巨大且数值系统比较复杂,用GOAP模式实现角色决策和场景即时状态的解耦,降低开发难度且提升性能。
数值系统和玩法循环复杂导致UI系统信息量巨大并且产生性能压力,通过优化UI的显示层次和布局算法,优化自动布局的时机,减小UI的渲染性能开销,提升整体性能。
整个游戏业务功能很多,代码量巨大,为此进行了很多比较复杂的优化评估采取了很多实际的优化办法,累计减少了70%左右的内存泄漏问题。