浅谈角色扮演游戏引擎的制作过程
赵志成
(黑龙江信息技术职业学院 计算机工程系,黑龙江 哈尔滨 150086)
|
摘 要:本文通过介绍游戏引擎的设计原理和角色扮演游戏的制作知识使读者了解游戏引擎就是为了游戏运行而用代码编写的一个游戏运行的 平台,游戏制作的一般过程包括企划构建、美工与音乐制作、程序设计和后期的测试更新等。
关键词:角色;游戏引擎;DirectX;消息处理
角色扮演游戏是深受广大游戏迷们喜爱的一种游戏,尤其是近几年网络游戏大多是以角色扮演为主,它以独特的互动性和故事性吸引了无数的玩家。向人们提供了超出现实生活的广阔的虚拟世界,使人们能够尝试扮演不同的角色,去经历和体验各种不同的人生旅程或奇幻经历。在玩过许多游戏后,许多玩家都不再仅仅满足于一个游戏玩家的身份,而会思考游戏是如何制作的,并且打算制作一个自己的游戏,下面介绍角色扮演游戏引擎的原理与制作,希望能对游戏制作爱好者有所帮助。
1 游戏引擎的原理
游戏引擎是一个为运行某一类游戏的机器设计的能够被机器识别的代码(指令)集合即游戏软件。它像一个发动机,控制着游戏的运行。一个游戏作品可以分为游戏引擎和游戏资源两大部分。游戏资源包括图像,声音,动画等部分,用公式可表示:游戏=引擎(程序代码)+资源(图像,声音,动画等)。
2 角色扮演游戏的制作
一个完整的角色扮演游戏的制作从流程上来说可以分为:企划构建,美工与音乐制作,程序设计,后期的测试更新等。
企划构建主要任务是设计游戏的主题,类型以及规模等,并分析游戏的复杂性有多大,玩家群体等因素。
美工与音乐制作主要是根据游戏的时代背景与主题设计游戏的场景及各种角色的图象及游戏的音乐与音效。
程序设计的任务是用某种编程语言来完成游戏的设计,并与策划配合,达到预期的目的。
后期的测试更新也是非常重要的一个环节,对于一个几十人花费几个月甚至是几年时间制作的游戏,测试往往能找到许多问题,只有改进程序才能确保游戏的安全发行。
2.1开发工具与主要技术
2.1.1 软件开发工具
游戏程序开发工具有很多,在不同游戏平台上有不同的开发工具。在个人计算机上,可以用目前流性的软件开发工具,比如:C,C++,VC++,Java,C++ Builder等。由于Windows操作系统的普及和其强大的多媒体功能,越来越多的游戏支持Windows操作系统。由于VC是微软的产品,用它来编写Windows程序有强大的程序接口和丰富的开发资源的支持,加之VC严谨的内存管理,在堆栈上良好的分配处理,生成代码的体积小,稳定性高的优点,所以VC++就成为目前游戏的主流开发工具。
2.1.2 DirectX组件的知识
Windows系统有一个主要优点是应用程序和设备之间的独立性。然而应用程序的设备无关性是通过牺牲部分速度和效率的到的,Windows在硬件和软件间添加了中间抽象层,通过这些中间层我们的应用程序才能在不同的硬件上游刃有余。但是,我们因此而不能完全利用硬件的特征来获取最大限度的运算和显示速度。这一点在编写Windows游戏时是致命的,DirectX便是为解决这个问题而设计的。DirectX由快速的底层库组成并且没有给游戏设计添加过多的约束。微软的DirectX软件开发工具包(SDK)提供了一套优秀的应用程序编程接口(APIs),这个编程接口可以提供给你开发高质量、实时的应用程序所需要的各种资源。 DirectX的6个组件分别是:
DirectDraw: 使用页面切换的方法实现动画,它不仅可以访问系统内存,还可以访问显示内存。
Direct3D: 提供了3D硬件接口。
DirectSound: 立体声和3D声音效果,同时管理声卡的内存。
DirectPlay: 支持开发多人网络游戏,并能处理游戏中网络之间的通信问题。
DirectInput: 为大量的设备提供输入支持。
DirectSetup: 自动安装DirectX驱动程序。
随着DirectX版本的提高,还增加了音乐播放的DirectMusic。
2.1.3 A*算法
在许多游戏中要用鼠标控制人物运动,而且让人物从目前的位置走到目标位置应该走最短的路径。这就要用到最短路径搜索算法即A*算法了。
A*算法实际是一种启发式搜索,所谓启发式搜索,就是利用一个估价函数评估每次的的决策的价值,决定先尝试哪一种方案。如果一个估价函数可以找出最短的路径,我们称之为可采纳性。A*算法是一个可采纳的最好优先算法。A*算法的估价函数可表示为:
f (n) = g(n) + h(n)
这里,f(n)是节点n的估价函数,g(n)是起点到终点的最短路径值,h(n)是n到目标的最断路经的启发值。
其它技术还有粒子系统,音频与视频的调用,图像文件的格式与信息存储等,大家可以在学好DirectX的基础上逐渐学习更多的技术。
2.2游戏的具体制作
2.2.1地图编辑器的制作
角色扮演游戏往往要有大量的场景,场景中根据需要可以有草地,湖泊,树木,房屋,家具等道俱,由于一个游戏需要很多场景且地图越来越大,为了节省空间,提高图像文件的可重用性,角色扮演游戏的画面采用很多重复的单元(可以叫做“图块”)所构成的,这就要用到地图编辑器了。我们在制作游戏引擎前,要完成地图编辑器的制作。在角色扮演游戏里,场景的构成,是图块排列顺序的记录。首先制定一个场景构成文件的格式,在这个文件里记录构成场景所需要的图块的排列顺序,因为我们已经为每个图块建立了索引,所以只需要记录这些索引就可以了。一个场景的构成,是分成几层来完成的:地面,建筑和植物,家具摆设,和在场景中活动的人物或者物体(比如飘扬的旗帜),按照一定的顺序把它们依次显示到屏幕上,就形成了一个丰富多彩的场景。我们可以用数组来表示地图场景的生成过程。
2.2.2 游戏的模块的划分
游戏按功能分为:消息处理系统、场景显示及行走系统、打斗系统三大主要部分。其中又以消息处理系统为核心模块,其余部分紧紧围绕它运行。
(1)消息处理系统
消息处理系统是游戏的核心部分。游戏用到的消息处理系统先等待消息,然后根据收到的消息转到相应的函数进行处理。比如:主角碰到敌人后,我们就让程序产生‘打斗消息’,消息处理系统收到这个消息后就会马上转到打斗模块中去。
(2)场景显示及行走系统
作为角色扮演游戏,其所有事件的发生几乎都是和场景有关,例如:不同的地方会碰到不同的敌人、与不同的人对话得知不同的事情等。鉴于这部分的重要性,我们可再将它划分为:背景显示、行走和事件发生三个子模块,分别处理各自的功能。
(3)打斗系统
绝大多数的角色扮演都是有战斗存在的,因此,打斗系统就成为角色扮演游戏系统中很重要的一环。有不少角色扮演游戏采用回合制打斗方式,因为实现起来较为简单。和打斗紧密相关的是升级,通常在一场战斗结束后,主角的经验值都会增加。而当经验值到达一定程度时,角色就升级了。
以上介绍了角色扮演游戏的制作,使读者对角色扮演游戏的制作有一个基本的了解。3D游戏引擎设计与实现。今天终于实现了UI的显示,但还是比较初步的,已经可以显示按钮在窗口上,还没有添加事件响应,不过也会很快实现的.到此,基本上UI方面没有什么大的问题,还要解决输入法方面问题,因为在游戏中可能要输入中文,让所有游戏玩家可以相互聊天。
参考文献
[1] 吕建德.C++游戏程序设计概论.中国铁道出版社,2006:1-28页
[2] 叶思义等.游戏设计全方位学习.中国铁道出版社,2006:87-99页
[3] 张简毅仁.全方位3D游戏设计——游戏引擎与游戏开发实例剖析.中国铁道出版社,2005:12-54页
作者简介:
赵志成(1982-),男,黑龙江信息技术职业学院,计算机工程系,助教,研究方向或专业方向:计算机软件设计及游戏开发。
关闭本页
|