GameFramework框架 (一) 框架简介

资源链接

官方地址:https://gameframework.cn/
github地址:https://github.com/EllanJiang/GameFramework/

UGF地址:https://github.com/EllanJiang/UnityGameFramework
码云地址:https://gitee.com/jiangyin
官方案例StarForce:https://github.com/EllanJiang/StarForce
官方教程:https://gameframework.cn/tutorial/list/

框架介绍

官方的框架介绍:https://gameframework.cn/document/

Game Framework 是一个基于 Unity 引擎的游戏框架,主要对游戏开发过程中常用模块进行了封装,很大程度地规范开发过程、加快开发速度并保证产品质量。适用于所有 Unity 5.3.0 及以上的版本,在最新的 Game Framework 版本中,包含 19 个内置模块:

基础和工具 (Base)  – 关于日志、引用池、工具集的文档。
全局配置 (Config)   – 存储一些全局的只读的游戏配置,如玩家初始速度、游戏初始音量等。
数据结点 (Data Node)  – 将任意类型的数据以树状结构的形式进行保存,用于管理游戏运行时的各种数据。
数据表 (Data Table) – 可以将游戏数据以表格(如 Microsoft Excel)的形式进行配置后,使用此模块使用这些数据表。数据表的格式是可以自定义的。
调试器 (Debugger) – 当游戏在 Unity 编辑器中运行或者以 Development 方式发布运行时,将出现调试器窗口,便于查看运行时日志、调试信息等。用户还可以方便地将自己的功能注册到调试器窗口上并使用。
下载 (Download) – 提供下载文件的功能,支持断点续传,并可指定允许几个下载器进行同时下载。更新资源时会主动调用此模块。
实体 (Entity) – 我们将游戏场景中,动态创建的一切物体定义为实体。此模块提供管理实体和实体组的功能,如显示隐藏实体、挂接实体(如挂接武器、坐骑,或者抓起另一个实体)等。实体使用结束后可以不立刻销毁,从而等待下一次重新使用。
事件 (Event) – 游戏逻辑监听、抛出事件的机制。Game Framework 中的很多模块在完成操作后都会抛出内置事件,监听这些事件将大大解除游戏逻辑之间的耦合。用户也可以定义自己的游戏逻辑事件。
文件系统 (File System) – 虚拟文件系统使用类似磁盘的概念对零散文件进行集中管理,优化资源加载时产生的内存分配,甚至可以对资源进行局部片段加载,这些都将极大提升资源加载时的性能。
有限状态机 (FSM) – 提供创建、使用和销毁有限状态机的功能,一些适用于有限状态机机制的游戏逻辑,使用此模块将是一个不错的选择。
本地化 (Localization) – 提供本地化功能,也就是我们平时所说的多语言。Game Framework 在本地化方面,不但支持文本的本地化,还支持任意资源的本地化,比如游戏中释放烟花特效也可以做出几个多国语言的版本,使得中文版里是“新年好”字样的特效,而英文版里是“Happy New Year”字样的特效。
网络 (Network) – 提供使用 Socket 长连接的功能,当前我们支持 TCP 协议,同时兼容 IPv4 和 IPv6 两个版本。用户可以同时建立多个连接与多个服务器同时进行通信,比如除了连接常规的游戏服务器,还可以连接语音聊天服务器。如果想接入 ProtoBuf 之类的协议库,只要派生自 Packet 类并实现自己的消息包类即可使用。
对象池 (Object Pool) – 提供对象缓存池的功能,避免频繁地创建和销毁各种游戏对象,提高游戏性能。除了 Game Framework 自身使用了对象池,用户还可以很方便地创建和管理自己的对象池。
流程 (Procedure) – 是贯穿游戏运行时整个生命周期的有限状态机。通过流程,将不同的游戏状态进行解耦将是一个非常好的习惯。对于网络游戏,你可能需要如检查资源流程、更新资源流程、检查服务器列表流程、选择服务器流程、登录服务器流程、创建角色流程等流程,而对于单机游戏,你可能需要在游戏选择菜单流程和游戏实际玩法流程之间做切换。如果想增加流程,只要派生自 ProcedureBase 类并实现自己的流程类即可使用。
资源 (Resource)– 为了保证玩家的体验,我们不推荐再使用同步的方式加载资源,由于 Game Framework 自身使用了一套完整的异步加载资源体系,因此只提供了异步加载资源的接口。不论简单的数据表、本地化字典,还是复杂的实体、场景、界面,我们都将使用异步加载。同时,Game Framework 提供了默认的内存管理策略(当然,你也可以定义自己的内存管理策略)。多数情况下,在使用 GameObject 的过程中,你甚至可以不需要自行进行 Instantiate 或者是 Destroy 操作。
场景 (Scene) – 提供场景管理的功能,可以同时加载多个场景,也可以随时卸载任何一个场景,从而很容易地实现场景的分部加载。
游戏配置 (Setting) – 以键值对的形式存储玩家数据,对 UnityEngine.PlayerPrefs 进行封装,也可以将这些数据直接存储在磁盘上。
声音 (Sound)– 提供管理声音和声音组的功能,用户可以自定义一个声音的音量、是 2D 声音还是 3D 声音,甚至是直接绑定到某个实体上跟随实体移动。
界面 (UI) – 提供管理界面和界面组的功能,如显示隐藏界面、激活界面、改变界面层级等。不论是 Unity 内置的 uGUI 还是其它类型的 UI 插件(如 NGUI),只要派生自 UIFormLogic 类并实现自己的界面类即可使用。界面使用结束后可以不立刻销毁,从而等待下一次重新使用。
Web 请求 (Web Request)– 提供使用短连接的功能,可以用 Get 或者 Post 方法向服务器发送请求并获取响应数据,可指定允许几个 Web 请求器进行同时请求。
 

