[转载]SDL 用法:Pirates Ho! 的诞生

2024-01-14 12:18
文章标签 用法 转载 诞生 sdl ho pirates

本文主要是介绍[转载]SDL 用法:Pirates Ho! 的诞生,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SDL 用法:"Pirates Ho!" 的诞生
从头开始创建一个 Linux 游戏

Sam Lantinga 和 Lauren MacDonell
Loki Entertainment Software 首席程序员
2000 年 2 月

内容:
构思游戏
研究
越来越快乐!
工具
结束语
参考资料
关于作者


Simple DirectMedia Layer (SDL) 的作者 Sam Lantinga 和 Lauren MacDonell 发布了这个系列的第一篇文章,在这些文章中,他们记录了从头设计和构建 Linux 游戏的过程。在本文中,作者说明了他们如何开始游戏的构思过程。

一切都是在某个星期天下午开始的,当时我们沿着州际 5 号公路从 Stockton 驾车回家。就在 Santa Nella 的南边,我们开始讨论编写我们自己的计算机游戏的可行性。由于有人请我们撰写关于在游戏开发中使用 SDL 的系列文章,我们才有了这个想法,而这是其中的第一篇。由于有一些游戏开发的实际经验,我们认为要熟悉和了解某个过程的唯一方法是亲身体验它,并且用文档记录下各个阶段。接着就是总结我们已经采取的预备步骤,以及游戏开发至今为止我们得到的建议。

构思游戏
6 小时的路程给了我们足够的时间开始激发脑力。首先,我们考虑要编写哪种游戏。街霸?冒险游戏?策略游戏?我们参与角色扮演游戏的历史很长,并且成绩出色,因此我们认为开发冒险游戏应该很有趣。

那么就引出了下一个问题:哪种类型?是科幻冒险?中世纪幻想?探宝历险?提到“探宝历险”时,突然冒出了一些灵感的火花。我们开始想像那种震撼的感觉:大把的金币从指尖滑落……,风帆在头顶拍打,空气中弥漫着盐和海水的味道……,恐惧地看着一个人走在甲板上,独脚海盗船长向远处眺望……。几分钟之后,我们已陷入了沉思中,毫无疑问我们的方向已定。

我们讨论了激烈的舰对舰战斗的各种情形,而那种世界下角色扮演游戏的可行性引起了我们的兴趣。我们边驾驶边讨论了一些游戏的具体细节。我们需要一个全面计划。一个经典计划,并且它要集角色扮演和战术战斗于一身,那就是寻宝。游戏中有几位海盗船长,而玩家将扮演其中一位,每个海盗船长都有一部分寻宝图,而他必须想办法收集其余部分的地图并得到宝藏。

Pirates Ho! 地图草稿
Pirates Ho! 地图草稿

到家之前,假设已经变更了好几次。最初,宝藏是最终目标,但如果宝藏可以带领玩家去寻找新的或更刺激的财宝,那又会如何呢?或许,它是神秘的炼金术配方,可以使铅变成金子?或者是通向另一个空间的门户?可能的情况是无穷无尽的,所以我们决定研究所有海盗电影、书籍,特别是可以弄到手的游戏。因为我们希望获得一些历史和文学方面的观点,以及现有游戏中可能与我们相似的构思。

研究
到家之后,我们做的第一件事就是访问 CompUSA 来寻找游戏。我们找到几个关于海盗的游戏,它们自称包括了战斗、策略和角色扮演成分。我们有一点失望,因为游戏公司似乎事先窃取了我们的灵感,但我们很快就恢复了信心。因为在从 Stockton 回家的途中,我们就进行了激烈的争辩,是使游戏世界符合现实和历史,还是构造一个虚幻的世界,它包括美人鱼、海妖、巨大的旋涡以及类似的东西。我们所看到的正在销售的游戏似乎是符合现实/历史的,所以我们决定走相反的路,使我们的游戏尽可能有幻想。

在购买了一个我们找到的游戏后,我们把它拿回家,只是希望发现它并不如看上去那么好玩。这个海战游戏并没有很好地开发,也没有涉及到角色扮演的成分。很快,我们便认定我们可以使某些部分变得更好。我们搜索了 Internet,以查找其它海盗游戏的演示版及其评论,用它们来帮助确定我们游戏的范围。了解了其它游戏在评论家眼中的亮点和败笔,我们就对当前游戏尚未满足的要求有了一些认识。

我们租借了可以在当地录像带商店中找到的每一部海盗电影来继续进行研究。它们包括 Treasure IslandCutthroat IslandKidnapped,当然还有现代经典片 Muppet Treasure Island。根据这些影片,我们可以找到海盗电影的一些感觉:故事情节、场景、以及现代观众心目中的海盗形象和声音。这些是我们的游戏要考虑的因素。

