赛高游戏引擎重构(一)Host App 扩展 TGEGameModel 的方案
来源:互联网 发布:淘宝梦想世界 编辑:程序博客网 时间:2024/06/11 09:47
赛高文字是我在上一家公司做的一个 App,其中的文字游戏都是由赛高文字游戏引擎驱动。之前找工作的时候稍微整理了一下代码,重构了一些部分,现在发出来。
背景
由于 TGEngine 最后会打包成一个 framework,源码无法修改,也不想 Host App 在扩展 TGEGameModel 时增加字段,同时也要避免扩展 TGEGameModel 时要修改对应的 TGERLMGameModel 和 Realm Bridge 的映射逻辑,更加免去了 Realm 的版本迁移逻辑。
方案
在 Host App 建立继承自 TGEGameModel 的 TDGameModel,这样可以在 TDGameModel 中扩展字段。
另外 TGEGameModel 暴露下面两个方法:
子类 TDGameModel 需要覆写这两个方法,补充自己的映射字段。代码如下:
由于 TGEGameModel 实现了 NSCoding, NSCopying, NSEqual 的模板方法,所以 TDGameModel 可以深拷贝、序列化各种。
关于如何避免 Realm 的映射和版本迁移逻辑
以前如果在 TGEGameModel 中增加字段,需要修改 TGERLMGameModel ,增加相应的字段,并在 TGERLMModelsBridge (DSL) 的
+ (TGERLMGameModel *)singleRealmGameModelFromRawModel:(TGEGameModel *)gameModel;+ (TGEGameModel *)singleGameModelFromRealmGameModel:(TGERLMGameModel *)rlmModel;
方法中增加字段的映射,例如:
rlmGameModel.nproperty = gameModel.nproperty; 或 gameModel.nproperty = rlmGameModel.nproperty;
还需要在 TGEStorage 中增加版本迁移的逻辑:
整个过程非常繁琐,如果忘记其中一个步骤就会出错,甚至会因为版本迁移问题而 crash,通过以上方法可以避免这一过程。
0 0
- 赛高游戏引擎重构(一)Host App 扩展 TGEGameModel 的方案
- 赛高游戏引擎重构(二)Game Config
- 重构,可扩展设计可操作方案。
- 游戏引擎剖析(一)
- 游戏引擎剖析(一)
- 游戏引擎剖析(一)
- 游戏引擎剖析(一)
- 游戏引擎基础(一)
- 游戏引擎剖析(一)
- 高可用高性能可扩展的单号生成方案
- 高可用高性能可扩展的单号生成方案
- 基于引擎开发HTML5游戏实战(一)---游戏引擎
- 基于Canvas的JS游戏引擎(一)
- 非常好的社区游戏引擎ffilmation(可以扩展做网游)
- 游戏引擎扩展的两种方式--组件和模块
- 我的游戏引擎设计——“SI引擎草案(一)原理和框架”
- 游戏引擎剖析(一)[转载]
- 【转】游戏引擎剖析(一)
- Python核心编程---读书笔记:第1章~第3章
- The first day of learn java
- 数据库学习笔记二
- 【九度OJ】题目1205:N阶楼梯上楼问题 解题报告
- hdu1023卡特兰数
- 赛高游戏引擎重构(一)Host App 扩展 TGEGameModel 的方案
- java访问权限
- VMware安装Ubuntu Kylin 16.04
- DEBUG:JDBC建立了事务,操作失败,却没能实现回滚的问题
- HTTP Header 详解
- python的with用法
- 对于派生类的构造函数,在定义对象时构造函数的执行顺序
- JAVA动态代理之java.lang.reflect.Proxy.newProxyInstance源码
- C# 查找问题