《Unity 3D游戏客户端基础框架》系统设计

引言

最近到看一个 《贪吃蛇大战开发实例》,其中 贪吃蛇大作战游戏开发实战(3):系统构架设计 提供的系统架构的设计思路我觉得还是值得学习一下的,接下来的内容是我看完视频后的一点笔记。

架构设计原则:

1.系统分层:

根据功能特性,可以大致将整个系统分为:

  • 视图层(游戏输入、战斗 View、业务 UI):视图层也可以遵循 Mvc 的思路来做进一步分层;
  • 业务层(核心玩法、业务模块);
  • 服务层(模块管理、UI 管理、用户管理、资源管理、配置管理、网络管理、支付管理、分享管理);
  • UI 控件;
  • 基础类库(储存管理、调试器、数学库、网络库、单例、Monobehaviour能力)。

上面的分层是根据游戏具体逻辑来划分的,这些层级之间也并非完全独立,存在依赖关系,为了服务于视图层,通常会把一些常用的 UI 试图进行控件化,也就是会多出一 UI控件层,而且整个系统也需要使用到很多基础类库,所以也就有了基础类库层。

2.单向依赖:

只要有两点要求:

  • 不同层级之间的模块是单向依赖的;
  • 仅允许上层模块依赖下层模块。

也就是说,上层模块可以之间访问下层模块的属性,而下层模块不能直接访问上层模块,下层模块的变化通过 消息/事件 通知上层模块,上层模块通过监听这些 消息/事件 来及时获取下层的属性变化。

3.模块解耦:

各个业务层模块之间,不直接访问彼此的代码,这样可以达到编译不依赖,实现静态解耦,那么他们要通过什么方式进行通信呢?

最常用的做法:业务层模块之间通过【事件】与【消息】的方式通讯。

具体实现方式:模块 A 需要调用模块 B 的逻辑时,会广播一条特殊的 消息/事件,而模块 B 的监听此 消息/事件,当收到 消息/事件 时执行指定的逻辑。

这里的 消息事件 都是不依赖于发起者的抽象类型,通常使用一个抽象消息管理类来管理,经常使用字符串常量来表示不同的消息类型。

4.全局事件:

这种方式适用的情景:

  • 有些事件并非从固定模块发出(可能会有多个模块都会发出此类事件);
  • 有些事件模块影响全局逻辑。

可以在多个模块中监听同一个事件,当事件在某个模块发生,则广播一个全局的事件,此时所有监听了此事件的模块都会触发相应的操作。

缺点:使用全局事件会使得代码的阅读性下降,因为当一个事件有多个触发源时,当事件触发时我们无法准确地定位事件是从何处触发的。(也可以通过日志记录来索引事件源头)

5.模块独立:

主要适用于服务层模块的设计,核心思想就是将两个服务模块必须有的公共逻辑抽象出来,放在基础类库中。

6.代码重用:

将可以重复使用的代码,在系统层级上做一些小整合,例如:

  • 业务层公共逻辑 –> 服务层
  • 服务层公共逻辑 –> 基础类库
  • 视图层公共逻辑 –> UI 控件

6.设计模式:

善用一些设计模式,可以让代码更加高效,这里列举一些游戏开发中常用的设计模式及其适用的场合:

