浅淡RPG游戏开发的关键技术

2011-04-16 09:15于水华
电脑与电信 2011年2期
关键词:引擎游戏系统

于水华

(上海对外贸易学院,上海201620)

1.引言

电脑游戏开发是故事、艺术、音乐、声音效果、动画及程序设计技术的有机结合,以产生一种动态的、具有很强交互性的电子娱乐形式。RPG游戏(角色扮演游戏),即游戏的形式是通过故事剧情牵引来使玩家融入一个主角所存在的虚拟世界。

2.RPG游戏开发的关键技术

2.1 RPG游戏设计概述

RPG游戏即为角色扮演游戏,它其实是一种由游戏玩家自己扮演角色的游戏。可以用一个三维坐标系统来定位RPG游戏,所有类型的RPG游戏位于这个坐标系所界定的三维空间中。如图1所示。

图1 RPG游戏的三维空间

剥去各种RPG游戏的外部特性,我们可以看到RPG游戏的普适模型。如图2为RPG游戏的拓扑结构图。这是一种单线发展的RPG游戏。它由两部分构成:一部分是主控部分,也就是交互部分。当主控部分起作用时,游戏的操纵权被授予了游戏者,游戏者可以充分利用游戏所赋予的交互手段进行输入;另一部分是设定的被动的剧情,由线性排列的一连串事件组成。

图2 RPG游戏的拓扑结构

对于一款RPG游戏的设计要包括以下一些要素:场景、角色、道具、事件、对白、音效与音乐、界面、规则、命名。对应于各个要素,一个完整的角色扮演游戏的制作从大的分工来说可以分为:策划、程序设计、美工、音乐制作以及项目管理,后期的测试等。

2.2 游戏策划与架构

在设计一款游戏时,在游戏初始阶段就要考虑好所要设计游戏的风格、情节、人物、环境和主题。流程如下:首先地图设计者需要设计出地图的大小、样式,交由原画去画出原版,然后进行2D、3D制作。2D和3D有可能根据地图的需要制作物件、图素、遮罩、特效等,交给策划用地图编辑器进行制作。如图3是用相应的地图编辑器标记出掩码,形成不可达区域。

图3 地图编辑器中的障碍

游戏策划要做以下几件事情,首先,地图与场景设计。场景设计之初需要根据游戏剧情设定风格和氛围。场景的大小需要根据游戏中人物移动的距离来确定。在一个游戏中,一般地图的大小是固定的,要么全屏,要么固定大小,因为改变窗口大小会给显示带来很多麻烦。

然后,地图拼接。地图的拼接时需要注意,按照示意图来进行自由发挥。但同一屏幕最好不要出现两个相同的物体。山与水或者小路不能笔直或者直角型的弯曲,尽量多做和谐的曲折,尽量圆滑。地图拼接之后,遇到悬崖、水面等地方掩码要多打一些,防止人物影子落在空处。太窄的地方,干脆全部打上掩码,防止人物被卡在上面,如图3所示,海面用红点打上掩码,是不可达区域。

最后,地图设置。地图的设置上,例如NPC、地图之间的连接等都需要去设置。连接其它地图的时候要注意方向,例如往上走的出口,结果来到了下一张地图的顶部就感觉很怪异。地图的连接口要放在明显的路,或者凹进去的地方,这样容易引导游戏者找到出口。NPC放置尽量放在有参照物的地图上,例如一棵大树旁,一个亭子里,这样玩家容易找到NPC并记住这个位置。

游戏中世界的构造除了地图以外,还牵涉到人物、怪物的分布。笔者在场景设置时将NPC设置到了地图的特殊位置上,如两个阶梯的交界处、某个平原上等。一般在设计角色位置的时候,要考虑到根据实际情况来分布设计。

2.3 图形图像处理

笔者所指的图形图像处理,一是指游戏中所需图像素材单元的处理,二是素材单元组成我们所看到的场景画面的处理。

游戏画面可以说是由一个一个的场景组成的,每个场景都有一些图形图像,如背景图、角色图、道具图,那么在游戏中就有大量的特殊的图片要获得并处理。在RPG游戏里,场景的构成,是图块排列顺序的记录。首先制定一个场景构成文件的格式,这里又用到了相应的场景编辑器,见图4中场景编辑器界面,它用来设置地图上各个NPC的位置、添加道具列表、添加出口列表等工作,在这个文件里记录构成场景所需要的图块的排列顺序,因为我们已经为每个图块建立了索引,所以只需要记录这些索引就可以了。一个场景的构成,是分成几层来完成的:地面,建筑和植物,家具摆设和在场景中活动的人物或者物体,按照一定的顺序把它们依次显示到屏幕上,就形成了一个丰富多彩的场景。

图4 场景编辑器

2.4 游戏引擎的构建

游戏引擎是一个为运行某一类游戏的机器设计的能够被机器识别的代码(指令)集合。它像一个发动机,控制着游戏的运行。一个游戏作品可以分为游戏引擎和游戏资源两大部分。游戏资源包括图像、声音、动画等部分,列一个公式就是:游戏=引擎(程序代码)+资源(图像、声音、动画等)。游戏引擎则是按游戏设计的要求按顺序调用这些资源。

图5 总体结构图

(1)开发工具

由于Windows操作系统的普及及其强大的多媒体功能,越来越多的游戏支持Windows操作系统。由于VC++是微软的产品,用它来编写Windows程序有强大的程序接口和丰富的开发资源的支持,加之VC严谨的内存管理、在堆栈上良好的分配处理、生成代码的体积小、稳定性高的优点,所以VC++就成为目前游戏的主流开发工具。

