游戏开发论坛

 找回密码
 立即注册
搜索
查看: 9040|回复: 16

浅谈RPG核心系统

[复制链接]

20

主题

465

帖子

472

积分

中级会员

Rank: 3Rank: 3

积分
472
QQ
发表于 2006-11-25 13:55:00 | 显示全部楼层 |阅读模式
  看了PassByYou所说的RPG设计规则,原贴http://bbs.gameres.com/showthread.asp?threadid=68498
  我觉得PassByYou的规则还是包含了许多设计层面上的内容,许多程序层面上的东西十分模糊,而sjinny又更加某名其妙,不知道到底能用来做什么。简单点说,这种解释还不能让人理解一个游戏核心设计的程序员应该做些什么。

  我认为,一个RPG/ARPG的核心程序应该包含下列系统。我在说明的时候尽量说得细一些,虽然可能有些罗嗦,但是这样有助于理解。

  一、属性系统
  这是游戏中最简单的系统,包括主角、物品、NPC、技能等各自的属性。属性系统的详细部分游戏策划应该给出,程序只需要给其保存的结构就行了。这里的属性,自然不只包括事物的基本性状,也包括它应该引发的脚本代号。

  二、人物状态机系统
  这个系统十分复杂,也是所有系统得以运行的基础。这个系统标志着人物目前处于一个什么样的情况中。
  相对于动作而言,人物是站立中?还是跑动中?还是对人对持中?还是在施放魔法中?还是在施展技能中?当然,有些状态是可以同时拥有的,比如说站立和施法,有些是不能同时拥有的,比如说站立和走动,这在程序中需要用不同的变量来区分。
  相对于剧情而言,人物现在是接受了这个任务吗?没有接受任务吗?或是完成了吗?如果任务不止一步,人物进行到哪一步了?每个任务都要用不同的状态机来保存。
  相对于属性而言,人物现在是中毒吗?没有中毒吗?人物现在可以移动吗?可以以正常速度移动吗?人物现在可以施展技能吗?可以施展哪些技能?
  主角目前身上有什么物品(任务,或是非任务物品),身上有什么装备,曾经去过哪些地方,杀死过哪些怪物,和哪些人对过话,这些东西都是需要状态机来表示的,因为脚本系统需要这些状态机来进行判断。当然,这其中有些状态机不需要事先设定,而是等需要的时候才计算。比如说物品状态机,在需要的时候给定一个物品的代号,然后状态机系统就可以给出角色是否拥有这个物品,拥有多少个之类。
  在这里有一点关键性的东西,游戏程序中的状态机和游戏设计中的状态不是一一对应的,比如说,游戏设计中有“麻痹”这一状态,但是状态机中却不一定有(当然,状态机是人设计的,你要设计一个这样的状态也是可以的),而是用“移动:否”、“动作:否”这两个状态机来表示。
  当然还有许多许多的状态机情况,游戏的规则越复杂,所需要的状态机就越多,状态机系统也越复杂。因为各个状态之间也是相互关联的。状态机系统之所以重要,是因为周围世界中所发生的一切行为都是以人物处于何种状态而决定的。

  三、行为系统
  这个系统决定了游戏的表演方式,也与图形引擎和声音引擎挂钩。当人物(或是怪物)发出一个动作之后,这个动作要怎么表示?比如说攻击,虽然在角色发动攻击的一瞬间,攻击是否命中,目标会受到多少伤害,这个已经被计算好了,但是不可能角色的刀子一举起来,怪物就作出受伤的动作并且惨叫一声,而是角色的攻击动作到达某一个阶段(程序上来说就是哪一帧)的时候,怪物才作出受伤的动作。
  而且,还有许多不是在动作启动时就可以做出计算的,而是在碰撞检测之后才决定的(可以是物理,或是非物理的)。比如说弓箭、飞弹类型的魔法、攻击范围会渐渐变化的魔法(例如火环),追尾型的飞弹之类,这些东西的进行方式都是行为系统来控制,而非脚本系统(以下会介绍)来控制。以火环为例,它从发动到结束共有多少帧?每帧会产生什么样的变化?它影响的区域会怎么样变化?
  不同的事物可以用不同的行为系统,但也可以共用同一个行为系统,比如说冰环和火环,虽然他们的渲染和伤害计算是不同的,但是他们的行为是一样的。
  又比如说死亡的动作。如果死亡就只有一种表现形式,那么关于死亡的行为系统也不复杂,但是有多种死亡动作呢?比如说向前倒下、向后倒下、软倒(直立着跪下那种),如果是从正面受到攻击,那么向后倒下才符合情况,而用先前倒就不真实了。或者是向后倒之后,再加上一定程度的移动,就可以造成“吹飞”(被人打出去很远)的效果。那么判断何时使用哪种动作,就是行为系统的部份。
  当然,人物行为所造成的影响的计算也是这个系统的功能。分析人物目前的状态,决定使用哪一个公式来计算影响,动作是否成功(例如命中之类),人物/怪物受到影响之后会产生什么样的动作(当然不是指怪物的决策行为的这种关于AI的部份,是指如果生命降到0就要执行死亡动作这一类)也是行为系统的部份。这虽然是一个非常重要的部份,但因为大家对计算都了解,所以就不多说了。

  四、交互/操作系统
  操作系统相对而言是简单的,接受用户的输入,并判断这个输入将要产生什么样的影响,执行何种操作,也需要决策是否能够执行操作。判断的准则需要同时分析角色和目标的状态。比如说,用户把一个NPC设为目标时,这个目标是友好的吗?是敌对的吗?如果是友好的,则执行对话的行为,如果是敌对的,则执行攻击行为。或者,不管目标怎么样,现在主角处于“麻痹”状态,所以不管攻击还是对话的行为都无法执行,所以用户的这一操作便被忽略,不予执行。
  游戏的各种菜单也是这个系统的一部份。包括剧情对话框、物品购买界面以及各色各样的特有对话系统(比如说《仙剑3》的炼剑系统界面,《轩辕剑3》的炼妖系统界面)都属于这一类。因为他们本质上就是一种对话框,它提供给用户一些信息,而用户执行的操作将对角色产生影响,或是触发某个事件/脚本。比如说购买界面,在上面执行的操作就能够给用户增加一项或多项物品(从地上捡拾物品也是一样)。炼剑系统则是改变主角的剑的性质。
  交互系统的逻辑层面并不复杂,它的难点主要在于烦琐的细节,所以这也是游戏中BUG多出的地方。(例如暗黑中著名的物品复制BUG,诸如此类,就是因为操作系统有缺陷才造成的。)

  五、脚本系统
  这是构成精彩世界的重要组成部份。一个好的脚本系统几乎可以操作游戏世界中的一切(什么?你说脚本不能控制用户的菜单?那如果你的游戏中要做一个给初学者的教学演示呢?)。在以剧情为重的RPG中,脚本系统将是十分复杂的。
  但是,不管脚本如何复杂,它都由三个基本的部份组成。第一,脚本执行的先决条件。这个脚本执行需要什么样的条件呢?是领到某个任务,是杀死某个单位,或是到过某个地方?第二,脚本执行的动作。脚本执行的动作是多种多样的,这取决于脚本系统的能做到什么样的事情。最基本最常见的展开一段剧情对话,或者是由一系列人物表演一系列动作,当然,只要游戏能做到的一切,都可以作为脚本的动作。第三,脚本产生的影响。脚本执行之后,给人物,给这个世界造成什么影响呢?是增加人物的力量?或是直接导致角色死亡?接受到一个新任务?或者完成一个任务?当然,也有可能触发另一个脚本。
  脚本分为游戏脚本和地图脚本,游戏脚本是在任何情况下,只要触发并且条件满足就可以执行的脚本,而地图脚本则是在指定的地图上才可以执行。通常它需要指定的单位和指定的环境,游戏中的大部份表演都是基于地图的脚本。

  六、地图/环境系统
  如果脚本是游戏世界的灵魂的话,那么地图系统则是游戏的血肉。地图系统包含了地形状况、怪物、NPC、建筑等一切与世界相关的单位。它是玩家活动的空间,一切元素的容器,也是脚本系统的容器,它决定什么地方拥有什么样的事件。地图上拥有什么样的人物、什么样的脚本,决定了地图上会发生什么样有趣的事情。可以说,地图决定了整个游戏的面貌。
  但是,地图分为地图和世界,世界包含整个游戏部份,在上面脚本系统中所说的游戏脚本也是属于地图/环境系统的实现部份。这一个系统没有什么可说的,想必大家都十分了解。

  七、AI系统
  这个系统也是很关键的一个系统。不过关于它并不需要太多的介绍,因为这也是大家都熟悉的系统。虽然这也是一个影响行为的系统,但是它的大部份功能在于怪物如何与角色战斗。复杂的行为模式是脚本系统要实现的,这个系统只实现简单的决策:战斗还是不战斗、行进路线、用什么样的技能/魔法战斗等。

  八、主控制系统
  这个系统也不用多作说明了,它由一系列菜单和调用组成。游戏的存储、读取功能也是由这一个系统负责。它掌管整个游戏的进行过程。

  以上就是我对于RPG/APRG系统的理解了,其实,这样分析我也还是第一次,需要注意的是,虽然这是分析RPG的系统,但是其中的许多概念对于所有游戏都是通用的。因为本人并没有真正开发过RPG游戏,所以这些概念都是设想,仅供各位作为参考。有不足的地方,还希望大家一起研究讨论。

