Update README

Update README
This commit is contained in:
ALEXTANGXIAO
2023-08-06 00:36:29 +08:00
parent 2107282368
commit efe3d2b25b
4 changed files with 54 additions and 6 deletions

View File

@@ -48,6 +48,23 @@ public abstract class GameFrameworkModuleBase : MonoBehaviour
} }
``` ```
## 热更域程序集设计与说明
```
Assets/GameScripts
├── Editor 编辑器程序集
├── HotFix 游戏热更程序集目录 [Folder]
| ├── GameBase 游戏基础框架程序集 [Dll]
| ├── GameProto 游戏配置协议程序集 [Dll]
| ├── BattleCore 游戏核心战斗程序集 [Dll]
| └── GameLogic 游戏业务逻辑程序集 [Dll]
| ├── GameApp.cs 热更主入口
| └── GameApp_RegisterSystem.cs 热更主入口注册系统
└── Runtime Runtime程序集
```
游戏内主要玩法逻辑包括UI会在GameLogic中编写GameBase则存放一些通用性的逻辑GameProto存放与服务区交互的协议以及配置表逻辑BattleCore为帧同步分离的逻辑层做预留。若有项目需求完全可以进行自定义增删HotFix程序集。
PS注意增删程序集后需要同步到HybridClr的Setting面板以及TEngineSetting的面板。
## 常用模块接口 ## 常用模块接口
<strong>[3-1-资源模块](./3-1-资源模块.md)<strong> <strong>[3-1-资源模块](./3-1-资源模块.md)<strong>

View File

@@ -8,9 +8,29 @@ Scene窗口Resource对象可以设置一些资源模块的常用设置比如
Menu窗口TEngineSetting可以设置一些资源模块的热更新设置比如资源服务器地址以及在线参数等。备注在Luban目录下有一个基于Node的静态文件服务器可以把在线参数以及AB放入用于做热更新测试。 Menu窗口TEngineSetting可以设置一些资源模块的热更新设置比如资源服务器地址以及在线参数等。备注在Luban目录下有一个基于Node的静态文件服务器可以把在线参数以及AB放入用于做热更新测试。
![image](src/3-1-2.png) ![image](src/3-1-2.png)
## 重要拓展概念
* AssetReference (资源引用标识) 通用加载资源的时候绑定一个引用标识使你无需关心手动Dispose资源句柄。
* AssetGroup资源组数据进行资源分组绑定管理内存中的生命周期资源生命周期托管给资源组的根节点进行Dispose。
常用接口 * LruCacheTable (Least Recently Used Cache缓存表)
* ArcCacheTable (Adaptive Replacement Cache缓存表)
## 加载资源示范
``` csharp
//同步加载。
GameModule.Resource.LoadAsset<SkillDisplayData>(location);
//异步加载。
GameModule.Resource.LoadAssetAsync<SkillDisplayData>(location, OnLoadSuccess);
private void OnLoadSuccess(AssetOperationHandle assetOperationHandle){}
//使用UniTask异步加载。
await GameModule.Resource.LoadAssetAsync<SkillDisplayData>(location,CancellationToken.None);
```
## 常用接口
remark资源模块初始化的生命周期已经在流程模块实现了具体有需求可以自定义开发。 remark资源模块初始化的生命周期已经在流程模块实现了具体有需求可以自定义开发。
``` csharp ``` csharp
/// <summary> /// <summary>

View File

