《Unity 3D游戏客户端基础框架》概述

框架概述:

做了那么久的业务开发,也做了一年多的核心战斗开发,最近想着自己倒腾一套游戏框架,当然暂不涉及核心玩法类型和战斗框架,核心战斗的设计要根据具体的游戏类型而定制,这里只是一些通用的基础系统的框架搭建,其中包括:

  • UI框架(NGUI + MVC
  • 消息管理(Advanced CSharp Messenger
  • 网络层框架(Socket + Protobuf
  • 表格数据(Protobuf
  • 资源管理(Unity 5.xAssetBundle 方案)
  • 热更框架(tolua

这里使用的引擎版本是:Unity 5.5.0f3

UI框架:

使用 Unity 5.x 进行游戏开发的朋友,估计大都想过用系统自带的 UGUI 来搭建UI框架,这并没有什么不好的,只是对于引擎升级并不友好,假如Unity升级对 UGUI 做了比较大的修改,那么对一个成型的项目进行引擎的升级,修改成本是不可估量的,所以这里我还是选用 NGUI 作为搭建UI框架的工具,除了结合 MVC 架构还要考虑后期接入热更新。

消息管理:

这里我们使用 Advanced CSharp Messenger 这种C#事件实现的消息管理器,特点就是可以将游戏对象作为参数发送。而且,这个先进的c#版本的消息传递系统会自动清理事件表在一个新的水平加载,这将防止程序员意外调用销毁方法,从而有助于防止许多 MissingReferenceExceptions这个消息传递系统是基于杆海德 CSharpMessenger 和马格努斯Wolffelt CSharpMessenger扩展。

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

网络层框架:

随着移动网络的升级,在4G网络早已普及的今天,除了单机游戏,现在绝大多数的网游都是以强联网的方式实现的,选用 Socket 通信可以实时地更新玩家状态,选定了联网方式之后,还需要考虑网络协议定制的问题,Protobuf 无疑也是个比较好的选择,一方面是跨平台特性好,另一方面是数据量小可以节省通信成本。

《Unity 3D游戏客户端基础框架》多线程异步 Socket 框架构建
《Unity 3D游戏客户端基础框架》 protobuf网络框架

表格数据:

在游戏开发中,有很多数据是不需要通过网络层从服务器拉取下来的,而是通过表格配置的格式存储在本地,例如:游戏中的一个道具,通常服务器之下发该道具的 Id (唯一标识)和 lv(等级),然后客户端从本地数据中检索到该道具的具体属性值。通常使用 Excel 表格来配置数据,但我们一般不会直接将 .xlsx 格式的表格原文件打包到游戏应用包中,通常会通过工具序列化为二进制文件的格式,读取数据的时候再进行反序列化。上面我们提到了使用 Protobuf 定制网络协议,但是其实 Protobuf 的序列化和反序列化特性可以满足我们对于表格数据转化的需求。

《Unity 3D游戏客户端基础框架》protobuf 导excel表格数据

资源管理:

对于资源的管理,其实是为了给后面接入热更新提供可能,Unity制作游戏的资源管理方式就通过 AssetBundle 工具将资源打成多个 ab 包,对于可热更新的资源进行热更的时候,并非单文件的热更,而是通过网络下载新的 ab 包来替换本地旧的包,从而实现热更的目的。

热更新框架:

通常使用C#来进行Unity的开发,但纯C#脚本只能支持Android系统下的热更新,而对于iPhone系统则无能为力,所以这里通常需要引入一门脚本语言 lua ,使用C#编写底层框架,使用lua编写业务逻辑,这是业内最常见的设计方式,还有一个非常成熟的热更新框架 tolua (前称 ulua)。通常可热更新的有:图片资源、UI预制和lua脚本,而出于跨平台的考虑,C#脚本是不允许进行热更的。


小结:

上面只是大致说了一遍整个框架会涉及到的工具和技术点,下面我会对每个点进行逐篇细化,有兴趣的可以继续关注下,当然可以根据这些建议自己自学,那样也可能会快很多。

相关推荐
<p> 1、本课程是一个干货课程,主要讲解如何封装服务器底层,使用Tcp/ip长连接,IDE使用vs2019 c++开发以及使用c++11的一些标准,跨平台windows和linux,服务器性能高效,单服务器压力测试上万无压力,服务器框架是经历过上线产品的验证,框架简单明了,不熟悉底层封装的人,半个小时就能完全掌握服务器框架上手写业务逻辑。 </p> <p> 2、本课程是一个底层服务器框架教程,主要是教会学员在windows或linux下如何封装一个高效的,避免踩坑的商业级框架,服务器底层使用初始化即开辟内存的技术,使用内存池,服务器运行期间内存不会溢出,非常稳定,同时服务器使用自定义哈希hashContainer,在处理新的连接,新的数据,新的封包,以及解包,发包,粘包的过程,哈希容器性能非常高效,增、删、查、改永远不会随着连接人数的上升而降低性能,增、删、查、改的复杂度永远都是恒定的O(1)。 </p> <p> 3、服务器底层封装没有使用任何第三方网络库以及任何第三方插件,自由度非常的高,出了任何BUG,你都有办法去修改,查找问题也非常方便,在windows下使用iocp,linux下使用epoll. </p> <p> 4、讲解c++纯客户端,主要用于服务器之间通信,也就是说你想搭建多层结构的服务器,服务器与服务器之间使用socket通信。还可以使用c++客户端做压力测试,开辟多线程连接服务器,教程提供了压力测试,学员可以自己做压力测试服务器性能。 </p> <p> 5、赠送ue4和unity3d通信底层框架以及多人交互demo,登录,注册,玩家离开,同步主要是教会学员服务器与客户端如何交互。 </p> <p> 6、赠送c++连接mysql数据库框架demo,登录,注册,玩家离开数据持久化. </p> <p> 7、服务器教程使用自定义通信协议,同时也支持protobuf,选择权在开发者自己手里,想用什么协议都可以,自由度高。 </p> <p> 8、服务器教程使用手动敲代码逐句讲解的方式开展教学课程。非喜勿喷,谢谢大家。 </p> <p> 9、服务器教程提供源码,大家可以在平台提供的地址下载或者联系我,服务器使用c++11部分标准,std::thread,条件变量,线程锁,智能指针等,需要学员具备一定c++知识,购买前请慎重考虑。 </p> <p> <br /> </p> <p> <br /> </p> <p> <br /> </p> <p> <br /> </p> <p> <br /> </p> <p> <br /> </p>
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页