制作手札---RPG是怎样做成的 (一) 自从我们的第一个正式电脑游戏《冲击》完成之后,已经有很长一段时间没有碰这方面的东西了,不过在我心中好象一直在期盼着什么东西……目睹着当今五彩缤纷的游戏世界和国产游戏的尴尬境地,我忽然有一种莫名的冲动,做游戏的冲动。也许是以前有过这方面的经验或者说是教训吧!我知道应该先让自己冷静下来,仔细的想一想我到底应该做什么类型的游戏?怎样做?我的目的又是什么呢?或许是对RPG的偏爱,或许是因为RPG实现起来相对简单而且容易发挥吧(一个好朋友的建议)!所以,我最终还是选择了它。
好,现在就让我先来说说我的计划吧: - 经过反复的思量之后,发现以我现有的条件和实力,想作出一款超越《仙剑》的RPG无疑是个天方夜谭^_^,首先就没有美工,更加谈不上剧本和音乐了!所以,何不退而求其次,把它当作是一场实战演习吧!并且记录下整个游戏的制作过程,和大家一起分享,岂不更妙!
- 开发平台我选择Microsoft的VC++5和DirectX SDK,这是当今的主流游戏开发平台,而且预计在相当长一段时间内都不会被淘汰。但是,在这里我不打算过多的讲解具体的程序代码,那样会浪费太多的时间,更会失去大部分的读者!还好,我们身处在一个资讯相当发达的社会中,Internet连接着你和我,想看游戏或是源程序的朋友可以来我们的主页下载(http:://www.gpgame.com)随时欢迎您的光临!
- 为了让这篇文章不至于枯燥的如同一本C++技术手册,我会尽量从游戏设计的整体规划入手,把叙述的重点放在设计思想的建立和一些技巧的应用上面,而并不局限于某种具体的编程语言。所以即使你不懂编程也一样可以轻松的读懂它,当然,如果你已经是一位程序高手的话,那就更妙了!
- 由于写这篇文章是和游戏的制作同步进行的,所以看上去可能会有一种读日记的感觉,不过也许只有这样的感觉,才是最真实的!
好了,就让我们一步步的去揭开RPG的神秘面纱吧。三月二十六日
星期五:策划并完成剧本创作
故事是RPG的灵魂,每个成功的RPG游戏都是一个动人的故事,当我第一次打爆《仙剑》后,脑海中映像最深的也是那一段凄美的故事。经常想:如果当时李逍遥要是如此……如此……,那么就会这般……这般……(停!我怎么越扯越远呢?真是不好意思^_^)
不过对我们来说,既然是一次练习,游戏的故事情节自然应该是简单而清晰的,这样有助于大家更好的理解游戏设计的思路,而不会被错综复杂的故事弄昏了头。经过一天的冥思苦想,终于弄出了这样一个‘美丽’的故事:J
英雄救美(暂命名)
![](http://www.gmdev.cn/up_files/image/2007-7-10/72651641.gif) | “在很久很久以前,白云城的居民过着富足而安定的生活。这一天,我们故事的主人翁‘小飞刀’正在城中闲逛(游手好闲?),突然传来了一个惊人的消息,十年前被剑圣击败的大魔王又再度出现了,并且还掳走了美丽的公主以此来要挟国王让出王位。这个坏消息迅速传开,全城为之哗然! 相传大魔王生性残忍而且法力高强,当年剑圣也是凭借一把‘圣剑’的威力才将其击败,剑圣死后‘圣剑’也遗失在了城外的森林中,一直没有被人找到。所以大魔王才又变得如此的肆无忌惮! 得知了这个消息后,我们的小英雄当然不会坐视不管,于是马上挺身而出,孤身一人深入虎穴找寻‘圣剑’,最后来到恶魔城击败大魔王救出了美丽的公主!挽救了白云城!结局是‘小飞刀’当上了驸马,和公主过着幸福的生活……(是不是很老套啊!呵呵……^_^)。”
故事情节敲定之后,下面要做的工作就是如何把它变成可以用程序实现的游戏剧本了。经过简单的分析,可知这个游戏一共分为了三个场景:白云城、森林
和
恶魔城,
故事发展是非常简单的单线式拓补结构(可见
图1)。在游戏中一共需要三张地图来表示各个场景,具体的实现方法在后面讨论。
游戏中出现的人物共有‘小飞刀’、白云城居民、森林中的强盗、恶魔城的妖怪、大魔王和公主六类,于是我用下面的这张表就可以清楚的表示出他们之间的强弱关系: | 生命值 | 攻击 | 防御 | 小飞刀 | 50 | 10 | 10 | 白云城居民 | -- | -- | -- | 强盗 | 50 | 15 | 5 | 妖怪 | 100 | 20 | 20 | 大魔王 | 500 | 50 | 50 | 公主 | -- | -- | -- |
| 其中小飞刀的各项能力可通过战斗不断提升,而其他人保持不变。由此可见,要击败大魔王并不是一件容易的事,必须通过不断的战斗以提高小飞刀的能力才行。 因为是单线式RPG,就只有两种结局。一是打败大魔王救出公主(破关结局);二是小飞刀被敌人杀死(失败告终)。
到此为止,整个游戏的框架是不是已经比较清楚的展现在了你的脑海中,而不再是刚开始时的混乱和无从下手?如果是的话,我们今天的任务就顺利完成了,大伙累了一天可要好好休息一下了,让我们明天继续吧。(zzzZZZ………)
|