我在写游戏引擎的时候会将一些重要的设计思想贴到这里,方便大家交流。
——BY CG
一般游戏都是基于 “场景驱动”的。
所谓场景驱动就是由玩家在游戏中具体位置、具体状态、具体行为触发游戏逻辑。
如在某地图中,进入某个门,就到下一张地图;
如在某地图中,选择和某人对话,就触发战斗等……
请看下面来自武林群侠传的截图:
由驱动级任务(RPG场景、养成模式场景)来驱动子任务(战斗、小游戏、菜单)等。
在我们的GDE-X引擎中,也采用这种设计理念。
将 战斗、小游戏、其他菜单等看做是临时任务。每次需要的时候可以独立加载。
而场景作为后台驱动级任务,一直存在,只需要维护当前的场景信息。
那么我们的游戏引擎状态机可以完全基于当前的场景
while(not exit)
{
场景行为xxx( 当前场景 );
}
然后在场景行为中去阻塞的启动临时任务,比如战斗 StartBattle( this.战斗信息 );
在完成战斗后又回到场景行为中来。