游戏Entity设计不完全整理
2006-11-26
在游戏引擎中,Entity通常被翻译成实体,也常用诸如GameObject、Actor、SimulationObject、Unit、Character等名字。相比于对图像声音引擎的热情,Entity层多年来一直备受冷遇,但最近几年随着大型游戏的发展,Entity层设计的重要性已经达到和图像声音的同等水平,而且已经出现了多种通用型Entity架构。当然,这里伴随着争议和分歧。
直接模式(The C Approach)
这是最早、最简单、也是任何人都能直接想到的模式。这种方式下一个Entity就是一个简单的struct:
struct Mob
{
int level, hp, mp, attack, …;
};
这种情况下往往需要对不同类型的Entity定义不同的struct,比如Player、Mob、Item、Doodad等。Entity的数据库可以直接使用现成的数据库系统或者从数据文件读取,比如csv文件。一般会选择Excel编辑数据库,然后导出csv。Excel的强大表格和统计计算功能是调节游戏数据平衡的得力工具。以致这种最古老而简单的Entity模式以强大的生命力一直活到现在。
那么为什么Developers会要去探索其他方式呢?最大的问题是这种方式下各种Entity完全不同质。比如Player