DirectX(简称:DX)是微软推出的一套基于Windows系统的多媒体应用程式接口,是VC的一个扩充游戏开发包,主要用于游戏设计时直接操作硬件设备,可加快游戏运行速度。在开发中,DX分为两个部分,一个是运行库,通过DX编译出来的程式必须要有运行库的支持,另外一个是开发库,也就是常说的SDK,这部分是在编译DX程序中是必需的。笔者所开发的小游戏DEMO使用GAF(Game Application Framework游戏应用程式框架)开发包来进行设计,GAF开发包是由“第二人生游戏工作室”开发的,它是对DirectX包装后的类库,它把游戏设计中经常用到的DirectX功能包装起来,能代替DirectX用于游戏设计中。

游戏引擎是游戏的核心部分,因此它必须能够提供游戏开发所需要的大部分接口。游戏开发人员为了开发一款游戏,不会完完全全从最底层做起,因为游戏开发也是一种软件开发,类似的游戏之间有着很多共同的地方,把这些共同的地方抽取出来作为可重用的部分以供日后开发游戏之用,可以大大提高游戏的开发速度和游戏的稳定性能。

(2)A*算法

在许多游戏中要用鼠标控制人物运动,而且让人物从目前的位置走到目标位置应该走最短的路径。这就要用到最短路径搜索算法即A*算法了。

A*算法实际是一种启发式搜索,所谓启发式搜索,就是利用一个估价函数评估每次的决策的价值,决定先尝试哪一种方案。如果一个估价函数可以找出最短的路径,我们称之为可采纳性。A*算法是一个可采纳的最好优先算法。A*算法的估价函数可表示为:

这里,f(n)是节点n的估价函数,g(n)是起点到终点的最短路径值,h(n)是n到目标的最断路经的启发值。

(3)模块组成

游戏引擎要提供游戏开发所需要的大部分接口。它最基本的模块有以下三个:消息处理系统、场景显示(及行走)系统、进程系统。当然,不同的游戏引擎,根据其所实现的功能、游戏的规模等的不同,它的模块也有所不同。笔者所使用的引擎系统主要由这三个模块组成,除了这三个模块外,还有脚本处理模块、考试模块等。

消息处理系统是游戏的核心部分。游戏用到的消息处理系统先等待消息,不断检测游戏中要处理的消息,然后根据收到的消息转到相应的函数进行处理。比如:主角碰到敌人后,我们就让程序产生“打斗消息”,消息处理系统收到这个消息后就会马上转到打斗模块中去。场景显示系统是RPG要素重要部件之一。它根据一定的次序控制背景、角色、道具、对白等要素添加到场景的顺序,它承担整个游戏框架的场景状态的操作、控制。作为RPG游戏,其所有事件的发生几乎都是和场景有关,例如:不同的地方会碰到不同的敌人、与不同的人对话得知不同的事情等。进程系统负责游戏的初始化,包括窗口图标、窗口宽度、窗口高度、窗口标题、窗口风格等的设置。游戏结束时负责释放程序各种资源。进程控制系统也控制游戏主控循环中的状态转换,它同时与消息处理系统和场景显示系统进行消息传递和转化。

3.系统技术实现的前期准备

3.1 游戏剧本设计

角色扮演游戏就像小说一样,缺少不了剧情,玩家跟着剧情的进展来领略游戏的风采。在剧本的设计前,设计者已经有了游戏故事的构思。剧本的设计可以从剧情的框架开始着手。列出准备出场的人物名单、准备构成游戏剧情的几个重要事件和需要涉及到的地图。这样游戏基本上已经有了一个简单的故事框架。接下来用上面的素材,把构思还比较单薄的主线故事点和人物窜接起来。然后把出场人物,场景需求做成文档,进入一个很重要的中间步骤——游戏剧本制作。

3.2 游戏脚本设计

游戏引擎并不关心游戏内容具体是什么,它只是负责将描述游戏内容的数据读取出来,然后“扔”到某个地方就行了,所以需要以某种方式将游戏内容交给外部文件来加以处理。这样一来,就只需要编写一段短小而又紧凑的代码并在某一段时间将所有这些物体描述由硬盘加载进来就行了,这些代码可称之为脚本。由于RPG游戏更适合使用脚本,脚本的设计是本游戏不可缺少的部分。

4.小结

RPG游戏的开发涉及的知识还很多,本文只根据笔者开发的RPG游戏所涉及的关键技术进行了阐述。系统开发中有以下两点体会,一是在游戏引擎的选择上,由于游戏引擎框架有很多,需要对各种框架加以筛选,选择适合项目需求、规模和未来需求发展方向的框架;二是游戏脚本的运用上,考虑到系统会有变动的部分,游戏的脚本语言为其扩展和修改提供了很大的空间。

[1]坂本千寻著,博硕文化译.Visual C++专业游戏程序设计[M].北京:中国铁道出版社,2004.

[2]叶展,叶丁.游戏的设计与开发[M].北京:人民交通出版社,2003.

[3]尚俊杰等.“轻游戏”:教育游戏的希望和未来[J].电化教育研究,2005,(1).

[4]荣钦科技.Visual C++游戏设计[M].北京:科海电子出版社,2003.

[5]坂本千寻.Visual C++角色扮演游戏程序设计[M].博硕文化译.北京:中国铁道出版社,2004.

[6]肖永亮.Visual C++游戏编程基础[M].北京:电子工业出版社,2006.

猜你喜欢
引擎游戏系统
Smartflower POP 一体式光伏系统
WJ-700无人机系统
基于PowerPC+FPGA显示系统
蓝谷: “涉蓝”新引擎
连通与提升系统的最后一块拼图 Audiolab 傲立 M-DAC mini
数独游戏
疯狂的游戏
爆笑游戏
第八章直接逃出游戏
无形的引擎