资料收集站

SDL

Thursday
Jan 08th
Text size
  • Increase font size
  • Default font size
  • Decrease font size

SDL 用法,第 3部分:图形设计

"Pirates Ho!" 的故事开发和图形设计
 

Sam Lantinga, Loki Entertainment Software
Lauren MacDonell, Loki Entertainment Software

2000 年 4 月

Sam Lantinga 和 Lauren MacDonell 目前正在为 ”Pirates Ho!” 开发故事和进行图形设计,这是他们为 Linux 开发的原创探宝历险角色扮演游戏。在日记的这一部分中,作者讲述了故事开发过程以及他们的灵感源泉。他们还详细说明了如何设计游戏中使用的图像。

好的游戏由故事和画面组成。我们相信某些游戏需要比其它游戏更好的故事。在构思故事时,我们依赖于特殊的开发规则和我们的想像力。而画面同样是技术和创造性过程的结合。

好故事的重要性
某些游戏玩家说好的情节构成了一个好游戏。而另一些说复杂和逼真的图像使游戏玩起来更过瘾。在 "Pirates Ho!" 中,游戏的决定性因素是故事。

为什么要在故事上投入这么多精力?首先,"Pirates Ho!" 是一个冒险游戏,因此游戏中的打斗场面都是围绕着故事情节展开的。如果我们开发的是街霸类游戏,就不必将情节限制到与坏人作战和收集财宝。但构建游戏需要的角色扮演成分需要扣人心弦的故事情节作为人物开发和交互的基础。

根据以往的经验,我们还发现好的打斗和策略游戏有很多,而好的角色扮演游戏却很少。考虑到构思好的故事所要投入的时间、精力和创造力,这倒也合理。但这对于那些除打斗和策略之外还喜欢好的故事的玩家而言却是不幸的。所以,我们决定在最大可能范围内开发所有这些成分。游戏中不仅包括了惊心动魄的打斗和具有挑战性的战略成分,还讲述了一个完整的故事,我们希望玩家能从中丰富其经验。

最后,我们希望 "Pirates Ho!" 能引起广泛的注意。我们有许多热心的读者和影迷朋友,他们并不是游戏迷,但他们说过他们也会因玩过一个很棒的冒险游戏而感到兴奋并由此而产生兴趣。我们希望结合了策略、打斗和角色扮演的 "Pirates Ho!" 能够吸引铁杆游戏迷和非游戏迷。

故事开发过程
在某些情况下,故事开发纯粹是一个创造性过程,而不是技术过程。然而,在 "Pirates Ho!" 中,我们在开发故事时却面临了各种各样的技术问题。

编程技术就引起了一个技术问题。我们不能为玩家设计出游戏引擎不能支持的场景。例如,我们不能将大规模海战直接写到游戏中,因为我们开发的战术战斗系统同时只能处理几艘船之间现实和具体的战斗。因此,它并不适合于开发涉及大规模政治冲突和其它全球性事件的主要情节。幸运的是,光是个别人物之间的关系和小规模战争就已经足够开发出一个好故事了。

我们开发故事也是一个技术过程,就是说,我们系统地和慎重地选择要使用的元素。除了包括所有我们认为有趣和好玩的老一套之外,我们还尝试创建适当的元素组合以促进人物开发和交互,这样才能跟上游戏的发展,使玩家关注下一步会发生什么。我们尝试创建一种故事情节,它能给予玩家很多机会来影响游戏环境并使玩家能方便地开发和改进人物。

构成虚构游戏世界的细节是故事开发的主要部分。我们拟定了游戏的社会和文化背景,以便给我们一个开发主要情节的环境。我们赞成这个世界中应该包括不可思议的事、地方和生物,以及具有魔力的人。但我们还没有确定魔法的范围有多广,以及谁具有魔力。有了魔法就使故事情节的发展变得更为扑朔迷离,使人物具有更广范围的动作。