设计模式应用场合
观察者模式业务层之间通讯、上层与下层通讯、客户端与服务器通讯
命令模式业务层之间通讯
单例模式服务层为上层提供功能
MVC 模式视图层与业务层通讯
工厂模式视图层实例的创建、核心玩法中角色的创建、特效的创建管理
已标记关键词 清除标记
<p> <strong>本课程总体分为五大部分:</strong><br /> <br /> <span style="color:#424242;">一: MVC基本设计理念</span><br /> <span style="color:#424242;">    首先讲解游戏(包含VR、AR)与软件项目为什么需要有架构与框架的理念。然后讲解游戏引擎、服务端与客户端框架的区分,且梳理分析国内目前主流的游戏客户端架构模式以及优缺点分析。以及PureMVC与StrangeIOC两种MVC开源架构的总体技术刨析。</span><br /> <br /> <span style="color:#424242;">二:PureMVC开源框架插件下载与搭建基础环境。</span><br /> <span style="color:#424242;">    笔者以开发一个简单的“Hello World”为例,详细讲解PureMVC基础的概念,与框架搭建过程,让学员以较快的时间,学会PureMVC框架基础理念与应用技巧。</span><br /> <br /> <span style="color:#424242;">三:PureMVC架构设计理念。</span><br /> <span style="color:#424242;">    基于前面简单版本的开发过程,初步刨析PureMVC架构以“Mediator+事件通知机制”总体设计理念。讲解什么是中介者设计模式(Mediator Pattern),以及事件机制在PureMVC中的基础作用。**分析PureMVC架构基本的开发流程,以及两种不同类型的消息机制。</span><br /> <br /> <span style="color:#424242;">四:开发一款游戏项目(Flappy Birds),集成PureMVC+SUIFW(此框架课程均以发布)两种框架模式,讲解在具体开发一款游戏产品时,如何分析、把握框架游戏脚本之间的关联关系,如果发挥PureMVC彻底解耦的开发理念。</span><br /> <br /> <span style="color:#424242;">五:基于前面游戏项目的开发,进一步刨析PureMVC架构的高级开发技巧:</span><br /> <span style="color:#424242;">    1:PureMVC框架类与脚本之间的相互通讯机理。</span><br /> <span style="color:#424242;">    2:基于PureMVC框架原理,实现游戏项目模型与脚本的彻底分离技术,真正实现美工与研发的同步开发 与无缝对接技术。</span><br /> <span style="color:#424242;">    3:掌握命令层(即:控制层)中SimpleCommand 与MacroCommand 的区别与具体开发应用技巧。</span> </p> <p> <span style="color:#424242;"><!--StartFragment --></span> </p> <div> 一、热更新系列(技术含量:中高级):<br /> A:《lua热更新技术中级篇》<br /> <img src="file://C:/Users/17849/AppData/Roaming/Tencent/QiDian/Temp/%25W@GJ$ACOF(TYDYECOKVDYB.png" />https://edu.csdn.net/course/detail/27087<br /> B:《热更新框架设计之Xlua基础视频课程》<br /> <img src="file://C:/Users/17849/AppData/Roaming/Tencent/QiDian/Temp/%25W@GJ$ACOF(TYDYECOKVDYB.png" />https://edu.csdn.net/course/detail/27110<br /> C:《热更新框架设计之热更流程与热补丁技术》<br /> <img src="file://C:/Users/17849/AppData/Roaming/Tencent/QiDian/Temp/%25W@GJ$ACOF(TYDYECOKVDYB.png" />https://edu.csdn.net/course/detail/27118<br /> D:《热更新框架设计之客户端热更框架(上)》<br /> <img src="file://C:/Users/17849/AppData/Roaming/Tencent/QiDian/Temp/%25W@GJ$ACOF(TYDYECOKVDYB.png" />https://edu.csdn.net/course/detail/27132<br /> E:《热更新框架设计之客户端热更框架(中)》<br /> <img src="file://C:/Users/17849/AppData/Roaming/Tencent/QiDian/Temp/%25W@GJ$ACOF(TYDYECOKVDYB.png" />https://edu.csdn.net/course/detail/27135<br /> F:《热更新框架设计之客户端热更框架(下)》<br /> <img src="file://C:/Users/17849/AppData/Roaming/Tencent/QiDian/Temp/%25W@GJ$ACOF(TYDYECOKVDYB.png" />https://edu.csdn.net/course/detail/27136<br /> 二:框架设计系列(技术含量:中级):<br />  A:《游戏UI界面框架设计系列视频课程》<br /> <img src="file://C:/Users/17849/AppData/Roaming/Tencent/QiDian/Temp/%25W@GJ$ACOF(TYDYECOKVDYB.png" />https://edu.csdn.net/course/detail/27142<br /> B:《Unity客户端框架设计PureMVC篇视频课程(上)》<br /> <img src="file://C:/Users/17849/AppData/Roaming/Tencent/QiDian/Temp/%25W@GJ$ACOF(TYDYECOKVDYB.png" />https://edu.csdn.net/course/detail/27172<br /> C:《Unity客户端框架设计PureMVC篇视频课程(下)》<br /> <img src="file://C:/Users/17849/AppData/Roaming/Tencent/QiDian/Temp/%25W@GJ$ACOF(TYDYECOKVDYB.png" />https://edu.csdn.net/course/detail/27173<br /> D:《AssetBundle框架设计_框架篇视频课程》<br /> <img src="file://C:/Users/17849/AppData/Roaming/Tencent/QiDian/Temp/%25W@GJ$ACOF(TYDYECOKVDYB.png" />https://edu.csdn.net/course/detail/27169<br /> 三、Unity脚本从入门到精通(技术含量:初级)<br /> A:《C# For Unity系列之入门篇》<br /> <img src="file://C:/Users/17849/AppData/Roaming/Tencent/QiDian/Temp/%25W@GJ$ACOF(TYDYECOKVDYB.png" />https://edu.csdn.net/course/detail/4560<br /> B:《C# For Unity系列之基础篇》<br /> <img src="file://C:/Users/17849/AppData/Roaming/Tencent/QiDian/Temp/%25W@GJ$ACOF(TYDYECOKVDYB.png" />https://edu.csdn.net/course/detail/4595<br /> C: 《C# For Unity系列之中级篇》<br /> <img src="file://C:/Users/17849/AppData/Roaming/Tencent/QiDian/Temp/%25W@GJ$ACOF(TYDYECOKVDYB.png" />https://edu.csdn.net/course/detail/24422<br /> D:《C# For Unity系列之进阶篇》<br /> <img src="file://C:/Users/17849/AppData/Roaming/Tencent/QiDian/Temp/%25W@GJ$ACOF(TYDYECOKVDYB.png" />https://edu.csdn.net/course/detail/24465<br /> 四、虚拟现实(VR)与增强现实(AR):(技术含量:初级)<br /> A:《虚拟现实之汽车仿真模拟系统 》<br /> <img src="file://C:/Users/17849/AppData/Roaming/Tencent/QiDian/Temp/%25W@GJ$ACOF(TYDYECOKVDYB.png" />https://edu.csdn.net/course/detail/26618<br /> 五、Unity基础课程系列(技术含量:初级)<br />  A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》<br />  <img src="file://C:/Users/17849/AppData/Roaming/Tencent/QiDian/Temp/%25W@GJ$ACOF(TYDYECOKVDYB.png" />https://edu.csdn.net/course/detail/24643<br /> B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》<br /> <img src="file://C:/Users/17849/AppData/Roaming/Tencent/QiDian/Temp/%25W@GJ$ACOF(TYDYECOKVDYB.png" />https://edu.csdn.net/course/detail/24645<br />  C:《Unity ECS(二) 小试牛刀》<br /> <img src="file://C:/Users/17849/AppData/Roaming/Tencent/QiDian/Temp/%25W@GJ$ACOF(TYDYECOKVDYB.png" />https://edu.csdn.net/course/detail/27096<br /> 六、Unity ARPG课程(技术含量:初中级):<br /> A:《MMOARPG地下守护神_单机版实战视频课程(上部)》<br /> <img src="file://C:/Users/17849/AppData/Roaming/Tencent/QiDian/Temp/%25W@GJ$ACOF(TYDYECOKVDYB.png" />https://edu.csdn.net/course/detail/24965<br /> B:《MMOARPG地下守护神_单机版实战视频课程(中部)》<br /> <img src="file://C:/Users/17849/AppData/Roaming/Tencent/QiDian/Temp/%25W@GJ$ACOF(TYDYECOKVDYB.png" />https://edu.csdn.net/course/detail/24968<br /> C:《MMOARPG地下守护神_单机版实战视频课程(下部)》<br /> <img src="file://C:/Users/17849/AppData/Roaming/Tencent/QiDian/Temp/%25W@GJ$ACOF(TYDYECOKVDYB.png" />https://edu.csdn.net/course/detail/24979<br /> </div> <br /> <p> <br /> </p>
相关推荐
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页