Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > C/C++ > RPG程序框架探讨
【标  题】:RPG程序框架探讨
【关键字】:RPG
【来  源】:http://www.cppblog.com/darkdestiny/archive/2006/12/25/16817.html

RPG程序框架探讨

Your Ad Here C++博客 - On The Road - RPG程序框架探讨
posts - 41,  comments - 61,  trackbacks - 0
<2006年12月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

留言簿

随笔分类

随笔档案

文章档案

技术

朋友

搜索

  •  

最新评论

阅读排行榜

评论排行榜

此前曾思考过脚本如何同程序结合,虽然有所悟,但却发现连惯的执行某个脚本的时候,某些指令要挂起游戏的行动逻辑,比如TALK,在anykey按下前,整个场景都不能控制,而必须关注在人物对话上。
这里所说的行动逻辑,是指类似于ACT游戏的主逻辑/主循环,没有对话,没有菜单,也没有脚本。

先声明一个常用的术语,windows_game_loop(简称wgl),也就是windows下常用的游戏主循环代码:
while(run_game)?{
??
while(PeekMessage)?{
????
??}

??
if?(actived)?{
????impl_game_loop();
??}

??
else??WaitMessage();
}

好了,看看圣剑2所透露的RPG基本模块:
1,行动逻辑,也就是主循环game_loop,是一个wgl;
2,主菜单,CMenu类,包含状态,物品,魔法子系统。它的run()是一个wgl,因此菜单启动后,能够挂起行动逻辑;
3,脚本系统,会连惯的执行一个脚本文件;
4,消息队列,并不是winproc,消息队列每次每帧只执行一条消息,每帧并不能保证能完成执行,所以下一帧还会执行相同的动作,直到完成并删除该消息。重要的是,只要消息队列非空,就不会执行行动逻辑,暂时挂起它;
5,战斗系统,包含fight_menu,fight_good,fight_magic之类的东西,类似于一个mini_game。它的start()函数,是一个wgl;
6,对话系统,将由脚本系统和消息队列协作完成,对话时要挂起行动逻辑;

看行动逻辑,主菜单和战斗系统,它们都是wgl,因此可以单独封装成game_moudel,并注册到game_system下,由它驱动执行。

行动逻辑是非战斗时的逻辑,主要内容是控制player的运动,还有当player面向某个NPC并按下“对话键”后,触发该NPC执行其脚本。行动逻辑只能在空消息队列时才执行,这很重要。

对话系统。连续的对话,来源于NPC的脚本。NPC的脚本一口气的执行,但是对话必须一步步等待交互的来,如何做到?圣剑的解决方案是把对话指令转成消息,并放到消息队列中。
消息队列在wgl中挂起行动逻辑,使得player关注到对话上。消息队列执行一个NPC_TALK/PLAYER_TALK命令,显示对话文字,每帧不断的重复,直到player按下anykey,消息队列删除该消息,执行下一条消息,也许是NPC_TALK/PLAYER_TALK,这样对话就得到了延续。
看这样一个对话脚本,其中每个command都变成消息加入到消息队列,自然就能挂起行动逻辑完成对话了:
NPC_TALK?"Hello,?My?friend"
PLAYER_TALK?
"Hello,?What's?up"
NPC_TALK?
"Maybe?you?need?a?sword"
PUT_ITEM?sword
TALK?
"You?get?a?sword"

但是,消息队列并不能很好的解决含选择项对话的问题,因为不期望脚本被阻塞(多数是由于图形引擎结构引起,不希望把刷新挂进某个函数内,虽然可以这么做),比如:
ret?=?NPC_CHOISE("You?are?Saber?"?,"YES"?,"NO")
if?(ret?==?"YES")
??NPC_TALK?
"Hello,?Saber"
??NPC_TALK?
"I?think?you?need?a?sword"
??PUT_ITEM?sword
??PLAYER_TALK?
"Thanks"
else
??NPC_TALK?
"Oh,?byebye"
end?
if
以上,就是队列不能解决的脚本···除非NPC_CHOISE是一个wgl
posted on 2006-12-25 11:03 LOGOS 阅读(182) 评论(0)  编辑 收藏 收藏至365Key
【相关评论】
没有相关评论
【发表评论】
姓名:
邮件:
随机码*
评论*
      
|  首 页  |  版权声明  |  联系我们   |  网站地图  |
CopyRight © 2004-2007 软讯网络 All Rigths Reserved.