灵感的源泉
在构思故事时,我们从各种原始资料中汲取灵感。当然,我们开始研究的还是经典海盗故事,如金银岛 (Treasure Island)。这些故事使我们了解这类故事的一般规律:

  1. 好人(相对来说)发现或继承了一张地图,或者接收到指令要去见某人,而这个人最终会给他一张地图。
  2. 好人与坏人发生冲突,坏人想要得到地图并且/或者干掉好人。
  3. 坏人抓住了好人并且/或者从他身边夺走地图。
  4. 好人不得不逃亡并且/或者从坏人那里抢回地图。
  5. 好人找到财宝,杀死或打伤了坏人。

我们的故事符合基本规律,但各个事件可能不是按以上列出的顺序发生,并且每件事可能发生好几次。可选的故事元素包括爱情小插曲(必定有人受到了坏人的绑架),各种好人的联盟,增添喜剧效果的蠢人。我们包括了至少一个可选元素,但您必须等待以找出是哪些。

由于我们的游戏是在一个虚幻世界中,我们还希望结合一些在西方文学作品中不常与海盗联系在一起的元素。在故事中添加异国情调的成分使我们感到游戏更有趣味,我们希望这对玩家也能产生同样的效果。例如,大多数地名都引用了古波斯语。我们从许多故事借鉴了构思,如“天方夜谭”、Terry Pratchett 的 "Discworld" 系列和“南方公园”。

画面
概念艺术画
在设计游戏的图像时,我们首先在纸上画出构思的轮廓。我们的概念艺术画从素描和人物线条画开始,经过了各个阶段的发展,使用了各种介质,逐渐变成了游戏中使用的图像。这个过程非常重要,因为它可以让我们使用不同的视觉元素,并确定实现我们所期望的视觉效果的最佳方法。将构思画在纸上给朋友们看可以帮助我们得到反馈意见。这里有一些 "Pirates Ho!" 概念艺术画的样本:

对话界面

小镇界面

地图界面

图形设计
我们使用 Bryce4、Fractal Design Painter 4 和 GIMP 完成了 "Pirates Ho!" 的一些初始画面。以下是我们创建图像时使用的一些技术的简要描述。

舰船原型
要构建舰船的模型,我们组合了 Bryce 中的基本几何图形。使用布尔运算符来结合使用正和负的形式,我们创建了舰船的所有基本形状。对于舰船的身体,我们生成了一个扁球体,并长方体覆盖其上半部分。在将球体的值设置为正,将长方体的值设置为负,然后将它们并为一组之后,只看得出球体的底部、具有船只形状那一半。我们添加了三根又高又细的圆柱体作为桅杆,然后创建了帆。对于帆,我们组合了一个正的扁圆柱体和一个与之略有错位的负的相似扁圆柱体。这就意味着正的圆柱体正面的边缘部分是可见的,看上去或多或少像鼓起的帆。下一个挑战是构建使舰船有些特征的细节部分,如栏杆、大炮和其它小玩意。

 

布尔图像生成
布尔图像生成是一种图象生成过程,在这种方法中,“正”对象占据的空间被“负”对象扣除,生成一个被挖掉一部分的对象,或者两个或多个对象组合成一个结合了所有起作用对象的质量和体积的合成对象(请参阅 参考资料中的 Bryce4 用户指南)。
 


岛屿
我们使用 Bryce 中的地形编辑工具来创建岛屿。我们使用地形编辑器中的画笔功能徒手画出岛屿的外形。我们使用高地和侵蚀画笔功能创建了不同的地形效果。我们为岛屿使用了不同的材质,最后确定使用“地中海丘陵”,其特征是灌木丛生,到处是岩石;一些看上去像岩石的材质适合于一些更小的岛屿。下一个难题是在岛上添加村庄、小镇、码头和人类社会的标志。主要建筑风格最好用造型简单、粉刷的一两层建筑。这不仅是因为它们易于建模,而且它很像真的地中海村庄。


世界地图
我们使用 Painter 4 创建地图。在研制地图之前,我们花了很长时间观察实际图片和十六和十七世纪地图的复制品。游戏世界地图的所有元素都以我们在研究时发现的特征为基础。我们徒手绘制出岛屿的轮廓,然后不断调整它们,直到我们对颜色和形状感到满意。在将岛屿放到地图上时,我们尝试产生一种适合于旅行和经商的最佳排列,并且使这片区域的地理位置看上去不像是精心规划过的。最后,我们对地图应用纸张材质,并不断编辑它,直至它看上去非常古老。


