首页 > 其他分享 >Unity如何搭建游戏框架

Unity如何搭建游戏框架

时间:2023-10-24 15:15:48浏览次数:42  
标签:游戏 框架 渲染 项目 Unity 开发 机制 搭建

Unity引擎本省就是一个框架,我们基于Unity再做一个游戏开发框架,本质就是建立一种组织自己项目的方式和方法,让程序+美术+策划一起协同工作,同时能开发出满足项目需求的游戏产品。所以游戏框架的架构与设计与项目管理本身有很密切的关系,今天从另外一个维度来说说基于游戏引擎来如何来做游戏app游戏开发框架。

对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发的技术大佬,欢迎你来交流学习。

1: Unity引擎给我们开发游戏提供的是机制

渲染机制:

Unity封装了很多基础的渲染绘制相关的功能与组件以及渲染效果的一些基础算法,同时引入摄像机,光照等基本的处理方法。然后提供了一种机制(可编程渲染管线机制)允许开发者自己定制渲染的流程,数据传递和处理逻辑。同时提供了机制,让程序员能自己写Shader来定制一些特殊的渲染效果。为了降低开发难度,Unity为我们实现了几种常用的渲染管线与配套Shader, 如向前渲染管线,延时渲染管线,HRP高清渲染管线,URP轻量级渲染管线。

 

开发机制:

Unity给我们提供了两种开发机制,一种是组件化的开发机制,一种是ECS的开发机制。我们在做框架的时候,首先要想清楚我们是基于哪种开发模式,ECS现在比较火,性能高。组件化模式简单,符合大多数人的开发习惯。我们都采用引擎提供的开发机制来开发对应的游戏逻辑。

 

资源管理更新机制:

Unity针对资源管理提供了3中常用的机制,Resources, Assetsbundle, Addressable,根据你游戏的项目来选择一种机制就可以了,但是Unity引擎不会引入资源版本与打空包这些需求的考虑,因为每个项目都不一样,所以就需要你自己做框架来解决这些策略问题。

 

可视化编辑器与编辑器扩展机制:

可视化的搭建游戏场景是游戏引擎的主要功能之一,所以Unity提供了基本的编辑器的功能,提供了基本的组件和控件。同时每个项目有不同的一些工作流,比如打包脚本,比如关卡编辑器,对于Unity而言提供给用户进行扩展编辑器功能的机制,能给开发者做成一些工具实现不同的项目策略集成到游戏项目里面。

 

跨平台机制:

Unity帮我们解决了跨平台游戏发布的问题,这样不用每个平台都写一次代码。一次开发,发布到多个平台,但是我们发布游戏的时候可能要集成SDK,所以他提供原生的开发机制出来,让我们直接基于Unity 生成 对应平台的项目,然后再用对应平台的工具去对接SDK,比如Unity通过IL2cpp生成xcode的项目,如果要对接iOS的SDK,直接基于xcode使用苹果应用开发的规则来对接就好了,引擎提供SDK的机制,但是具体对接什么SDK,一次对接多少SDK,使用SDK的哪些功能,它不管。

 

玩家输入设备:

游戏需要接收玩家的操作,游戏引擎要对接各种操作设备,键盘鼠标这种直接从操作系统接入就可以了,还有其它游戏手柄的设备, 提供输入的虚拟映射,来方便玩家来配置对应的操作。鼠标,键盘,触摸屏, 游戏手柄等都接入到了游戏引擎中。如果有特殊的设备,可以根据SDK直接来访问和对接。

 

提供第三方开发库的机制:

Unity 通过Package和插件的方式来提供开发库与插件给别人使用,这样别人只要导入插件就可以用对应的功能库了。同时Unity提供了商店机制,方便开发者把开放好的第三方库放商店里面给全球的开发者使用。

 

提供性能参数分析相关机制与工具:

Unity 提供profiler工具对游戏开发中的性能剖析是非常重要的,因为有些性能数据只有Unity引擎内部才有,Unity内部有很多重要的与性能相关的数据,都可以供开发者访问到,但是它提供的性能分析工具只展示了通用重要的数据,于是有一些性能分析工具根据不同的项目性能需求,显示出更细致的性能数据的插件,其实都是读取了Unity提供的性能数据。

 

还有其它的一些机制,我这边就不一一列举了,对于Unity引擎给开发者提供的是一些游戏开发中的常用的机制,而接下来我们要做的是用这些机制,结合我们的项目和团队定制出最适合我们开发游戏项目的策略,所以本质上来说我们做游戏框架其实是基于Unity机制来定制定制适合我们的一种开发策略。

 

