赛高游戏引擎重构(一)Host App 扩展 TGEGameModel 的方案
2017-03-19 16:10
288 查看
赛高文字是我在上一家公司做的一个 App,其中的文字游戏都是由赛高文字游戏引擎驱动。之前找工作的时候稍微整理了一下代码,重构了一些部分,现在发出来。
另外 TGEGameModel 暴露下面两个方法:
子类 TDGameModel 需要覆写这两个方法,补充自己的映射字段。代码如下:
由于 TGEGameModel 实现了 NSCoding, NSCopying, NSEqual 的模板方法,所以 TDGameModel 可以深拷贝、序列化各种。
方法中增加字段的映射,例如:
还需要在 TGEStorage 中增加版本迁移的逻辑:
整个过程非常繁琐,如果忘记其中一个步骤就会出错,甚至会因为版本迁移问题而 crash,通过以上方法可以避免这一过程。
背景
由于 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,通过以上方法可以避免这一过程。
相关文章推荐
- 用TorQue引擎开发的RTS即时战略游戏(a interesting RTS Game made by TGE)
- 赛高游戏引擎重构(二)Game Config
- TGE游戏引擎--开发初级武器系统-总览(添加并可以自由切换AK47,散弹枪,激光武器等等)一
- Torque游戏引擎TGE/TGB中文输入的问题解决方案(含代码下载)
- 用Torque的TGE开发的国外游戏,效果惊人(amazing Game made by TGE)
- Game.Physics.Engine.Development(游戏物理引擎开发)
- 重构,可扩展设计可操作方案。
- unity游戏引擎基础之编辑器菜单栏扩展(三)
- android 2D游戏开发,引擎设计(四) 造型类Model的设计。简单进度条
- WPF开发的ARPG游戏引擎(WPF Game Engine)
- HDU 2177 取(2堆)石子游戏 Wythoff Game 求第一步方案
- Game Engine Architecture by Jason Gregory:1.3 什么是一个游戏引擎
- Game Engine Architecture by Jason Gregory:1.4 不同类型的游戏引擎(2)
- 正式宣布开始开发开源游戏引擎FreeSky Game Engine.
- 基于JavaFX--WJFXGameEngine游戏引擎介绍与进度
- 非常好的社区游戏引擎ffilmation(可以扩展做网游)
- Game Engine Architecture阅读 1.2 - 1.4 游戏、游戏引擎及其分类
- C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(二十二)重构 – 让代码插上翅膀自由飞翔
- OpenExpressApp:实体扩展属性系统 - 设计方案说明书
- 准备搞游戏了, lazarus + castle_game_engine-5.2.0-src 引擎。 blender2.74