回 帖 发 新 帖 刷新版面

主题:[讨论]RPG游戏怎样组织其庞杂的进程,判断其纷繁的事件?

[em18]在主题“RPG的地图问题”里面,if007仁兄问过这个问题:
“正规的RPG游戏的他的事件触发因素是什么呢?我编了这样一个类:
    事件类.是否发生(游戏进程, 地图, 人物){...}
来判断事件的是否触发.
可是我觉得不太对劲,RPG的事件那些多, 这样判断不是量挺大的,而且整个游戏的事件代码都堆在一块了,挺怪的...我是以人,地图,事件来分成类的.他们的组合决定了游戏进程. 但我这么分好像每个类的规模也大了些吧...
但正规的RPG的是怎么分类的呢?”

我把它提作主题,请朋友们讨论,说说自己的看法。

回复列表 (共10个回复)

沙发

我自己的看法:
大型RPG游戏(如仙剑)是按照场景组织其游戏进程。
每个场景里面,有特定的NPC,待触发事件,场景图片。每个场景都有一个函数或类。
当主人公进入场景A,则消息循环函数只检测场景A里触发什么事件,作相应处理。
当进入场景B时,释放场景A所占内存,加载场景B。

板凳

这正是我目前头痛的问题,实事上,很多游戏都是用脚本来支持的,没有你想得那么可怕,如果"每个场景都有一个函数或类。"那不是累死?它是把具有相同性的一类事件归结为一个类,也就是一个系统,然后在地图中加入能够触发事件的信息,事件一旦触发,就会查找对应的脚本文件,来解释并执行.....

您可以看下怪盗KID做的大型RPG<永远的伊苏>,他的脚本系统做得非常好...

3 楼

“脚本”,我还不懂,是不是这样:
在文本文件里面事先写好  A说:“……。”
                        B说:“……。”
当游戏中A与B触发谈话事件后,加载文本文件里的相应内容,显示出来。

如果是这样,那过场动画里的动作也可通过脚本实现,例如,3D游戏,文本文件里写好“视角从左到右旋转45度”,加载文本内容后,检测分类文本,对话文本与动作文本分别传递给相应的函数,然后执行。是不是这样?

4 楼

贯穿整个游戏的类:开始类,结束类,人工智能类,
                  存储进度类,读取进度类,
                  战斗类,    升级类,
                  寻路算法类,脚本解释类

在每个场景中,1·加载图片,声音,脚本
              2·显示图片,播放声音
              3·消息循环:
                     A)结束游戏————结束类
                     B)存储进度--——存储进度类
                     C)读取进度————读取进度类
                     D)触发战斗————战斗类,人工智能类
                     E)触发升级————升级类
                     F)人物移动————寻路算法类
                     G)触发对话————脚本解释类
                     H)场景转换————释放内存

大家分析一下!

5 楼

RPG是大学问,建议你看下日本大师坂本千寻写的<Visual C++ 角色扮演游戏程序>
里面讲得很清楚

日本人写的东西就是好啊,呵呵

6 楼

为什么我看不懂坂本千寻写的<Visual C++ 角色扮演游戏程序>?
我浏览了一遍全书,他并没有给出每个函数的代码,所以我看不下去。
看插图,游戏界面很漂亮,我想学他的界面,但找不到相应的代码。
你是怎样读这本书的?

7 楼

.......没有代码,却有思想和算法啊,大哥,难道你一定要照抄人家代码吗?

8 楼

我不是抄他的代码,只是想弄明白效果是怎样实现的
毕竟,我水平还不高。
我修改别人的代码,添加自己的东西,体会到乐趣,学习就有动力。

9 楼

小小C,能不能介绍一下《Visual C++ 角色扮演游戏程序》中是怎样组织游戏进程的?

10 楼

游戏的界面可以看DirectX特效游戏程序设计,新书,应该不错。
至于地图卷动,那是通过你自己设计文件完成的,或者用XML啊什么的那堆东西……

我来回复

您尚未登录,请登录后再回复。点此登录或注册