197

主题

1041

帖子

1104

积分

金牌会员

Rank: 6Rank: 6

积分
1104
QQ
发表于 2006-11-26 10:58:00 | 显示全部楼层

Re:浅谈RPG核心系统

能够有自己的见解始终是不错的。况且还能够有为大家提供思路的意思,那就更不错了。小小致敬一下:)

我说一下整理规则系统的初衷。我是做到规则部分的时候,才来做的分析,很多规则分析都是针对和已经成型的部分配合,并非是完全从头到尾的深透分析。所以只说了一下要点,就像你说的,全都是从DESIGNER角度在考虑,程序方面描述很少。

另一方面,在核心引擎部分我是做得较深入的。做深的时候很多问题论坛上的人都没办法讨论,即使光是理解也没几个人,所以我都是自己解决。我的感想是,思考简单,动手麻烦:)

然后我说一下对游戏规则的认识。图形,还有一些复杂算法可以程序这边包完。可是游戏规则的变化太多,要一次性完成是有难度的。从策划区,或则从各个公司一天到晚都在开会就可以看出。所以左右衡量,规则引擎部分最后是做成标准的核心规则,这样不管效率,成本,还是可重用性都是最好的。但我绝对不是以软件工程的方式在考虑,我提出标准核心规则,是从GAME DESIGN的实用性在考虑。

