the Smart Game Foundation
QQ
它主
- SGFCore:
与 Unity无关的 功 能 模 块。 - SGFUnity:
与 Unity相 关的功 能 模 块。 - SGFDebuger:一个日志输出工具。
其余
- ILRuntime:
一 个ILRuntime的 第 3方 库。由 于官方 不 推荐以DLL的 形式 用 于项目 中 ,所以 该工程 将 不 再 维护。 - SGFServerLite:一个服务器的示例。
- SGFAppCommon/SGFAppILRScript/SGFAppDemo:一个客户端的综合演示示例,它
包括 与 服 务器通 讯,热更新 等 等 逻辑。
其余
- Libs:
以上 工程 编译好 的 Dll,如果不 需要 修 改代 码的话,你可以直接 使用 这些Dll。 - Apps:
以上 示 例 编译好 的 Exe,你可以尝试运行 一 下 ,可能 在 不同 的 机 器 上 运行会 有 问题,你最好 直接 打 开对应的示 例 工程 来 调试运行。
其它:
- SGF库发
源 于我的 一 个GAD课程项目:《贪吃蛇 大作 战》 - 其相关的视频链接为:
收集 或 者 实现一些常用编解码库,或 者 对一些编解码库进行易用性封装。- MiniJson,一个常用的轻量Json编解码库(Copyright (c) 2013 Calvin Rien)
- PBSerializer,对Protobuf
的 封 装 ,使 之 在 一般场合下非常易用。 - SGFEncoding,一些自己实现的编解码相关算法,
比 如:- XOR
- CheckSum
- BytesToHex,HexToBytes
等 等
将来 可能 放 一些数据结构相关的类,或 者 易 用 性 封 装 。- DictionarySafe,
是 对Dictionary做一个易用性封装。 - MapList,
是 将 List与 Dictionary结合起 来 做一个易用性封装。
- DictionarySafe,
控 制 台 相 关的功 能 。- ConsoleInput:
使 控 制 台 应用程 序 可 以接受命 令 行 输入。
- ConsoleInput:
事件 系 统。- 它的
思 路 与 系 统自带的Action类似,但 是 在 性能 与 逻辑上 比 原生 的 Action更 加 可 控 ,并且能 够以日 志 的 方式 进行追 踪和调试。 - 这在实际应用
中 非常 有用 。
- 轻量级几
何 库。 考 虑到很多时候需要 脱 离Unity进行开发,所以 需要 一 套脱离Unity的 几何类库。这里部分 移植 了 geometry3Sharp里 的 一 些基础类:- Vector2/Vector3/Vector4
- Matrix3
- Quaternion
- MathUtil
- IndexTypes
- 进程
通 讯模块。 - 它基于UdpSocket实现,以RPC
的 方式 进行调用。由 于是基 于Udp的 简单实现,所以 对单次 通 讯的数 据 大小 有 要求 ,不能 超 过当前 系 统的MTU。- 如果
需要 在 进程间进行 大数 据 通 讯,可 以使用 Network模 块,建立 可 靠 UDP连接,或 者 TCP连接。当然 也可以采用 共 享 内 存 和 管 道 方案 ,期待 后 续有人 来 完 善 。
提供 非 托 管 相 关的功 能 模 块利用 它可以避开C#的 内 存 管理 ,自己 控 制 内 存 的 分配 和 释放,避免GC- MarshalArray:
参照 托 管 Array来 封 装 ,使用 方法 上 基本 与 Array相 同 - MarshalList:
参照 托 管 List来 封 装 ,使用 方法 上 基本 与 List相 同
- MarshalArray:
- 计划实现一套轻量级的数学库。
目前 只 有 随 机 数 生成 算法 。
模 块管理 器 。当 项目的 规模足 够大时,就需要 将 整 个系统划分 为若干 个模块。这些模 块需要 一套系统进行管理。- 它具备很
好 的 扩展性 ,结合ILRuntime可 以实现iOS版本 中 模 块级别的热更新 。 - 它实现了
模 块间的 消息通 讯,并以此来解 耦。
- 网络
模 块。 - 它实现了
与 网络通 讯相关的绝大部分 功 能 。- Core,这里实现
了 一 些数据 、协议头、消息 格式 等 的 定 义。还有一 个轻量的 RPC实现方案 。 - FSPLite,实现
了 一 个轻量 级的【帧同步 】通 讯方案 的 前 台 与 后 台 模 块。使用 它,你可以很快 搭建出 一个帧同步运行环境,包括 帧同步 服 务器和 客 户端。 - General,实现
了 一 个【通用 】的 网络通 讯方案 的 前 台 与 后 台 模 块。使用 它,你可以很容易 实现游 戏的状 态同步 ,包括 服 务器和 客 户端。
- Core,这里实现
服 务器模 块管理 器 。在 服 务器开发中 ,当 项目规范足 够大时,也需要 像 客 户端一样将整个系统划分为若干模块。这些模 块需要 进行管理 。目前 该功能 还比较简单,需要 进一 步 完 善 。
与 时间相 关的类。- SGFTime,类似Unity
里 的 Time类。需要 在 App启动时,进行初 始 化 。
- SGFTime,类似Unity
一 些工具 类。- FileUtils,
文 件 相 关功能 。 - PathUtils,
路 径 相 关功能 。 - TimeUtils,时间
相 关功能 。 等 等
- FileUtils,
- 一个可扩展的运行时调试和测试工具GUI。
可 以很方便 地 在 其上扩展自己 的 工具 页签。
- 热
更新 相 关的功 能 模 块。- DebugerILR,为热
更 模 块提供 日 志 输出功 能 。 - ModuleILR,
支持 模 块级别的热更。 - UIILR,
支持 UI系 统调用 热更模 块。
- DebugerILR,为热
本 热更方案 可 以实现在开发时,采 用 原生 C#模 式 进行开发和 单步调试。在 发布时,无逢切 换为热更模 式 。整 个过程 对于开发者 是 无感知的 。
用 于热更新 的 运行时库。因 为需要 支持 IL2CPP的 缘故,将 直接 使用 其源代 码,而非DLL。- 于是,如果
需要 使用 ILRuntime,你需要 将 SGFUnity这个库的源 代 码直接 Copy到 Unity工程 中 。
- 如果
将 SGFUnity以源代 码的形式 Copy到 Unity工程 中 ,那 么它们有可能 与 Unity新 版本 自 带的库重复,如果这样的 话,可 以将其删除 。
- UI
系 统。 - 这是
一 个基于UGUI的 UI管理 系 统,封 装 了 游 戏开发中常用 的 几种UI元素 。并且将 这些元素 分 为2类,UIPage和 UIPanel:页面。游 戏的基 础UI就是Page,它是全 屏 的 。所有 的 游 戏Panel都 是 显示在 一 个页面 上 的 。 - 而UIPanel
又 可 以分为以下 几类:- UIWindow,
游 戏中的 窗 口 。 - UILoading,
游 戏中的 Loading。 - UIWidget,
游 戏中依 附 于窗口 的 一 些小UI,或 者 会 自 动消失 的 小 UI。
- UIWindow,
- 顺便
封 装 了 一 些常用 的 通用 UI面 板 和 控 件 。- UIMsgBox,继承
自 UIWindow。 - UIMsgTips,继承
自 UIWidget。 - UISimpleLoading,继承
自 UILoading。 - CtlList/CtlListItem
- CtlProgressBar
等 等
- UIMsgBox,继承
一 些工具 类。
- 一个日志工具类。
支持 在 非 Unity环境和 Unity环境下 都 能 输出格式 化 日 志 。- 并且
支持 日 志 保存 为文件 。