[转] Roguelike开发建议
该文所述的Roguelike为典型的Roguelike游戏,而非带着Roguelike元素的游戏。
以下内容为他在今年Roguelike开发者大会上的发言文字版。
引言
几年前召开的首届Roguelike开发者大会上,我发表了一个关于自己如何走上开发者道路的演讲,而今天,我想谈谈如何成为一名Roguelike游戏开发者。在玩游戏的过程中,我们总会产生一种冲动,创造一个更好的游戏或是自己的游戏。此番演讲并不是一个教程,更多的是Roguelike游戏的入门与建议。
制作一个Roguelike游戏可能会非常艰难,如同穿越一个障碍重重的地牢。在下面这张图表中,你将在最底层开始自己的开发之旅,而顶部则是你的目标——一个有趣的的游戏。
你的开发之旅很可能就像这张图一样,缺乏明确的设计思路,想到了个什么有意思的玩法就往游戏里面塞,导致整个系统显得臃肿不堪。
你可能竭尽全力也无法到达图中所在的目的地,而代价却是你那一头秀发与大把的光阴。你自己走向了那些力所不逮的领域然后止步不前,最后被现实所挫败,留下一堆烂摊子退出项目。
开发者首先要做的是直奔目标。项目开始前开发者应当有个基本的计划以及开发方向,从一些基本的内容开始做起,等到游戏的核心建立起来后才去考虑拓展那些你认为有趣的内容。
在这篇文章中,我将主要介绍游戏制作的一些基本知识,如何提高建造一个随机地牢的成功率,尤其是当你满怀热情却不知从何着手的时候。
需要注意的是,这里并不教授你如何停下手上正在开发的Roguelike游戏。
编程语言
第一个同时也是最常见的一个问题:使用哪种编程语言?
答案只有两个字:任意。
换个复杂点的说法就是语言并不重要。如果你已经拥有某种编程语言的使用经验,那就用它来开发游戏。语言只是达到目的的手段,几乎任何一种编程语言都有相对应的Roguelike游戏。
如果你实在不确定的话,这里有个建议:
Python的代码示例
Python的易上手让它成为了Roguelike新手的最佳选择,在上面这段代码中不会出现很多奇怪的语法,即便开发者不懂编程或是Python,他们同样能看清楚它在表达什么。
不过,不要因为“简单”这个标签而认为Python拓展性差,你依旧能够利用Python作出精彩的设计。
《Ultima Ratio Regum》就是用Python编写的一款开放世界游戏,虽然游戏并不完整但却令人印象深刻。
《Temple of Torment》同样也是由Python编写的
使用Python制作的Roguelike游戏数以百计,不少开发者均表示通过Python入门,你的开发历程会更为顺畅。
roguelike开发人员所使用的语言列表
当然,如果你能掌握C或C++这类较为复杂的语言的话会更稳当一些,毕竟它们存在时间长、用户多,相对应的,它的参考资料与咨询渠道也更加广泛。C++是我经常使用的语言,这只是因为我对它更为熟悉而已,但我不建议初学者入坑,尤其是当你把目标设定为制作一款Roguelike的时候,在不熟练的情况下你将会花大把的时间在调试上。总之,python会更加适合于Ruguelike开发者,同行的存在也能保证你能获取海量的资源。
Roguelike游戏内容
初学者经常遇到的另一个问题是:打造出自己理想中的Roguelike是否是开发者的第一目标?
我的回答是:NO。
新手入门往往会犯下不少自己都没有意识到的错误,积累经验对于他们来说更为重要。更重要的是,游戏开发的重心并不是一成不变的,它会随着进度的变化而变化,在启动一个规模较大的项目桌子前,最好能有一到两次的完整开发经历。从小项目开始做起也更能体现付出所带来的回报。
现在,让我们重新回到前面的Roguelike游戏流程图,我们需要关注的元素主要有:
这一路径涵盖了一款Roguelike所应具备的基本要素(“comba战斗”一行打问号的原因是因为我认为Roguelike不一定需要战斗内容)。
这些元素能够直接构成一款Roguelike游戏,当然也可以将其视为高拓展性的Roguelike的基石。虽然游戏的拓展内容充满了诱惑力,但在研发前期最好还是把姿态放低一点,这感觉就像在玩Roguelike游戏一样,倘使你毫无目的地在地牢中晃悠,完全凭感觉探索未知领域,那么你也可能会毫无征兆地狗带,并且是一次又一次。虽然这可能是一种带着另类趣味的游玩方式,但开发一款Roguelike游戏跟玩一款游戏是截然不同的,它需要投入更多的时间,保持专注对开发者来说更为重要。
不过,做Roguelike最酷的事情之一就是它能够容纳各式各样的元素,当你认为它对游戏的整体有所裨益的时候,你就可以尝试着把它添加进来。
当游戏的主心骨确定之后,你可以尝试着添加一些风格化的内容
在此之后,你就能在玩家的反馈建议上对游戏内容进行拓展与迭代。
不断丰富的组成要素
最后当你回首的时候,你会发现游戏的体量翻了好几倍,你甚至不清楚这几年自己是怎么度过的……(XD)
o_O
核心机制
一个小型的Roguelike真正需要具备的要素是什么?核心机制,这是整个游戏的起点。用一句话来概括的话就是用来充当原型的作品,它可以直接上手试玩。
游戏的核心机制表明了你对该款Roguelike的独特见解。开发者需要想得更多,这一个游戏机制是否能够支撑起这个游戏的乐趣?再者,这个机制是否能够同样服务于游戏后续添加的内容?玩家在游玩的每一分钟里,有多少时间是与这一机制相关的?倘使游戏内容过于重复而失去了应有的乐趣,那你最好不要再在上面堆砌内容。
可视化的核心机制是Roguelike的设计基础
因此,在游戏Demo中,开发者只需要一些设计一些必要的外在因素(图形、音效等)就行了了,重点在于核心机制的测试。上图中分支也许会让某些人望而生畏,但它仅仅只代表了一种可能性而已,不少Roguelike可以设计得很简单。
为了进一步探讨这个话题,我们可以举个例子:7DRL。
7DRL
“7DRL”是指在7天之内制作一款Rouguelike游戏。每年三月份的时候都会有一群开发者参与到这个活动中来,目前已经持续了14年。只要你能完成游戏的制作,就会有人游玩并给出建议。评审员同样会从不同角度给出游戏评分,比起游戏开发竞赛,7DRL更像是一个自我挑战的舞台。
每年7DRL上出现的Roguelike游戏数量
每年都会有逾百款新Roguelike游戏出现在该活动中。虽然这个舞台并不适合初学者(压力过大),但它确实是个了解Roguelike制作、积累经验的绝佳平台,尤其是在技术方面,时间的压迫感对于开发者而言有着不少帮助。
对于开发者而言,“7DRL”就是一个确立核心机制、并逐步拓展游戏内容的典型案例。在活动中,你能看到不少富有创意的实验性作品。
Knight
比如《Knight》,在游戏中玩家大多数时间都骑在马上,图片中所显示的蓝色区域是玩家唯一能够移动的区域,每个回合玩家都只能移动一个位置。此举提高了游戏的策略性,面对移动中的敌人,玩家需要做好攻击规划以便在移动之时击败他们。
在另一款弹幕躲避类的Roguelike游戏中,你将操纵一艘太空飞船,虽然攻击范围受限,但敌人的弹幕射击速度让你有充足的时间进行预判并闪避。
Seven Day Band
《Seven Day Band》加入了开放式建造的玩法,玩家能够在游戏过程中创造出属于自己的Roguelike。当你遇到新的敌人或物品的时候,你可以对他们的名称以及能力进行编辑。“Band”的意思是指创造属于你的Angband-like游戏。
注:Angband,Roguelike游戏经典之作,暗黑破坏神的创作来源之一。
《Broken Bottle》则是一个以叙事为主的Roguelike,玩家将在末日世界中扮演一名酗酒者,饮酒量与角色的经历有关,而故事的走向则由玩家作出选择。
《Drakefire Chasm》虽然也是地下城冒险游戏,但主角确实一只与冒险者、怪物抗争的龙,游戏取消了物品的设计,单纯依靠升级、打怪提升能力。该游戏仍在更新中。
在《Golden Krone Hotel》(http://humbit.com/gkh/7drl.html)中,你可以在人类与吸血鬼形态间进行切换。该游戏最后走上了商业化道路,一年来在Steam上获得了不错的成绩。
这个是《Cogmind 7DRL》(http://cogmindrl.blogspot.com/)的原型,你将扮演一名机器人,你需要通过找到的以及从其他机器人身上扒下来的零件来完善自己,由于零件容易损坏所以需要频繁地进行更新。后来游戏也成功地走上商业道路。我从未想过自己六年前的7DRL作品最后会成为自己工作的一部分,但这也证明了游戏的核心机制足够有趣。
今年的7DRL上我做的游戏是《POLYBOT-7》(https://kyzrati.itch.io/polybot-7),它跟《Cogmind》有点像,但核心机制完全不同。玩家无法自主选择安装哪些零件,路过的零件会自动吸附到机器人身上,而且它们无法卸下来,只能等他们自然损坏。我原本打算做一款缩小版的《Cogmind》,但随着7DRL的临近,我发觉这想法并不值得去实现——新游戏需要新的、异于它者的核心机制。
7DRL以外的例子
我们还可以看下一些并非在7DRL上制作的游戏,其中某些游戏的制作时间长达数年,它们包含了大量的系统与内容,但你依旧能够看到它们是如何围绕核心机制展开的。
(偷下懒,仅列出游戏名称与地址)
Mage Guild
(http://web.archive.org/web/20160312005831/http://lukossoftware.com/node/8)
Demon
(http://demon.ferretdev.org/)
The Ground Gives Way
(http://www.thegroundgivesway.com/)
Xenomarine
(https://store.steampowered.com/app/676830/Xenomarine/)
NetHack
(https://www.nethack.org/)
资源
开发Roguelike最重要的事情是什么?信息的获取。不仅仅是基础知识,咨询的解答,还包括游戏的进阶、创意的滋养物。
开发者在开发过程中遇到的问题都是不尽相同的,但你可以利用在线资源来解决它。虽然你未必会与其他开发者合作,但一些必要的建议还是应该接受的。这是我开发多年血淋淋的教训!我早期做游戏时属于闭关式开发,进度相当缓慢。
Reddit / RoguelikeDev
RoguelikeDev(https://www.reddit.com/r/roguelikedev/)是全球最大的Roguelike开发者社区,细致的栏目分类能让你找到各种有用的资源。
这些资源包括程序语言的教程,你也可以向那些使用者咨询。
比如文章开头提到的Python,最简易的方法就是使用一个名为“libtcod”的语言库,我们在论坛上有不少相关教程。
与大多数游戏库一样,libtcod自带一些常见的基本功能,比如游戏窗口、键鼠支持、点阵字体、调色板等。但它也有不少专为Roguelike而设的功能,比如地图生成、视角以及寻路功能。
(接下来的一大段文字都在介绍该社区,比较值得一提的是他们整理了一个常见问题解答的帖子,里面包含了主题、系统、日程管理等方方面面的问题,具体如下图。)
Roguelike开发问题集锦
(https://www.reddit.com/r/roguelikedev/wiki/faq_friday)
RogueBasin
该列表仅是一般的目录
除了RoguelikeDev,还有一个存在多年的RogueBasin网站(http://roguebasin.roguelikedevelopment.org/),它的创建者是Santiago Zapata,上面有一堆以开发为重点的文章。
虽然内容有些陈旧,但多数文章仍旧适用于当下。多年前我就是在这里起步的,这里有不少具有启发性的文章。
Roguelike Radio
由Darren Grey、Andrew Doull、Mark Johnson 和其他人主持的播客 Roguelike Radio(http://www.roguelikeradio.com/),上面不仅有与开发相关的主题,同时也有开发者的采访。
Roguelike Radio往期节目列表
知识有了,那么用于实际操作的材料也不会少。
Assets
这是一些我们常用的Assets:
说实话,ASCII在很多方面的表现都很出色,通过前景色与背景色的巧妙组合,你可以创建一些非常漂亮的游戏。
多年来我收集到的ASCII游戏截图,在这里你可以看到它所蕴含的可能性。
当你选择使用ASCII或是与ASCII相似的tilesets时,你可以尝试下我做的编辑器——REXPaint(可与libtcod同时使用)。你能够利用它做一些界面、地图乃至艺术设计。
REXPaint的图标、界面以及样品展示
Tilesets
如果你想不因画面而劝退玩家的话你可以试着使用Tilesets,虽然它们只是一个占位符,但却能拥有极为艳丽的色彩。在RoguelikeDev的侧边栏中你可以找达到一堆Tilesets的链接,虽然多数是免费的,但也有的需要付费。
对于部分开发者而言,tilesets有助于激发他们的想象力。虽然视觉效果并不是让你的游戏脱颖而出的关键所在,但一副好看的皮囊终究是有意义的。
赢在起跑线上
在文章的最后一部分,我想探讨一下Roguelike游戏设计应该从何入手以及关注的点。也许你仅仅只是满足于让自己的角色在屏幕上动起来,再大一点的,就是希望其他人能像你一样喜欢上这款游戏。
你需要运用一些手段来让玩家留意到你的游戏。
前面我们讨论过游戏的核心机制,这是最有效的方法,因为它与游戏玩法的联系是最紧密的,而Roguelike本身就是一种游戏玩法。如果游戏丧失了重复游玩的乐趣,那永久性死亡也就无从谈起。
精致的视觉效果正在传统的Roguelike游戏中并不多见,不过现在有不少游戏朝着这一方向发展,其对玩家的吸引效果也很明显。
但在这里,我想谈的是游戏的主题,这是一个被多数开发者忽视的法子。
题材
市面上有大量幻想题材的地下城游戏,如果想要脱颖而出,最好避开地下城题材。
Roguelikes通常都会有一个良好或是有趣的游戏玩法,但一个独特的题材不仅能让你的游戏别树一帜,同时还能为你提供一个合理解释新机制的机会。大量的历史与神话资源是一个可供挖掘的宝库,业已存在的科幻类Roguelike也难以满足玩家的需求。
近年来,我们看到了不少拥有独特题材的Roguelikes。
MakaiRL中充满了日本神话色彩
The Skies of Bloody April的背景设立在一战
这些都是一些容易引起注意的题材,尤其是当它们可供运行的时候(上述游戏仍处于开发状态。)
已经制作完成的《Lone Spelunker》则拥有不少奇特的洞穴景观。
在roguelike社区中还有一些未见成品的题材,比如海盗。我们也确实看到一款相应的游戏出现——Pirate Rogue,这是论坛史上呼声最高的游戏之一。
遗憾的是,Pirate Rogue停留在了概念阶段,开发者意识到游戏要想成型的话远超他们现有的经验,即便游戏呼声是如此之高。
超级英雄与赛博朋克也是期待值较高的题材。
在这里我想谈一款我印象深刻的游戏,Armoured Commander。
在游戏中你将操控一辆二战坦克,带领士兵们投身战役。开发者Gregory Scott以有限的编程经验投入了游戏的制作中。
一年后,游戏制作完成并被报道在Rock, Paper, Shotgun网站上。
从毫无游戏制作经验到出现在知名游戏网站上,这中间固然有运气加成,但一个独特的题材也是不可或缺的。
此外,开发者还应注意的是你的游戏不一定需要遵循Roguelike的规矩。我们经常看到开发者提出想要制作的游戏创意,却担心是否会因为不像Roguelike而被拒绝。这一点并不重要,有多少玩家,就有多少关于Roguelike的定义。你只要确保游戏能够贯彻自己的设计理念就足够了。
XRLs
除了绞尽脑汁想一个独特的题材外,你还有另外一种现成的方法,我们将其称之为“XRL”。(http://www.roguebasin.com/index.php?title=Roguelikes_based_on_Existing_IPs)该方法基于现有的IP,它将为你节省大量的设计工作量,你只需要考虑如何让它适用于Roguelike游戏。有了XRL,你可以专注于游戏的基础构建,但相对的,它也会限制你的思路。
但千万要注意,你必须小心那些对知识产权特别上心的公司,比如任天堂。XRL更适合于业余爱好或是用来练手的项目,不要想着它能获得任何商业回报。
(我还琢磨着作者不怕东半球最强法务部找上门吗,这就给出解释了。)
当然你也可以借此积攒粉丝,为以后的商业道路奠定基础。
一些帮助你走得更远的建议
“早产”与高产
“早产”与高产是Roguelike发展的常态,将游戏内容凝缩在一个可供游玩的样本中,尽可能早地将其发布出来。这样你能够收到一些有价值的反馈,这对于一个长期项目而言是有利的。
开发者日志
将开发信息集中发布在一个地方,比如博客。它可以帮助你:
整理思路;
从不同角度审视你的工作;
记录开发进程;
建立一个可长期参考的对象;
收到反馈;
建立起互动社群;
我长期这样做,它对于我的帮助特别大。以下是我在博客上讨论过的话题:
要想知道tileset 与ASCII、鼠标与键盘哪个更受欢迎,你可以参考下《Cogmind》的数据:
这里是文章的结尾,同时也是你的Roguelike的开始。
[转] Roguelike开发建议的更多相关文章
- 从" ThinkPHP 开发规范 "看 PHP 的命名规范和开发建议
稍稍水一篇博客,摘抄自Think PHP 的开发规范,很有引导性,我们可以将这些规范实践到原生 PHP 中. 命名规范 使用ThinkPHP开发的过程中应该尽量遵循下列命名规范: 类文件都是以.cla ...
- .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)——转载
原文链接:https://blog.walterlv.com/post/dotnet-high-performance-reflection-suggestions.html ***** 大家都说反射 ...
- 原 .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
大家都说反射耗性能,但是到底有多耗性能,哪些反射方法更耗性能:这些问题却没有统一的描述. 本文将用数据说明反射各个方法和替代方法的性能差异,并提供一些反射代码的编写建议.为了解决反射的性能问题,你可以 ...
- Android IOS WebRTC 音视频开发总结(三二)-- WebRTC项目开发建议
本文主要介绍WEBRTC开发过程中的一些现象,文章来自博客园RTC.Blacker,支持原创,欢迎关注微信公众号blacker,更多详见www.rtc.help 随着移动互联网和智能硬件的快速发展,音 ...
- 给iOS开发者的Android开发建议
本人从事iOS应用开发已经5年有余,直到现在还总是刻意回避Andriod应用的开发.但是不管你信不信,安卓开发还是很有意思的,从iOS转向Android应用开发的跨度并没有你想象的那么大. 现在我把在 ...
- 基于Dlib、OpenCV开发人脸识别程序的开发建议
前言 在去年十月的时候参加了一个小比赛,做了一个人脸识别程序并很意外地获得省里面的一等奖,视频演示链接在这里,有同学想要做这方面的毕业设计or课程设计,发一篇博客来分享一下当时的开发过程. 视频演示链 ...
- Web安全开发建议
版权声明:原创作品,如需转载,请与作者联系.否则将追究法律责任. Web安全问题,很多时候会被人所忽略,安全漏洞造成了很多不必要的维护和开发任务,产生的问题有时候更是致命的. 实际上,只要我们养成一些 ...
- 写给新员工的十点SQL开发建议
1.建立自己的知识体系 摘抄一句话你所拥有的知识并不取决于你记得多少,而在于它们能否在恰当的时候被回忆起来: 做笔记: 把笔记放在可以随时被找到的地方.个人的笔记可以放在印象笔记之类工具上,单位上的笔 ...
- erlang 开发建议
* 确保没有任何编译警告 * Erlang中String采用list实现,32位系统中,其1个字符用8个字节的空间(4个保存value, 4个保存指针).因此string速度较慢,空间占用较大 * 在 ...
随机推荐
- 入门Python实现七夕表白神器
from PIL import Image, ImageDraw, ImageFont font_size = 7 #This var can change the Word's blank size ...
- 大数据软件安装之Hadoop(Apache)(数据存储及计算)
大数据软件安装之Hadoop(Apache)(数据存储及计算) 一.生产环境准备 1.修改主机名 vim /etc/sysconfig/network 2.修改静态ip vim /etc/udev/r ...
- Journal of Proteome Research | SAAVpedia: identification, functional annotation, and retrieval of single amino acid variants for proteogenomic interpretation | SAAV的识别、功能注释和检索 | (解读人:徐洪凯)
文献名:SAAVpedia: identification, functional annotation, and retrieval of single amino acid variants fo ...
- VUE axios请求 封装 get post Http
创建httpService.js 文件 import axios from 'axios'; import { Loading , Message } from 'element-ui'; impor ...
- 用sort 排序
这两天看了一个比较好的sort总结,所以转载了一下 阅读目录 1.sort 2.sort简介 3.sort扩展 1.sort 使用:#include <algorithm> using ...
- CF33C Wonderful Randomized Sum 题解
原题链接 简要题意: 你可以无限次的把该数组的一个前缀和后缀 \(\times -1\),问最终的最大序列和. 这题盲目WA了数次才知道本质 这题89个数据吊打std CF真好啊,发现一个错后面就不测 ...
- 洛谷 P2257 YY的GCD 题解
原题链接 庆祝: 数论紫题 \(T4\) 达成! 莫比乌斯 \(T1\) 达成! yy 真是个 神犇 前记 之前我觉得: 推式子,直接欧拉筛,筛出个 \(\phi\),然后乱推 \(\gcd\) 就行 ...
- python3.4连接mysql数据库的方法
python3.4连接mysql数据库的方法 发布时间:2014-08-04编辑:www.jbxue.com 本文介绍了python3.4连接mysql数据库的方法,在python3.4中不能用mys ...
- iOS 内存管理:从 MRC 到 ARC 实践
对于 iOS 程序员来说,内存管理是入门的必修课.引用计数.自动释放等概念,都是与 C 语言完全不同的. iOS 内存管理的核心是引用计数. 接触 MRC 时遇到最头疼的问题就是:为什么那么多 rel ...
- Day13 流程控制
Linux中的流程控制语句 一.if语句 1.单分支if条件语句 格式:if [ 条件判断式 ] then 程序 fi 注意:1.在Linux中是以if开头,fi结尾.其他地方一般是{开头,} ...