【发布时间】:2010-06-23 18:18:22
【问题描述】:
我正在开发一款小型在线游戏,其中需要存储有关许多(100 多种)不同类型游戏对象的合理信息量。
我正在尝试决定是让这些数据由代码生成还是存储在某个配置文件中。
数据生成方法类似于(在 java-ish 伪代码中):
(within a set of functions executed once at program startup)
....
// create grass terrain
grass=new GameObject();
grass.inheritProperties(generic_terrain);
grass.set(NAME,grass);
grass.set(MOVEABLE,true);
grass.set(MOVECOST,10);
grass.set(IMAGE_INDEX,1);
....
而配置文件方法可能只使用 XML 类型的格式,例如
(within terrain.xml file)
....
<terrain name="grass">
<inherit class="generic_terrain"/>
<property key="NAME" value="grass"/>
<property key="MOVABLE" value="true"/>
<property key="MOVECOST" value="10"/>
<property key="IMAGE_INDEX" value="1"/>
</terrain>
....
一些要点:
- 此信息每次都是静态的 游戏游戏运行(即不 在执行期间更改)
- 属性名称(NAME、MOVECOST 等)是一个相对较小的列表,但随着时间的推移可能会添加其他名称
- 很安全 假设它只会得到 由开发团队更改(即 不需要配置 在构建之外进行管理 过程)。
- 需要调整 在开发过程中经常 出于游戏平衡的原因(例如,使单位更小/更强大)
- 存在一定数量的“继承”属性,即在上面的示例中,草需要具有由 generic_terrain 定义的所有标准属性以及一些新的添加/更改。
哪种方法最适合这种情况?更重要的是为什么?
【问题讨论】:
-
如果您正在寻找一种高效的配置文件格式,我建议您查看yaml :)
标签: language-agnostic design-patterns data-structures