Unity如何搭建游戏框架
Unity作为全球最知名的游戏引擎之⼀,功能已经做的⾮常完善了,为什么我们还要在开发项⽬的时候需要搭建游戏框架呢?基于Unity来搭建⼀个游戏框架,我们⼜应该如何思考,如何做?今天给⼤家分享⼀些Unity游戏框架搭建相关的内容和理念。
为什么有Unity引擎还要搭建⼀个游戏框架?
Unity是游戏引擎,⾯对的是任意类型的游戏使⽤和不同的开发团队。所以他提供的是机制,很少提供⼀些具体的策略,⽐如资源管理,提供addressable/asssetsBundle机制。⽐如开发模式提供组件化开发的模式,⽐如编辑器扩展,提供编辑器扩展的机制。Unity提供的场景编辑,光照烘培,粒⼦系统等⼯具为我们开发游戏提供了很多⽅便,解决了3D游戏中场景制作特效等问题。提供Prefab机制,可以将编辑的好的内容做成⼀个⼀个的预制体。提供渲染管线定制与Shader开发机制,⽅便我们做出⾼性能的渲染和特定的效果以及开发特殊的Shader。提供了这些机制后,⾄于每个团队,每家公司具体怎么⽤即使⽤策略交给团队与公司⾃⼰决定,Unity不去做过多的设计和⼲涉。所以这就是为什么很多公司会基于Unity 做⼀套适合⾃⼰团队,适合⾃⼰游戏的开发框架, 来规定⼀些具体的策略,和开发协作中的⼀些规定。每个公司开发的游戏类型和需求不⼀样,有⼀些专门领域的算法和⼯具需要公司来定制,⾃然unity就不会提供了,⽐如特定的地图编辑器等。
Unity游戏框架要解决哪些问题?
上⾯了解了我们为何有了Unity引擎还要搭建Unity框架,接下来我们来分析⼀下⼀个Unity游戏开发框架到底要解决哪些问题,确定哪些策略和机制。
特效是怎么做出来的⾸先要确定的就是组织代码和资源的⽅式。我们做项⽬需要维护,需要多⼈协作,同时开发游戏,包含了美术,策划,程序等多个岗位的开发⼈员。如果通过制定⼀个策略把这些开发⼈员组织在⼀起,⽐如⽬录结构如何划分,美术做好的界⾯放哪⾥,美术做好的地图放哪⾥,美术做好的特效放哪⾥,策划做好的数值数据放哪⾥,程序如何使⽤资源,如何读取策划的数值表,数值表的格式是什么?程序的代码如何放,哪些属于其它项⽬可⽤的代码,哪些属于这个游戏业务逻辑代码。
其次要考虑的是游戏的核⼼玩法所需要的美术风格,渲染效果和游戏性能。对于⼀个游戏⽽⾔最重要的现在就是玩法与效果,所以客户端的游戏效果是什么样⼦对于游戏来说很重要,所以很多⼤型的游戏公司⾥⾯做项⽬的第⼀件事情就是定制渲染管线编写Shader做好对应的美术风格。同时⼿机游戏还要考虑不同的平台显⽰的效果的差异,需要通过修改代码来修正这些显⽰上的差异。还有些核⼼的玩法需要⾼度的依赖⼀些Shader,⽐如⾐服布料等,同时多⼈战⽃的核⼼玩法还需要定制和修改相关的组件来做到⾼性能,⽀撑核⼼战⽃。
还有可能要针对游戏的玩法和类型开发⼀些特殊的⼯具,⽐如地图编辑器,⽐如关卡编辑器,⽐如路
径点标记等等。这些就需要开发⼀些特殊的⼯具和脚本。
最后要做的就是上线发布时候必要的⼀些⼯具和功能,⽐如SDK对接,打空包,资源更新,代码热更新等。考虑这些,也是我们做游戏框架必须要解决的问题,⽽这些问题⼀般Unity引擎不会直接提供。
Unity 游戏框架具体如何设计
通过上⾯的描述⼤家明⽩了为什么要基于Unity游戏引擎来搭建框架,那么当我们要做⼀个类型的游戏的时候如何来做游戏框架呢?我这边分享⼀个我带项⽬时候的具体的做法,供⼤家参考。
⾸先策划会告诉我这个游戏的核⼼玩法,我要快速的确认这个游戏的美术风格细节(光照,影⾳等),确认最复杂最消耗性能的战⽃客户端的性能是否能⽀持,最快的速度模拟这种性能极限来做渲染管线的定制和Shader优化等。核⼼玩法的技术难点⼀旦被验证过了,这个游戏基本上都能做出来。这样框架⾥⾯就有了渲染效果代码和特定的Shader。这个解决后美术就可以进场来做场景设计和资源编辑了。
渲染效果与性能问题解决后,接下来就开始做常⽤的⼀些功能模块来⽀撑业务逻辑的开发,⾸先是⽬录结构的组织,游戏框架代码的启动流程,各个常⽤的游戏模块: 资源管理模块, 调试⽇志模块,UI管理模块, ⽹络管理模块,数据表格管理模块, ⼀些⼯具性质的代码,如http上传下载, ⼯具类的函数等。
接下来搭建热更新与资源更新,打空包相关的代码脚本和编辑器扩展,能⽀持资源更新热更新,打空
包等。打包的时候还要考虑到版本号和版本管理。
最后就是针对游戏玩法关卡设计等,开发⼀些⼯具,⽐如关卡编辑器,地图编辑器与路径烘培等。
这些东西都做好了以后,针对这个项⽬的框架就算做好了,⼤家基于这套来进⾏开发协作,框架也就做好了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论