官方案例下载和源码替换

1. 下载StarForce官方案例 ,用Unity打开工程,地址:https://github.com/EllanJiang/StarForce

打开启动工程, StarForceLauncher, 发现报了一堆错误,解决方法:

1. 下载GF源码库,复制GameFramework文件夹下的所有文件夹(除了.csproj)到unity工程的GameFramework文件夹下:地址

2. 下载UGF源码库:复制UnityGameFramework-master 到unity的Assets目录下 地址

3. 在GameFramewoork文件夹下创建 程序集 GameFramework并勾选 unsafe

4. 删掉 UnityGameFramework-master/Libraries 下面的 GameFramework.dll文件和.xml文件

5. 给UnityGameFramework.Editor 和  UnityGameFramework.Runtime上添加 GameFramework引用

 

所有报错应该都消失了,可以成功启动场景了

 

下一篇,学习 GameEntry,敬请期待,如有错误或不解的地方,还请留言,谢谢!

  • 7
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
GameFramework是一个用于游戏开发的框架。它提供了一个完整的游戏开发流程,包括游戏设计、编程、资源管理、场景管理、消息处理、资源加载、网络通信等方面的功能和模块。 首先,GameFramework提供了游戏设计方面的支持。它定义了游戏的基本组成部分,如场景、角色、道具等,并提供了相应的类和接口来方便开发者进行游戏设计。 其次,GameFramework具备强大的编程支持。它包括了一系列的工具和类库,用于处理游戏逻辑,实现游戏的功能和特性。开发者可以通过编程来实现游戏中的动画效果、碰撞检测、物理模拟等。 GameFramework还提供了资源管理和加载的功能。开发者可以通过它来管理游戏中的资源文件,包括图片、音频、视频等,同时它也提供了快速的资源加载方式,提高游戏的性能和用户体验。 此外,GameFramework还包含了场景管理和消息处理的功能。它可以管理游戏中的不同场景,方便游戏的切换和管理。同时,它还能处理游戏中的消息通信,让不同的游戏对象之间进行交互和通信。 最后,GameFramework还具备网络通信的能力。开发者可以使用它来实现网络游戏中的客户端和服务器的通信,包括数据传输、消息处理等。 总的来说,GameFramework是一个功能完备的游戏开发框架,它为开发者提供了全面的游戏开发支持,使得游戏开发变得更加高效和简单。无论是个人独立开发者还是大型游戏公司,都可以利用GameFramework来开发出优秀的游戏作品。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值