Unity游戏框架需要定制哪些策略

 

根据游戏定制渲染管线+Shader策略:

这个是大型游戏项目中很重要的一个环节,它首先会涉及到游戏的渲染效果,涉及到游戏运行的性能。比如我们要做一个卡通风格的游戏《火影忍者》里面所有的角色都是卡通风格,那么我们做框架的第一件事情就是要实现卡通渲染着色Shader。

如果游戏不需要支持任意数目的光源,最多只有4个光源,但又需要实时光照计算,而不能用静态光照,又需要极致性能在手机上跑,我们可能就会定制渲染管线或换渲染管线,用定制渲染管线或URP轻量级渲染管线来代替传统的向前渲染管线。所以框架要做的第一件事情就是根据项目选着或开发适合项目的渲染管线与Shader。然后做项目技术验证,看看当前的渲染效果与性能能否满足要求,多平台手机端的差异是否被解决等。

 

选择合适的开发模式来定制开发策略:

我们用Unity做项目的时候搭建框架首先要考虑的就是开发模式,到底是使用传统的组件化开发模式还是使用ECS模式,还是组件化+游戏逻辑ECS的模式结合。这个根据自己的项目来选择合适的就可以了。ECS,数据都在一个Entity内,大量的数据用Trunk分配,避免内存碎片,提升访问数据的缓存命中,提升性能,System只有代码算法逻辑, 可以通过多线程来调度System获得更好的性能。组件化模式开发简单方便,符合大多数开发者的思维习惯,选一个合适自己项目和团队的方式就可以了。有些技术总监一上来就各种复杂的开发模式,其实要反思一下这样是否真的适合团队,复杂的东西不是每个团队的开发者都能驾驭好的。

 

选择合适团队与项目的开发规则

开发模式选好了后,就来制定开发中团队协作的一些规则,通过规则来限定不同的研发角色的一些工作方式,让大家统一,高效的协同作战。比如版本管理工具用git。所有的角色,特效,UI,地图场景都做成预制体,预制体不挂任何的逻辑代码。根据美术来分好项目资源目录结构,场景美术, UI美术, 特效美术, 角色美术与动作特效等, 这样就可以独立的工作最大限度的减少版本冲突等。这些策略确定好了都是为了多人更好的协同开发,减少冲突。

制定好规则,规定好哪些代码需要考虑重用,哪些代码不用考虑重用,很多开发者在写一些原本不用考虑代码重用的地方,花了很多心思,想了很多的设计模式来包装,其实有时候没有必要,提前制定好规则,不用考虑重用的地方不用花太多的心思精力在可复用上。这样能大大减少开发人员包袱,让逻辑代码更简单。

制定好代码模块的衔接规则,能方便的屏蔽代码,隔离错误,移除与重构质量不高的代码。

还有一些定制命名规范等规则,一些程序与策划沟通的规则,这些就不再展开描述了。

 

定制好基于版本管理与增量更新的资源管理策略:

资源管理对于游戏开发而言是非常重要的,在开发中控制游戏的内中占用涉及到资源的加载与释放,每次更新新的功能与游戏打空包都涉及到资源的增量下载与更新,Unity提供了3中机制来做资源加载Resources, AssetsBundle, Addressable, 由于要涉及打空包和资源更新一般资源管理都抛弃掉了Resources,大部分的项目都基于AssetsBundle或Addressable来做好资源管理,资源的版本管理,和基于版本的增量更新与断点续传。这些都是框架自己根据项目来定制策略。

定制好多平台自动化打包发布的策略:

当我们开发完游戏或者游戏在测试的时候经常需要做版本发布。做好自动化的打包与发布非常的重要,比如某个版本要做内测了,用git拉取一个分支出来,然后运行自动化打包脚本,生成对应平台的安装包提交内测。内测的时候测试报告如何写,需要测试哪些功能等都要做好规定,定制好对应的策略,稳定的项目都是通过优秀的管理与测试测出来的。

 

定制好特定项目的特定工具

很多特定的游戏需要开发一些工具来完成,如关卡编辑器, 行为决策树,路径烘培与地图生成工具等。这个时候我们就需要开发一些工具出来给美术,策划来使用,帮助他们和程序很好的配合,完成项目开发。

 

经过这些考虑,基本上一个游戏框架的雏形就出来了,一个组织游戏项目开发的流程与规范基本就定型了,这样项目也就基于这样的方式铺开来,进行快速的迭代开发。

 

