2006-6-19 炸弹人开发进度

来源:互联网 发布:java多线程锁机制 编辑:程序博客网 时间:2024/06/15 20:42

1.对象创建
我为什么不让游戏直接创建对象?
出于两方面考虑:
1>谁需要直接创建游戏对象?创建的游戏对象又是谁来管理?
2>又由谁来删除游戏对象?
3>这样一来C++对象的磁盘保存功能也可以在这之上复用。(这就必须用到RTTI了)

想想在炸弹人游戏中对象是怎么被删除的,大都不是由创建者删除。比如如果对象是在火焰上的话,大都是收到一个事件,
或是其它外在因素。所以并不因该由事件生成者比如人物来删除。

另外如果人物有心灵感应可以遥控引爆炸弹这种情况,直观的看就是人物只是通知了一下炸弹某个事件而已。
也不存在对象源生产者(人物)直接删除产生的对象(炸弹).

还有就是如果对象的创建与删除都是在同一个地方做的话,就可以自已管理生成对象的内存区域,而不必为每个产生的对象都分
配内存空间。

所以对象的具体创建只是相关的管理代码的活,并不是我们游戏逻辑的代码。

2.ID管理器
因为我以后需要加入连网功能,
所以游戏对象的操作使用ID,而不是指针。
如果使用ID,我也不希望对性能造成太大影响,所以我也就没有使用map。直接使用C的数组。
ID引用计数的目的是防止在还有人引用着某个ID,但这个ID却被重分配了(不只是释放哦)。然后引用的对象就会用了错误的的ID。

结论:
1.对象创建与删除,不管是从磁盘上读取的数据,还是代码内部产生的对象.统一使用一个接口CGameFactory.
2.所有对象都有个在唯一不重复的整数ID,并且用该ID就是C数组的下标(效率)

原创粉丝点击