人物显示屏幕
我们还使用 Painter 创建了人物显示屏幕的原型,这个屏幕将在游戏开始时使用,以显示人物的统计数据和其它信息。为创建此屏幕的背景,我们复制了部分包含木板纹理的图形。我们略微调整了颜色和纹理,并使用经过修改的纹理创建看上去象船体特写的木板。

我们通过导入 Sam 穿着海盗服装的数字照片来创建人物肖像,将它填到大小合适的字段中,并使用 Painter 中的纹理工具应用纸张颗粒以及画笔来改变照片的效果。我们添加了框架,因为屏幕看上去有一点平,而肖像位于没有框架的背景上看起来不舒服。为创建框架,我们采用描金木制框架的图片,逐段复制并粘贴它,直到它大小合适。我们添加了卷轴以突出显示人物的姓名,并使它与屏幕上的其它信息分开。我们通过下载一个卷轴图像来创建它,并更改它的颜色和形状以适合我们的显示屏幕。

然后添加一个值与背景大致相同的半透明字段来显示人物统计数据。我们让它部分透明,因为我们想要显示出木板;那样屏幕的左边的详细信息稍多一点,这就与肖像保持了平衡。为形成对比,我们添加了作为人物统计数据和历史记录的白色文本字符(人物统计数据和角色扮演系统的其它元素会在将来的文章中讨论)。


游戏菜单屏幕
对于主菜单,我们想要有一种类似于发光屏幕的明亮虚幻的效果。我们创建一个海景作为背景,并在工具箱中查找合适的工具制作按钮。我们最终使用 GIMP 创建按钮,GIMP 有许多徽标插件和带免费字体的文本效果。我们不断尝试,直到找到接近我们要求的一种字体和效果。我们决定使用 "Glowing Hot" 和 18 号 Dragonwick 字体。

我们发现 GIMP 生成带层次的徽标,通过操纵这些层次可以对普通徽标输出执行很有趣的操作。我们消除了原来创建框按钮的想法,我们除去了背景层以直接在菜单图像的文本边缘获得一个鲜明效果。我们将图像保存为 PNG 格式图像,PNG 格式保存阿尔法通道,它可以由 SDL_image 库直接读取并以位块方式传送到屏幕。在测试过程中,我们将 SDL 阿尔法通道以位块方式传送的速度提高了将近 100%,并将这些优化放进了 SDL 1.1.3 CVS 代码库中。

我们还发现,通过除去不包括有鲜明效果的那层以外的所有 "Glowing Hot" 效果层,得到了比原来更明亮的按钮文本。我们在主菜单中使用了这种技术,当鼠标移到菜单选项上时,菜单选项就会“变亮”。


游戏的外观
目前,我们已经尝试完成了这样一个外观,它既适合游戏世界的技术层,又或多或少酷似 17 世纪的欧洲。例如,我们创建了符合当时艺术风格的世界地图和人物肖像。至于陆地和海景,我们使用明亮的颜色唤起对热带风光的联想,因为游戏世界中的天气有点像加勒比海气候。当然,我们期望游戏的外观会随着我们添加新元素以及不断改善使用设计工具的技巧而变得更为漂亮。

展望未来
我们刚准备好开始认真进行图形界面工作,我们将在下一篇文章中详细讨论这项工作。游戏中出现的动画片段也正在计划中。下一篇文章还将讨论脚本语言和使用 Lex 和 Yacc 构建用户界面。

参考资料

一些 Linux 上最好的游戏:

 

作者简介
Sam Lantinga 是 Simple DirectMedia Layer (SDL) 库的作者,现在是 Loki Entertainment Software 的首席程序员,这家公司致力于生产最畅销的 Linux 游戏。他与 Linux 和游戏打交道是从 1995 年开始的,从事各种 DOOM! 工具移植,以及将 Macintosh 游戏 Maelstrom移植到 Linux。

Lauren MacDonell 是 SkilledNursing.com 的一位技术作家,也是 "Pirates Ho!" 的合作开发者。在工作、写书或跳舞之余,她照管着她的热带鱼。
Comments (0)Add Comment

Write comment

busy
 

Google 搜索

在线用户

We have 73 guests online