游戏系统的结构是怎样的?

我想讨论的是RTS/RPG/SLG系统。这种系统有如下特点:
1、场景角色多,且具有丰富的行为能力;场景也比较复杂,有各种行为机关
2、用户操作界面较为复杂,需要用户介入的地方比较多
3、要支持多用户(我把AI也视为用户)
4、必须流畅,即需要脱离windows消息循环,独自运行。(不同于AVG等更为休闲的形式)

由此,我作出如下设计:
1、要有一个场景控制器,监视和控制场景和其中的角色活动:
为了存放监视结果,我需要一个监视队列。为了存放控制任务,我需要一个控制队列。

2、要向用户提供操作界面。向人类用户提供直观界面,向AI用户提供逻辑界面。
界面的作用是向用户反映场景中的信息,并将用户的输入反馈给场景控制器。那么界面就需要连接到监视队列和控制队列。
逻辑界面则仅仅需要为AI用户映射队列的操作方法;而为了提供人机界面,我不仅需要为人类用户映射队列的操作方法,还需要图形引擎和声效引擎来呈现监视队列的内容,需要输入管理引擎来接收人类用户的输入信息(并把它们放进控制队列)。

3、人类用户肯定是拥有智能的,所以人机方向到此为止。另一个方向,我需要编写AI来操纵NPC。这些AI可以基于脚本(如工作角色,比如商铺老板之类),也可以基于逻辑组(上至敌军司令下至拦路好汉)。AI是程序,就必须要能够调试。所以AI应该有调试器和行为记录器。

4、对游戏场景最直接的操控者是场景控制器,只有它有能力进行暂停、存盘、读档、退出、新开等操作。所以这些系统级的控制也要放入控制队列中,由它来处理。同时,它应该具备一个调节器,来监控它自身的运行,以便于调试。


这样一个系统,它的启动顺序是怎样的呢?
首先,场景调试器启动场景控制器;然后AI调试器启动各自的AI,同时用户启动自己的人机界面。所有界面尝试连接场景控制器,最后场景控制器开始监视和控制。此时主动权掌握在场景控制器手里——它甚至有权拒绝用户的退出要求,当然这样一来我就得去调试它了——所有的用户必须向控制器提出要求才能得到结果。这样一来权限管理就会显得非常方便,比如任何一个AI要求关机,控制器都不会去理它。
如果这是一个网络游戏,那自然AI在一台服务器上,场景调试器在一台服务器上,服务器先开机然后用户再连线。如果这是单机游戏,则可以用一个引导程序先完成场景和AI的启动,然后再启动人机界面。

posted @ 2006-02-25 01:02  Cloudage  阅读(653)  评论(0编辑  收藏  举报