从你的文章来看,感觉目前你还处于对游戏引擎认识的开始阶段。我给你个建议。不管干什么事,总有第一次,既然你都提出了更细节的和程序挂钩的规则,不妨再深入思考一下。当感觉自己想清楚地时候,这时候马上应用起来。可以带着你的思路可以找家公司去实现,或则像我,自己动手实现。知识该用起来的时候,应立即用,不要拖。把核心规则细节想清楚。这对你以后大有好处。

对了。我在不久以后,会提供一个ARPG的demo,我想把核心规则和游戏规则这两部分的代码都开原出来,望捧场。

187

主题

6490

帖子

6491

积分

论坛元老

团长

Rank: 8Rank: 8

积分
6491
发表于 2006-11-26 12:29:00 | 显示全部楼层

Re:浅谈RPG核心系统

有参考价值,谢谢~

45

主题

1163

帖子

1165

积分

金牌会员

Rank: 6Rank: 6

积分
1165
发表于 2006-11-26 12:35:00 | 显示全部楼层

Re:浅谈RPG核心系统

nice! perfect!

149

主题

4981

帖子

5033

积分

论坛元老

Rank: 8Rank: 8

积分
5033
QQ
发表于 2006-11-26 13:40:00 | 显示全部楼层

Re:浅谈RPG核心系统

这个……不是我不知道能用规则系统来干些什么,我不知道的是如何系统地分析和设计它,因为我还缺乏经验。
我也把我暂时能想到的写下来吧:
1.关于属性系统。
虽然也叫属性系统,但是我的理解有点不一样,我觉得这是一个并不简单的系统。它包括的不仅有游戏中的各种属性数据,还包括了属性的交互与行为。比如角色有元素抗性,那么元素抗性这种数据,以及抗性与元素伤害、吸收的各种交互规则也应该在属性系统里。也就是说属性系统构成了各种战斗行为的基础,理论上可以用属性系统里的元素来描述任何战斗技能和战斗交互。另外,还可以考虑由玩家来组合属性系统里的一些元素,在一些规则的限制之下创造玩家自己的技能,制作各种物品也是类似的。不过目前我还不知道一些好的限制方法,使得既能保持玩家自己组合创新的余地(灵活性),又能自动维持游戏的平衡。
2.关于交互系统。我这里说的不是玩家与游戏软件的交互,而是角色与角色的交互。我想的是对游戏中各种基础行为进行分类(一个行为用长度为N的浮点数组来描述该行为,每个元素描述了它的一个方面,这个数组描述了该行为在各个行为类别中的权重),角色的各种行为对其他角色在AI上的影响取决于行为所处的类别,而每个角色的AI中都使用一个长度为N的浮点数组来表达该角色的心理,该数组中每一个元素表达了角色在某一个方面的态度,可以把数据限定在(0.0,1.0)这样一个开区间里,当一个角色A的行为影响到了另一个角色B时(这里的影响也包括“看见”这样间接的影响),B会根据该行为的类别描述(行为描述数组)以及自己的心理数组来绝对对此次交互的反应(反应的行为和强度),如果能建立一个对话库来选择角色做出反应时进行的对象就更好了。

