Meuck的专栏

我们的故事爱就爱到值得错也错的值得,是执着是洒脱留给别人去说

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

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

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

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

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

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

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

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

阅读更多
文章标签: 游戏 磁盘 c++ c
上一篇c++资源之不完全导引
下一篇2006_06_23游戏开发日志
想对作者说点什么? 我来说一句

炸弹人单机版源码

2006年02月23日 1.48MB 下载

html5炸弹人游戏源码

2015年02月02日 543KB 下载

没有更多推荐了,返回首页

关闭
关闭