`

浅谈RPG核心系统(转载贴)

阅读更多
摘抄自:http://flash.9ria.com/viewthread.php?tid=51240&from=recommend_f 我认为,一个RPG/ARPG的核心程序应该包含下列系统。我在说明的时候尽量说得细一些,虽然可能有些罗嗦,但是这样有助于理解。   一、属性系统   这是游戏中最简单的系统,包括主角、物品、NPC、技能等各自的属性。属性系统的详细部分游戏策划应该给出,程序只需要给其保存的结构就行了。这里的属性,自然不只包括事物的基本性状,也包括它应该引发的脚本代号。   二、人物状态机系统   这个系统十分复杂,也是所有系统得以运行的基础。这个系统标志着人物目前处于一个什么样的情况中。   相对于动作而言,人物是站立中?还是跑动中?还是对人对持中?还是在施放魔法中?还是在施展技能中?当然,有些状态是可以同时拥有的,比如说站立和施法,有些是不能同时拥有的,比如说站立和走动,这在程序中需要用不同的变量来区分。   相对于剧情而言,人物现在是接受了这个任务吗?没有接受任务吗?或是完成了吗?如果任务不止一步,人物进行到哪一步了?每个任务都要用不同的状态机来保存。   相对于属性而言,人物现在是中毒吗?没有中毒吗?人物现在可以移动吗?可以以正常速度移动吗?人物现在可以施展技能吗?可以施展哪些技能?   主角目前身上有什么物品(任务,或是非任务物品),身上有什么装备,曾经去过哪些地方,杀死过哪些怪物,和哪些人对过话,这些东西都是需要状态机来表示的,因为脚本系统需要这些状态机来进行判断。当然,这其中有些状态机不需要事先设定,而是等需要的时候才计算。比如说物品状态机,在需要的时候给定一个物品的代号,然后状态机系统就可以给出角色是否拥有这个物品,拥有多少个之类。   在这里有一点关键性的东西,游戏程序中的状态机和游戏设计中的状态不是一一对应的,比如说,游戏设计中有“麻痹”这一状态,但是状态机中却不一定有(当然,状态机是人设计的,你要设计一个这样的状态也是可以的),而是用“移动:否”、“动作:否”这两个状态机来表示。   当然还有许多许多的状态机情况,游戏的规则越复杂,所需要的状态机就越多,状态机系统也越复杂。因为各个状态之间也是相互关联的。状态机系统之所以重要,是因为周围世界中所发生的一切行为都是以人物处于何种状态而决定的。   三、行为系统   这个系统决定了游戏的表演方式,也与图形引擎和声音引擎挂钩。当人物(或是怪物)发出一个动作之后,这个动作要怎么表示?比如说攻击,虽然在角色发动攻击的一瞬间,攻击是否命中,目标会受到多少伤害,这个已经被计算好了,但是不可能角色的刀子一举起来,怪物就作出受伤的动作并且惨叫一声,而是角色的攻击动作到达某一个阶段(程序上来说就是哪一帧)的时候,怪物才作出受伤的动作。   而且,还有许多不是在动作启动时就可以做出计算的,而是在碰撞检测之后才决定的(可以是物理,或是非物理的)。比如说弓箭、飞弹类型的魔法、攻击范围会渐渐变化的魔法(例如火环),追尾型的飞弹之类,这些东西的进行方式都是行为系统来控制,而非脚本系统(以下会介绍)来控制。以火环为例,它从发动到结束共有多少帧?每帧会产生什么样的变化?它影响的区域会怎么样变化?   不同的事物可以用不同的行为系统,但也可以共用同一个行为系统,比如说冰环和火环,虽然他们的渲染和伤害计算是不同的,但是他们的行为是一样的。   又比如说死亡的动作。如果死亡就只有一种表现形式,那么关于死亡的行为系统也不复杂,但是有多种死亡动作呢?比如说向前倒下、向后倒下、软倒(直立着跪下那种),如果是从正面受到攻击,那么向后倒下才符合情况,而用先前倒就不真实了。或者是向后倒之后,再加上一定程度的移动,就可以造成“吹飞”(被人打出去很远)的效果。那么判断何时使用哪种动作,就是行为系统的部份。   当然,人物行为所造成的影响的计算也是这个系统的功能。分析人物目前的状态,决定使用哪一个公式来计算影响,动作是否成功(例如命中之类),人物/怪物受到影响之后会产生什么样的动作(当然不是指怪物的决策行为的这种关于AI的部份,是指如果生命降到0就要执行死亡动作这一类)也是行为系统的部份。这虽然是一个非常重要的部份,但因为大家对计算都了解,所以就不多说了。   四、交互/操作系统   操作系统相对而言是简单的,接受用户的输入,并判断这个输入将要产生什么样的影响,执行何种操作,也需要决策是否能够执行操作。判断的准则需要同时分析角色和目标的状态。比如说,用户把一个NPC设为目标时,这个目标是友好的吗?是敌对的吗?如果是友好的,则执行对话的行为,如果是敌对的,则执行攻击行为。或者,不管目标怎么样,现在主角处于“麻痹”状态,所以不管攻击还是对话的行为都无法执行,所以用户的这一操作便被忽略,不予执行。   游戏的各种菜单也是这个系统的一部份。包括剧情对话框、物品购买界面以及各色各样的特有对话系统(比如说《仙剑3》的炼剑系统界面,《轩辕剑3》的炼妖系统界面)都属于这一类。因为他们本质上就是一种对话框,它提供给用户一些信息,而用户执行的操作将对角色产生影响,或是触发某个事件/脚本。比如说购买界面,在上面执行的操作就能够给用户增加一项或多项物品(从地上捡拾物品也是一样)。炼剑系统则是改变主角的剑的性质。   交互系统的逻辑层面并不复杂,它的难点主要在于烦琐的细节,所以这也是游戏中BUG多出的地方。(例如暗黑中著名的物品复制BUG,诸如此类,就是因为操作系统有缺陷才造成的。)   五、脚本系统   这是构成精彩世界的重要组成部份。一个好的脚本系统几乎可以操作游戏世界中的一切(什么?你说脚本不能控制用户的菜单?那如果你的游戏中要做一个给初学者的教学演示呢?)。在以剧情为重的RPG中,脚本系统将是十分复杂的。   但是,不管脚本如何复杂,它都由三个基本的部份组成。第一,脚本执行的先决条件。这个脚本执行需要什么样的条件呢?是领到某个任务,是杀死某个单位,或是到过某个地方?第二,脚本执行的动作。脚本执行的动作是多种多样的,这取决于脚本系统的能做到什么样的事情。最基本最常见的展开一段剧情对话,或者是由一系列人物表演一系列动作,当然,只要游戏能做到的一切,都可以作为脚本的动作。第三,脚本产生的影响。脚本执行之后,给人物,给这个世界造成什么影响呢?是增加人物的力量?或是直接导致角色死亡?接受到一个新任务?或者完成一个任务?当然,也有可能触发另一个脚本。   脚本分为游戏脚本和地图脚本,游戏脚本是在任何情况下,只要触发并且条件满足就可以执行的脚本,而地图脚本则是在指定的地图上才可以执行。通常它需要指定的单位和指定的环境,游戏中的大部份表演都是基于地图的脚本。   六、地图/环境系统   如果脚本是游戏世界的灵魂的话,那么地图系统则是游戏的血肉。地图系统包含了地形状况、怪物、NPC、建筑等一切与世界相关的单位。它是玩家活动的空间,一切元素的容器,也是脚本系统的容器,它决定什么地方拥有什么样的事件。地图上拥有什么样的人物、什么样的脚本,决定了地图上会发生什么样有趣的事情。可以说,地图决定了整个游戏的面貌。   但是,地图分为地图和世界,世界包含整个游戏部份,在上面脚本系统中所说的游戏脚本也是属于地图/环境系统的实现部份。这一个系统没有什么可说的,想必大家都十分了解。   七、AI系统   这个系统也是很关键的一个系统。不过关于它并不需要太多的介绍,因为这也是大家都熟悉的系统。虽然这也是一个影响行为的系统,但是它的大部份功能在于怪物如何与角色战斗。复杂的行为模式是脚本系统要实现的,这个系统只实现简单的决策:战斗还是不战斗、行进路线、用什么样的技能/魔法战斗等。   八、主控制系统   这个系统也不用多作说明了,它由一系列菜单和调用组成。游戏的存储、读取功能也是由这一个系统负责。它掌管整个游戏的进行过程。 脚本起着驱动整个游戏进程的作用, 在单机RPG时代游戏的剧情发展和任务都是由客户端的脚本来驱动的。 目前现有的网游绝大部分也都拥有自己的脚本系统, 或者嵌入某种通用的脚本语言如python,lua, 或者自己设计一套游戏流程/逻辑描述规则也就是自定义的剧情描述语言, 和单机RPG所不同的是网 游的脚本通常运行在服务器端。 游戏中的脚本体系一般以事件为中心, 和宿主代码之间进行相互的交互。 1. 宿主代码会在某些事件发生或者满足一定条件下调用脚本, 这种调用是双方约定好的, 例如调用脚本的某一个函数 2. 脚本被调用后会执行剧情逻辑, 当然做具体的动作的时候还是要调用宿主代码暴露给脚本的接口。 脚本代码和宿主代码相比较, 最大的优势在于脚本更为简单易学, 有利于策划编写游戏逻辑, 而且不需要重新编译程序。 劣势是脚本通常是解释性的或者是类似于java有中间字节码的, 执行速度上远不及宿主二进制代码, 有的资料显示要慢10倍以上。 下面我们来看下剑侠情缘公测服务端1.2的脚本, 其用的是嵌入lua, 我们先找个它的简单来分析下是如何实现的: 巴陵县_长江码头船夫对话.lua function main(sel) if (GetLevel() >= 10) then --等级达到十级 Say("船夫:我有个外号叫做“浪里白条”,说起游水的功夫,全巴陵县我认了第二,就没人敢认第一!所以坐我的船你保管放心,你要去哪个码头呀?", 2, "坐船/WharfFun", "不 坐/OnCancel"); else Say("船夫:对不起,没到十级的新手不能坐船出村。", 0) end end; --------------------------------------------------------------- function OnCancel() Say("船夫:没银子可坐不了船!",0) end; 在以上的脚本中描述了长江码头船夫和玩家之间的对话逻辑, 当玩家点击npc试图和其说话时, 服务器端就会调用该npc对应的脚本中的main函数来驱动游戏的剧情, 其中的GetLevel,Say等就是宿主 代码暴露给脚本的接口, 如果玩家在客户端选了"不坐", 客户端会发送"OnCancel"给服务器来促使其执行OnCancel函数。 下面看一个稍微复杂些的任务脚本, 每行的#后为添加的注释 --两湖区 巴陵县 路人4小渔对话 --巴陵县新手任务:小渔的爹爹 --suyu ------------------------------------------- function main() UTask_world18 = GetTask(46); #从宿主代码得到保存的任务进度状态 if ((GetCamp() == 0) and (UTask_world18
分享到:
评论

相关推荐

    模拟传统的RPG战斗系统(208KB)

    在IT领域,模拟传统的RPG(角色扮演游戏)战斗系统是一项常见的任务,特别是在游戏开发中。这类系统通常包含多个核心组成部分,如角色属性、战斗界面、技能系统、AI控制以及伤害计算等。以下是对这个主题的详细说明...

    RPG纸娃娃系统

    这个系统的核心在于,它独立于游戏世界的实际渲染,使得角色在游戏世界中显示的外观能反映出玩家在角色创建阶段所做的选择。在“RPG纸娃娃系统”中,玩家可以选择不同的服装、饰品、发型等,这些选择不会影响角色的...

    核心系统 RPG 程序样例及测试方法说明--201207181

    在中信银行核心系统升级项目中,RPG(Report Program Generator)是一种被用于编写关键业务逻辑的编程语言,尤其在IBM iSeries(之前称为AS/400)平台上广泛使用。RPG是一种强类型、过程式的语言,以其在处理数据...

    RPG纸娃娃系统 资源较少

    其中,"纸娃娃系统"(Paper Doll System)是RPG游戏中的一个重要组成部分,它负责处理角色外观的变化,比如装备的显示。这个系统使得玩家能够通过装备不同的物品来改变角色的视觉表现,而无需更换整个角色模型,极大...

    Rpg xp物品合成系统脚本

    Rpg xp物品合成系统脚本,本脚本是由Ruby编写,加入到Mian前就行了

    基于RPG游戏制作的网络教学系统

    该基于RPG游戏制作的网络教学系统设计的游戏,主要是通过RPG MAKER软件制作的,其中涉及了一些网络知识,可以检验我们学习网络知识处在什么阶段水平,还可以检测下自己,使我们在学习的过程中而又不缺乏乐趣!

    代码 RPG 技能系统RPG Skill System 1.0

    代码 RPG 技能系统RPG Skill System 1.0代码 RPG 技能系统RPG Skill System 1.0代码 RPG 技能系统RPG Skill System 1.0代码 RPG 技能系统RPG Skill System 1.0代码 RPG 技能系统RPG Skill System 1.0代码 RPG 技能...

    RPGMAKER 主动战斗(即时战斗)插件 ALAPHA ABS MV

    在RPG制作大师MV(RPGMAKER MV)中,开发者和设计师经常寻求创新的方式来增强游戏体验,其中战斗系统是游戏设计的关键部分。"RPGMAKER 主动战斗(即时战斗)插件 ALAPHA ABS MV"正是这样一个工具,它为游戏引入了一...

    RPG游戏素材

    3. **脚本和逻辑**:RPG游戏的剧情和任务通常由脚本语言编写,这些语言如Unity的C#、Unreal Engine的蓝图系统等,用于控制角色行为、事件触发、对话系统等。游戏逻辑是确保游戏规则正确执行的关键,包括战斗系统、...

    代码 RPG商店系统简单示例

    代码 RPG商店系统简单示例代码 RPG商店系统简单示例代码 RPG商店系统简单示例代码 RPG商店系统简单示例代码 RPG商店系统简单示例代码 RPG商店系统简单示例代码 RPG商店系统简单示例代码 RPG商店系统简单示例代码 RPG...

    RPG.rar_RPG_RPG 游戏_RPG代码_游戏 Visual Basic

    此外,战斗系统也是RPG游戏的核心部分,通常涉及回合制战斗、伤害计算、技能施放等内容。在Visual Basic中,可以利用条件语句(If...Then...Else)和循环语句(For...Next、For Each...Next)来实现复杂的战斗逻辑。...

    RPG Maker VX Ace

    它的核心是其事件系统,允许用户通过简单的拖放操作和脚本编辑,实现复杂的剧情触发和游戏逻辑,极大地降低了游戏开发的技术门槛。 RPG Maker VX Ace在前作的基础上进行了诸多改进和增强。其中,最大的亮点之一是其...

    RPG语言学习文档资料

    AS/400 RPG语言以其强大的数据处理能力和易读性著称,是许多企业核心系统的基石。下面将详细介绍RPG语言的学习要点和相关知识点。 1. RPG的基本结构: RPG程序由一系列的程序逻辑块组成,每个块称为一个“逻辑文件...

    全动画战斗系统(rpg)

    全动画战斗系统,是从66RPG下载来的,不过有一个麻烦的地方,就是要制作很多动画。

    分享RPG游戏内容设计和系统构建的计算方法.pdf

    这篇文档分享了计算RPG游戏内容设计和系统构建的方法,主要聚焦于PvE战斗模式,但适用于PvP和其他游戏类型。内容设计涉及大量参数,如武器伤害、技能效果和角色属性等,而在大型游戏世界中,保持数值平衡变得极为...

    rpg maker xp脚本集合

    2. **战斗系统脚本**:RPG的核心在于战斗,这里的脚本可能包括新的战斗模式、技能特效、敌人AI等,让你的战斗过程更加激烈和策略性。 3. **图形与界面脚本**:通过这些脚本,你可以改变游戏的UI设计,创建独特的...

    代码 RPG 库存系统 RPG Inventory C# 1.25

    代码 RPG 库存系统 RPG Inventory C# 1.25代码 RPG 库存系统 RPG Inventory C# 1.25代码 RPG 库存系统 RPG Inventory C# 1.25代码 RPG 库存系统 RPG Inventory C# 1.25代码 RPG 库存系统 RPG Inventory C# 1.25代码 ...

    rpg maker xp脚本

    RPG Maker XP的核心就在于其丰富的脚本系统,它赋予了开发者极大的自由度,能够定制化游戏的每一个细节。然而,随着66rpg网站的关闭,许多宝贵资源的流失让不少开发者感到遗憾。本文将详细介绍RPG Maker XP的脚本...

    Unity 3D的Ultimate MMO RPG Kit 在线 mmo rpg 游戏开发.zip

    3. **战斗系统**:RPG游戏的战斗系统是游戏玩法的核心。这包括攻击逻辑、技能施放、伤害计算等。开发者需要设计并实现一套流畅且策略性的战斗系统,可能涉及到物理引擎、碰撞检测和粒子效果。 4. **世界构建**:MMO...

    幻想RPG游戏图标合集:5250 Fantasy RPG Icons Pack 1.3

    这里是集合 - 幻想RPG图标 它包括50个主题图标。文件:PNG。 在档案中,您将找到带有背景的图标(512×512)和没有背景的单个对象(大小取决于主题)。仅具有背景技能的技能。 2024年2月更新(+500个图标): RPG...

Global site tag (gtag.js) - Google Analytics