越来越快乐!
我们在一个素不相识的人家中举行的意大利聚餐会上,惊奇地发现了游戏开发迄今为止最重要的一件事。我们应朋友之邀,而他又是个游戏程序员,所以我们就带上草稿和草图,希望他能花几分钟时间提供给我们一些新的想法。没想到主人和大多数宾客都是游戏程序员、QA 测试人员或热情的玩家,他们都有一些想法可以与我们分享。

我们一开始比较犹豫地提出了我们原来的构思,并解释了我们的想法。但却得到了热情的回应。每个人都有最中意的游戏愿意与我们分享,他们的想法对我们的计划是很好的补充,并且其中也不乏一些建设性的建议。现在,最关注的是游戏应该充满情调。一些使游戏增加情趣的建议包括添加一些随机的有趣事件,如在格斗期间添加一些船员的说明,以及在游戏中不同人物之间建立一组关系。

由于这是一个角色扮演的游戏,定制人物和船员相当重要;人们希望可以使他们的人物个性化,并且可以与船员中的人物交流。每个人都喜欢逻辑问题的构思,并建议可以有多种方法获胜。他们还希望有旁门左道的方法可以玩游戏,并且可以帮助完善人物。

当我们征求游戏的技术方面的反馈时,我们学到了最有价值的一课:在开始操心游戏的内部工作之前,先构建想法和故事。我们的新朋友告诉我们,不管代码如何巧妙复杂,一个不变的事实就是人们喜欢好的故事情节。

工具
我们在设计游戏世界和玩家界面时所遇到的第一个问题是“它看上去像什么?”。游戏开发的第一阶段就是概念艺术图;有一天晚上,我们很晚未眠,草拟出人物和环境的形象。我们从一开始就认定三维环境要比二维好,并且知道要有逼真的地图以及寻宝图。还需要想办法生成人物的图片,通过改照片或者徒手绘制。一旦有了关于外观的灵感,就必须找到适当的工具。幸好,我们家中已经有了 Bryce3D 和 Fractal Design Painter4 的副本,这样就可以在家中进行创作了。

构建游戏时作者的桌面
Pirates Ho! 地图草稿

我们开始研究已经拥有的软件能力,并且在大量讨论和预算分析后,最终购买了包括 Bryce4、Poser4 和 Canoma 在内的软件包(请参阅本文后面的参考资料)。目前,已经成功创建了非常好的 18 世纪风格的游戏世界地图,以及一些三维岛屿,但仍必须想出处理小镇、船只、人物以及其它一些可视元素的算法。我们仍在讨论是否要投资买一部数字像机。

结束语
迄今为止,我们认为已经开了个好头。当然,希望在实现了我们的想法以后有些事可以改变 -- 毕竟,事物很少按人们的意志发展。

在开发过程的最初部分,我们学到了一些东西,并希望它们会有所帮助。首先,不要指望某个下午坐在电脑前,就可以写游戏。这也许适合某些人,但我们大多数人必须 -- 或至少应该 -- 首先创建好的构思。开始时,尽可能多地创建一些构思。如果可以的话,听听别人对您的构思有什么看法 -- 越多越好!

一旦确定了一些构思,尽量多做一些调查,看看市场上是否有同类产品,以及还有哪些需要没有满足。考虑一下,如果您是这个游戏玩家,那么需要什么,有什么期望;是要将游戏卖给别人,还是只想打发空闲时间,搞清楚这一点非常重要。同样,还要查看一些能从中获取灵感的书籍、电影、游戏等。当然,我们不是暗示您去剽窃什么,但从其它资料中汲取灵感并没有错。此外,彻底探索要工作的领域,就可以了解到玩家希望什么样的行为模式、人物、故事情节和场景,以及有什么创新能够带给他们惊喜。也许,还可能发现这个想法已经实现了,那么就可以在创建游戏的新构思时享受别人的劳动成果了。

要选择正确的工具,应考虑一些事情。首先,应根据要创建的事物选择工具,决不能反着干。换句话说,不要跑出去买回一大堆软件,结果让它们永远躺在书架上。想清楚要做什么,然后到处找一找适合这项工作的东西。其次,我们认为不是每个人都舍得花钱买那些我们刚好能负担得起的好软件。我们不会推荐特定软件包,但可以介绍几个好的 Internet 站点(请参阅参考资料),可以在这些站点上找到各种共享软件和低成本应用程序。另一种选择就是在决定购买某个公司的整个软件包之前,先尝试下载和研究该软件的演示版本。