@@ -1,9 +1,11 @@
## 3-2.事件模块 - GameEvent ## 3-2.事件模块 - GameEvent
高效的事件系统GameEventMgr可以指定事件ID/事件String监听和分发事件。通过事件来驱动模块如战斗的角色身上的事件流、UI和网络以及Model的数据流、开发中的绝大部分情况都可以通过事件来进行驱动。(配合UI模块或者拓展的战斗模块实现MVE[Model - View - Event]事件驱动架构) 高效且无GC的事件系统GameEvent可以指定事件ID/事件String监听和分发事件。通过事件来驱动模块如战斗的角色身上的事件流、UI和网络以及Model的数据流、开发中的绝大部分情况都可以通过事件来进行驱动。(配合UI模块或者拓展的战斗模块实现MVE[Model - View - Event]事件驱动架构)
<strong>UI模块的事件和UI生命周期存在绑定销毁UI时可以自动移除UI所监听的事件。(AddUIEvent)</strong> 事件模块支持string和int作为事件Id但推荐是使用int因为可以避免事件字典的哈希碰撞。这里实现了StringId.StringToHash的方法来定义事件ID达到事件系统的最佳性能。
<strong>UI模块的事件和UI生命周期存在绑定销毁UI时可以自动移除UI所监听的事件,开发过程中只需要关心添加事件避免了关闭UI但没有移除事件监听的问题角色模块也可以参考实现。(AddUIEvent)</strong>
``` csharp ``` csharp
public static int Hellp = StringId.StringToHash("Hellp.Hellp"); public static readonly int Hellp = StringId.StringToHash("Hellp.Hellp");
class A class A
{ {

View File

@@ -50,11 +50,20 @@
## <strong>为什么要使用TEngine ## <strong>为什么要使用TEngine
0. 开箱即用5分钟即可上手整套开发流程代码整洁思路清晰功能强大。高内聚低耦合。您可以很轻易的把您不需要的模块进行移除替换。 0. 开箱即用5分钟即可上手整套开发流程代码整洁思路清晰功能强大。高内聚低耦合。您可以很轻易的把您不需要的模块进行移除替换。
1. 使用次世代的HybridClr进行热更新、强大的Luban配置表、百万DAU游戏验证过的YooAsset资源框架全平台热更新流程已跑通。 1. 严格按照商业要求使用次世代的HybridClr进行热更新、强大的Luban配置表、百万DAU游戏验证过的YooAsset资源框架全平台热更新流程已跑通。
2. 严格按照商业化流程执行的热更新、商业化的UI开发流程、以及资源管理等等。 2. 严格按照商业化流程执行的热更新、商业化的UI开发流程、以及资源管理等等设计并实现了YooAsset资源自动释放、支持LRU、ARC严格管理资源内存
3. C#双端解决方案服务器使用Fantasy是一套源于ETServer但极为简洁性能更强更好上手的一套商业级服务器框架。 3. C#双端解决方案服务器使用Fantasy是一套源于ETServer但极为简洁性能更强更好上手的一套商业级服务器框架。
4. 已有项目使用TEngine上架Steam、Wechat-minigame、AppStore。 4. 已有项目使用TEngine上架Steam、Wechat-minigame、AppStore。
## <strong>资源重要拓展概念
* AssetReference (资源引用标识) 通用加载资源的时候绑定一个引用标识使你无需关心手动Dispose资源句柄。
* AssetGroup资源组数据进行资源分组绑定管理内存中的生命周期资源生命周期托管给资源组的根节点进行Dispose。
* LruCacheTable (Least Recently Used Cache缓存表)
* ArcCacheTable (Adaptive Replacement Cache缓存表)
## <strong>为什么服务器使用C# ## <strong>为什么服务器使用C#
Net Core现在已经更新到了8.0的版本在性能和设计上其实是远超JAVA和GO。在JAVAER还在为JVM更新和添加更多功能时其实他们已经被国内大环境所包围了看不到.Net Core的性能之强组件化的结构。国内大环境是JAVA和GO的天下这个不可否认但是国外C#也确实很多。其实.Net Core最大的问题是大多数自己人都不知道他的优点(AOT、JIT混合编译、热重载等等)甚至很多守旧派抵制core。GO喜欢吹性能但其实目前来看除了协程的轻量级大多数性能测试其实不如JAVA和.Net。简单可以说出了C++的性能以外Net Core其实都打得过。 Net Core现在已经更新到了8.0的版本在性能和设计上其实是远超JAVA和GO。在JAVAER还在为JVM更新和添加更多功能时其实他们已经被国内大环境所包围了看不到.Net Core的性能之强组件化的结构。国内大环境是JAVA和GO的天下这个不可否认但是国外C#也确实很多。其实.Net Core最大的问题是大多数自己人都不知道他的优点(AOT、JIT混合编译、热重载等等)甚至很多守旧派抵制core。GO喜欢吹性能但其实目前来看除了协程的轻量级大多数性能测试其实不如JAVA和.Net。简单可以说出了C++的性能以外Net Core其实都打得过。
<strong>当然作为商业级解决方案服务器的耦合度也极低,如果不喜欢您也可以很轻松直接移除替换成你的服务器。</strong> <strong>当然作为商业级解决方案服务器的耦合度也极低,如果不喜欢您也可以很轻松直接移除替换成你的服务器。</strong>