就像我一开始说的,我缺少经验,所以不求分析的系统,只是说出自己所想到的而已,欢迎大家一起讨论。

20

主题

465

帖子

472

积分

中级会员

Rank: 3Rank: 3

积分
472
QQ
 楼主| 发表于 2006-11-26 14:03:00 | 显示全部楼层

Re:浅谈RPG核心系统

你说的属性系统的另一个关键部份我是分到行为系统中了。属性系统只负责什么是什么,什么有什么而已。我觉得这样在游戏更改时或是扩展时更加清晰。你说的交互系统的话,我还不是很理解。我感觉我玩的游戏之中还没有如此强大的人工智能的。要是能做出来,就特别有意思了……

149

主题

4981

帖子

5033

积分

论坛元老

Rank: 8Rank: 8

积分
5033
QQ
发表于 2006-11-26 14:15:00 | 显示全部楼层

Re:浅谈RPG核心系统

嗯……我就是觉得现在的AI还不尽如人意,所以才这样想的,不过那些数组什么的只是手段,我还没有很详细的考虑过实现的问题。
现在我就是不知道应该怎样对游戏逻辑进行系统的划分,现在这样划分,我根本没办法判断划分是否完全或者是否有重叠……

149

主题

4981

帖子

5033

积分

论坛元老

Rank: 8Rank: 8

积分
5033
QQ
发表于 2006-11-26 14:47:00 | 显示全部楼层

Re:浅谈RPG核心系统

另外那个角色的心理数组可以根据角色的经历不断地演变……这样角色的经历就以这种形式记录了下来……

20

主题

465

帖子

472

积分

中级会员

Rank: 3Rank: 3

积分
472
QQ
 楼主| 发表于 2006-11-26 14:52:00 | 显示全部楼层

Re:浅谈RPG核心系统

给你一个我创建的系统的简介,也是关于角色成长的。算是一种声望系统吧。和DND的阵营系统有些相似。

智、勇、贤设定
  智、勇、贤是人物的隐藏属性,它反应了人物处事的态度。通过选择不同的做事方法,可以改变属性。在某项属性高到一定程度时,它又会反过来作用于人物选择做事的方法。
  比如说遇到一个怪物拦在路上时,有三种选择:强行突破、绕道、谈判。选择强行突破,则会增加“勇”属性,选择绕道则会增加“智”属性,选择谈判则会增加贤属性。当然,上面说的只是一般情况。并不一定选择“勇”的方法就会强加“勇”的属性。得到属性增加的条件是选择了这种方法之后,并且实行这种办法成功了才行。否则的话反而会扣掉属性。例如没有其它道路可以走的时候选择绕道,这实在不能称之为“智”,或者跟一个不可理喻的人谈判,这也不能称之为“贤”。
  有时候,两个选择之间会相互冲突,会同时引起两个属性的改变。比如说上面所说的情况变一下,在知道怪物比自己强的情况下有两种选择:强行突破和绕道。这时如果选择强行突破,会强加“勇”属性,但是还会减少“智”属性。换一种情况,在知道怪物比自己弱的情况下,还是两种选择:强行突破和绕道。这样情况就反过来了,如果选择绕道,会增强“智”属性,但是会降低“勇”属性。就是这么一回事。
  至于反过来作用于人物做事的设定我还在考虑当中。比如说遇到上面的情况,给玩家有两种选择,但是如果玩家的“智”属性大大地高于“勇”属性,就不会给玩家选择的机会,AI自动选择绕道。但是这样做对于游戏性还是有些影响,我还在考虑是否要这样做。
  这三项属性最低为-100,最高为100,这是表现人物个性的非常重要的属性,而且,因为事件的选择而导致属性的改变,这也可以说是声望的另一种表面形式。每个属性非常高的时候,人物会得到特殊的称号。这个还在设定当中。下面是一些已经想好的情况:

勇者:“勇”属性非常高
智者:“智”属性非常高
贤者:“贤”属性非常高
英雄:“智”和“勇”属性非常高
圣人:“智”和“贤”属性非常高
王者:“勇”和“贤”属性非常高
天使:“智”、“勇”、“贤”三项都非常高

149

主题

4981

帖子

5033

积分

论坛元老

Rank: 8Rank: 8

积分
5033
QQ
发表于 2006-11-26 15:19:00 | 显示全部楼层

Re:浅谈RPG核心系统

我觉得这样的AI系统,其应用重点应该是NPC而不是玩家~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-26 03:08

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表