我们仍在学习中,希望您可以从我们的成果中学到一些东西,但这决不是开发游戏的唯一方法。我们认为这个游戏仍有值得改进的地方。只要知道如何实现目标,我们并不介意对游戏做改动。在探索过程中,您将会找到自己的方法。如果发现确实有值得借鉴的地方,我们也乐于听到。

祝好运!

参考资料

  • 请访问 Pirates Ho! 网站
  • 丰富的共享软件资源:
    • http://www.sharewarejunkies.com/:用于几种不同平台的共享软件,以及这些软件的评价
    • 各种软件下载(有各种价格)
    • 一个组织得很好的 Windows、Mac 和 Linux 图形、编程和其它软件包集合
  • 用于三维设计的软件:
    • Bryce4:用于设计三维世界,生成图像,并使其栩栩如生,抽取三维图像
    • Canoma:用于根据扫描的照片或数字照片快速创建逼真的三维模型,但不必具备很多的三维技术
  • SDL:使 Linux 有趣,在 developerWorks:Sam 向您介绍 SDL,以及它的工作原理
  • 介绍 SDL API
  • SCiTech 图形库
  • 下载一些 Linux 上最好的游戏:
    • Maelstrom
    • Hopkins F.B.I.
    • Descent 2
    • Civilization: Call To Power
    • MythII: Soulblighter
    • Railroad Tycoon II
  • 游戏开发者新闻组
  • MythII: Soulblighter 的评论,在 LinuxWorld 杂志中
  • "Games users play",在 LinuxWorld 杂志中
  • "A whole new civilization built on Linux",在 LinuxWorld 杂志中

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

Lauren MacDonell 是一位技术作家,并且是一位业余艺术家。她和 Sam 正在合作开发海盗角色扮演游戏 "Pirates Ho!"。在工作、写书或跳舞之余,她照管着热带鱼。

这篇关于[转载]SDL 用法:Pirates Ho! 的诞生的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/605128

相关文章

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

java之Objects.nonNull用法代码解读

《java之Objects.nonNull用法代码解读》:本文主要介绍java之Objects.nonNull用法代码,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录Java之Objects.nonwww.chinasem.cnNull用法代码Objects.nonN

JavaScript Array.from及其相关用法详解(示例演示)

《JavaScriptArray.from及其相关用法详解(示例演示)》Array.from方法是ES6引入的一个静态方法,用于从类数组对象或可迭代对象创建一个新的数组实例,本文将详细介绍Array... 目录一、Array.from 方法概述1. 方法介绍2. 示例演示二、结合实际场景的使用1. 初始化二

一文带你了解SpringBoot中启动参数的各种用法

《一文带你了解SpringBoot中启动参数的各种用法》在使用SpringBoot开发应用时,我们通常需要根据不同的环境或特定需求调整启动参数,那么,SpringBoot提供了哪些方式来配置这些启动参... 目录一、启动参数的常见传递方式二、通过命令行参数传递启动参数三、使用 application.pro

关于@RequestParam的主要用法详解

《关于@RequestParam的主要用法详解》:本文主要介绍关于@RequestParam的主要用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 基本用法2. 默认值3. 可选参数4. 绑定到对象5. 绑定到集合或数组6. 绑定到 Map7. 处理复杂类

SQL中的CASE WHEN用法小结

《SQL中的CASEWHEN用法小结》文章详细介绍了SQL中的CASEWHEN函数及其用法,包括简单CASEWHEN和CASEWHEN条件表达式两种形式,并通过多个实际场景展示了如何使用CASEWH... 目录一、简单CASE WHEN函数:二、CASE WHEN条件表达式函数三、常用场景场景1:不同状态展

Linux find 命令完全指南及核心用法

《Linuxfind命令完全指南及核心用法》find是Linux系统最强大的文件搜索工具,支持嵌套遍历、条件筛选、执行动作,下面给大家介绍Linuxfind命令完全指南,感兴趣的朋友一起看看吧... 目录一、基础搜索模式1. 按文件名搜索(精确/模糊匹配)2. 排除指定目录/文件二、根据文件类型筛选三、时间

Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)

《Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)》:本文主要介绍Java导入、导出excel的相关资料,讲解了使用Java和ApachePOI库将数据导出为Excel文件,包括... 目录前言一、引入Apache POI依赖二、用法&步骤2.1 创建Excel的元素2.3 样式和字体2.

kotlin中的行为组件及高级用法

《kotlin中的行为组件及高级用法》Jetpack中的四大行为组件:WorkManager、DataBinding、Coroutines和Lifecycle,分别解决了后台任务调度、数据驱动UI、异... 目录WorkManager工作原理最佳实践Data Binding工作原理进阶技巧Coroutine