这个群里有一些的Unity游戏主程框架进阶的一些课程,值得大家学习和交流。

标签:游戏,框架,渲染,项目,Unity,开发,机制,搭建
From: https://www.cnblogs.com/bycw/p/17784814.html

相关文章

  • Unity架构师必备开源框架:3天打造大厂商用框架
    现在Unity的相关技术已经都非常常熟了,如果你的技术能力与阅历够,搭建一个商用的游戏框架,你只需要3天的时间。今天给大家分享一个Unity老鸟3天能搭建一个自己的商用框架的几个必备的开源库,方便大家学习与使用,同时学习这些有前途的开源库也能让你在公司里面游刃有余。 对啦!这里有个......
  • Unity打造Timer定时器框架
    1:为什么我们要自己造轮子来做定时器系统传统的Unity做定时器的方式有三种,总结如下:对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发的技术大佬,欢迎你来交流学习。(1)在组件类里面定义一个变量,每次Update的时候,累积时间,当时间......
  • Unity基于状态机的架构与设计
    我们做游戏的时候经常会有流程控制,流程控制的方法有很多,行为决策树,状态机等。本质差别都不大,就是把每一段执行逻辑做成一个一个的节点,根据条件执行某个节点,切换到某个节点。今天给大家分享一下基于状态机来做游戏流程的控制。 1一个简单的状态机案例 我们先来拆解一个使用......
  • unity shader入门精要第六章原理总结
    前言开发中常常有一些画面表现上的需求,但苦于不会写Shader,没办法实现,现在特地来学习相关原理知识。UnityShader入门精要的第六章前的内容已经很详尽了,在此不做记录。但第六章中的基础光照模型比较常见,这部分内容在GAMES101中也有讲解,可见其重要性,在此记录一下。标准光照模型(Bli......
  • 分布式定时任务-利用分布式定时任务框架xxl-job实现任务动态发布
     1.场景:项目前期使用k8s部署的单节点,后期生产需要将单节点的服务扩展多个节点,每个节点的定时任务使用的quartz实现,如果不加限制且定时任务有对数据库的写操作,在不同节点上执行的定时任务容易造成数据库产生脏数据,所以需要分布式任务框架对任务进行控制,这里我们使用xxl-job实现。......
  • 循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(1)
    在我们的SqlSugar的开发框架中,整合了Winform端、Vue3+ElementPlus的前端、以及基于UniApp+Vue+ThorUI的移动前端几个前端处理,基本上覆盖了我们日常的应用模式了,本篇随笔进一步介绍前端应用的领域,研究集成WPF的应用端,循序渐进介绍基于CommunityToolkit.Mvvm和HandyControl的WPF应用......
  • 10月26日16:00直播|如何将BIM+GIS快速融合搭建三维数字沙盘?
    BIM技术与GIS融合是一种可以实现四维建筑信息模型的有效方法。它将建筑模型的三维可视性与空间位置、地形、街道、交通等空间背景相结合,提供全面的物理属性与功能性信息,并从多个维度对四维建筑信息模型进行深度分析和评估,为建筑信息化管理提供技术支持。​那么该如何将BIM+GIS快......
  • 从零用VitePress搭建博客教程(7) -– 如何用Github Actions自动化部署到Github Pages?
    接上一节:从零用VitePress搭建博客教程(6)-–第三方组件库的使用和VitePress搭建组件库文档 我们搭建完成vitePress后,那么接下来就是如何部署到线上服务器,这里使用GithubPages,免得自己购买服务器,当然你也可以自己购买服务器来部署(比如阿里云服务器)。在部署之前,我们先简单了解......
  • 【不限框架】超好用的3d开源图片预览插件推荐
    今天给大家推荐一款超好用的图片预览插件-image-preview简单说明image-preview是一款主要面向移动端web应用,同时兼容pc,基于原生js,不限框架,react,vue,angular都可以使用,使用webgl作为渲染界面,提供高性能,优质体验的图片预览插件。图片浏览大图时提供了细腻的交互体验,针对移动端......
  • Unity中国、Cocos为OpenHarmony游戏生态插上腾飞的翅膀
    Unity中国、Cocos为OpenHarmony游戏生态插上腾飞的翅膀2023年是OpenHarmony游戏生态百花齐放的一年!为了扩展OpenHarmony游戏生态,OpenHarmony在基金会成立了游戏SIG小组,游戏SIG小组联合cocos,从cocos2dx入手一周内快速适配了cocos2.2.6的MVP版本,随后又分别适配了cocos2dx 3.x、4.x版......