讲师简介:王春和,腾讯互娱北极光工作室客户端组主程序员。 拥有10年程序开发经验,参与过PC游戏、页游、手机游戏等类型游戏的开发。 目前担任《轩辕传奇手游》项目组的主要客户端程序员。
01.客户端框架
《轩辕传奇手游》的客户端框架可以用一张图来描述:左边的基础框架相当于游戏运行的核心库。 它基于Unity引擎,集成了第三方插件,包括组件、NGUI、LUA和VAS,基础模块包括场景模块、UI模块、脚本模块、特效模块、网络模块、资源模块等.; 右侧是游戏玩法,包括引导系统、经济系统、副本系统、成长系统等逻辑模块,以及场景、角色、技能、经验等。
客户端框架示意图(点击图片放大)
玩家登录游戏时,首先通过微信、手Q进行访问,然后与游戏服务器进行通信。 基本上所有的数据计算都在服务器上进行,这保证了游戏不会因为别人使用外挂而遭受任何经济损失。
02.开发工具
用于支持游戏的工具包括场景、技能、模型等,提供这些工具可以大大提高游戏开发的效率。
1.场景图
与其他早期手游相比,《轩辕传奇手游》的场景地图非常大,这是手机性能的瓶颈。 当时市面上其他游戏的做法是在游戏进入新场景时加载所有场景资源。 这种方式导致低端手机加载地图场景时,内存、CPU、GPU都难以加载游戏。 所以《轩辕传奇手游》做了一个加载来解决这个问题,就是流式加载,可以理解为动态按需加载。 这种方法可以让游戏即使在加载大场景时也能流畅运行。
分析
但完全的流式加载可能没有考虑到长远的角度,也不是最好的选择。 因此,《轩辕传奇》手游采用混合加载,即先加载基础场景,如天空盒、地标建筑等,等玩家进入后再采用流式加载,这样会达到更好的效果。
在地图场景中,还有一个非常重要的点就是寻路。 传统寻路采用A*算法,但对于大场景,A算法的效率很低。 因此需要对场景进行分层,即HPA,对场景进行划分,进行预计算,然后使用A*算法,大大减少寻路时间。
2. 技能
游戏中的每个效果都是由一组轨道组成的(时间线)序列:动画、特效、声音或其他事件。 技能具有高度可扩展性,所见即所得。 比如我想添加一个变换,只需要展开时间轴,添加一个变换事件就可以实现变换效果。
游戏技巧截图
3.客户端框架更新计划
游戏通常会有内容更新和紧急错误修复。 更新有两种:一种是大版本更新,例如每两个月更新一次大版本,更新整个安装包; 另一种是热更新,就是资源更新。
iOS有政策规定游戏可执行文件不能直接更新,必须经过App Store审核,但其审核时间很长,每次需要两三天左右。 一旦游戏需要紧急修复bug,《轩辕传奇手游》将采取热更新计划。 游戏的大部分代码都是通过LUA完成的。 LUA 是一种宿主语言。 它可以嵌入到游戏的本地语言中。 LUA 用作资源。 打包后,如果出现问题,可以直接更新LUA代码。 。 这样就保证了游戏的每个版本都不需要用原来的包来更新,而只需要用LUA的增量更新来更新。
热更新流程
03.性能优化
大规模多人PK的高频率会带来手机性能、发热、功耗等问题。 这就需要《轩辕传奇手游》的开发者关注游戏的开发效率和表现效率。 作为开发人员,应该从代码开始,保持代码清晰、规范、简洁、高效,并定期、持续地优化代码、改进代码。
如果客户端代码本身没有问题,则需要详细分析,找出瓶颈在哪里,然后指定全局优化的策略。 规划、美术、编程和测试必须齐心协力解决问题,才能给玩家带来良好的游戏体验。
还没有评论,来说两句吧...