前言:
目前姐妹们对“php制作小游戏的代码”大致比较关怀,各位老铁们都需要了解一些“php制作小游戏的代码”的相关文章。那么小编在网摘上网罗了一些有关“php制作小游戏的代码””的相关文章,希望朋友们能喜欢,各位老铁们一起来了解一下吧!文/浔阳编译
作者介绍:Josh Ge,Roguelike游戏开发者,近7年发布了多款Roguelike游戏,如Cogmind(发布于Steam平台,好评率96%),Cogmind 7DRL,POLYBOT-7,REXPaint,X @ COM等。此外,他还是全球最大的Roguelike开发者社区的协助者。
该文所述的Roguelike为典型的Roguelike游戏,而非带着Roguelike元素的游戏。
以下内容为他在今年Roguelike开发者大会上的发言文字版。
引言
几年前召开的首届Roguelike开发者大会上,我发表了一个关于自己如何走上开发者道路的演讲,而今天,我想谈谈如何成为一名Roguelike游戏开发者。在玩游戏的过程中,我们总会产生一种冲动,创造一个更好的游戏或是自己的游戏。此番演讲并不是一个教程,更多的是Roguelike游戏的入门与建议。
制作一个Roguelike游戏可能会非常艰难,如同穿越一个障碍重重的地牢。在下面这张图表中,你将在最底层开始自己的开发之旅,而顶部则是你的目标——一个有趣的的游戏。
你的开发之旅很可能就像这张图一样,缺乏明确的设计思路,想到了个什么有意思的玩法就往游戏里面塞,导致整个系统显得臃肿不堪。
你可能竭尽全力也无法到达图中所在的目的地,而代价却是你那一头秀发与大把的光阴。你自己走向了那些力所不逮的领域然后止步不前,最后被现实所挫败,留下一堆烂摊子退出项目。
开发者首先要做的是直奔目标。项目开始前开发者应当有个基本的计划以及开发方向,从一些基本的内容开始做起,等到游戏的核心建立起来后才去考虑拓展那些你认为有趣的内容。
在这篇文章中,我将主要介绍游戏制作的一些基本知识,如何提高建造一个随机地牢的成功率,尤其是当你满怀热情却不知从何着手的时候。
需要注意的是,这里并不教授你如何停下手上正在开发的Roguelike游戏。
编程语言
第一个同时也是最常见的一个问题:使用哪种编程语言?
答案只有两个字:任意。
换个复杂点的说法就是语言并不重要。如果你已经拥有某种编程语言的使用经验,那就用它来开发游戏。语言只是达到目的的手段,几乎任何一种编程语言都有相对应的Roguelike游戏。
如果你实在不确定的话,这里有个建议:
Python的易上手让它成为了Roguelike新手的最佳选择,在上面这段代码中不会出现很多奇怪的语法,即便开发者不懂编程或是Python,他们同样能看清楚它在表达什么。
不过,不要因为“简单”这个标签而认为Python拓展性差,你依旧能够利用Python作出精彩的设计。
《Ultima Ratio Regum》就是用Python编写的一款开放世界游戏,虽然游戏并不完整但却令人印象深刻。
使用Python制作的Roguelike游戏数以百计,不少开发者均表示通过Python入门,你的开发历程会更为顺畅。
当然,如果你能掌握C或C++这类较为复杂的语言的话会更稳当一些,毕竟它们存在时间长、用户多,相对应的,它的参考资料与咨询渠道也更加广泛。C++是我经常使用的语言,这只是因为我对它更为熟悉而已,但我不建议初学者入坑,尤其是当你把目标设定为制作一款Roguelike的时候,在不熟练的情况下你将会花大把的时间在调试上。总之,python会更加适合于Ruguelike开发者,同行的存在也能保证你能获取海量的资源。
Roguelike游戏内容
初学者经常遇到的另一个问题是:打造出自己理想中的Roguelike是否是开发者的第一目标?
我的回答是:NO。
新手入门往往会犯下不少自己都没有意识到的错误,积累经验对于他们来说更为重要。更重要的是,游戏开发的重心并不是一成不变的,它会随着进度的变化而变化,在启动一个规模较大的项目桌子前,最好能有一到两次的完整开发经历。从小项目开始做起也更能体现付出所带来的回报。
现在,让我们重新回到前面的Roguelike游戏流程图,我们需要关注的元素主要有:
这一路径涵盖了一款Roguelike所应具备的基本要素(“comba战斗”一行打问号的原因是因为我认为Roguelike不一定需要战斗内容)。
这些元素能够直接构成一款Roguelike游戏,当然也可以将其视为高拓展性的Roguelike的基石。虽然游戏的拓展内容充满了诱惑力,但在研发前期最好还是把姿态放低一点,这感觉就像在玩Roguelike游戏一样,倘使你毫无目的地在地牢中晃悠,完全凭感觉探索未知领域,那么你也可能会毫无征兆地狗带,并且是一次又一次。虽然这可能是一种带着另类趣味的游玩方式,但开发一款Roguelike游戏跟玩一款游戏是截然不同的,它需要投入更多的时间,保持专注对开发者来说更为重要。
不过,做Roguelike最酷的事情之一就是它能够容纳各式各样的元素,当你认为它对游戏的整体有所裨益的时候,你就可以尝试着把它添加进来。
在此之后,你就能在玩家的反馈建议上对游戏内容进行拓展与迭代。
最后当你回首的时候,你会发现游戏的体量翻了好几倍,你甚至不清楚这几年自己是怎么度过的……(XD)
核心机制
一个小型的Roguelike真正需要具备的要素是什么?核心机制,这是整个游戏的起点。用一句话来概括的话就是用来充当原型的作品,它可以直接上手试玩。
游戏的核心机制表明了你对该款Roguelike的独特见解。开发者需要想得更多,这一个游戏机制是否能够支撑起这个游戏的乐趣?再者,这个机制是否能够同样服务于游戏后续添加的内容?玩家在游玩的每一分钟里,有多少时间是与这一机制相关的?倘使游戏内容过于重复而失去了应有的乐趣,那你最好不要再在上面堆砌内容。
因此,在游戏Demo中,开发者只需要一些设计一些必要的外在因素(图形、音效等)就行了了,重点在于核心机制的测试。上图中分支也许会让某些人望而生畏,但它仅仅只代表了一种可能性而已,不少Roguelike可以设计得很简单。
为了进一步探讨这个话题,我们可以举个例子:7DRL。
7DRL
“7DRL”是指在7天之内制作一款Rouguelike游戏。每年三月份的时候都会有一群开发者参与到这个活动中来,目前已经持续了14年。只要你能完成游戏的制作,就会有人游玩并给出建议。评审员同样会从不同角度给出游戏评分,比起游戏开发竞赛,7DRL更像是一个自我挑战的舞台。
每年都会有逾百款新Roguelike游戏出现在该活动中。虽然这个舞台并不适合初学者(压力过大),但它确实是个了解Roguelike制作、积累经验的绝佳平台,尤其是在技术方面,时间的压迫感对于开发者而言有着不少帮助。
对于开发者而言,“7DRL”就是一个确立核心机制、并逐步拓展游戏内容的典型案例。在活动中,你能看到不少富有创意的实验性作品。
比如《Knight》,在游戏中玩家大多数时间都骑在马上,图片中所显示的蓝色区域是玩家唯一能够移动的区域,每个回合玩家都只能移动一个位置。此举提高了游戏的策略性,面对移动中的敌人,玩家需要做好攻击规划以便在移动之时击败他们。
在另一款弹幕躲避类的Roguelike游戏中,你将操纵一艘太空飞船,虽然攻击范围受限,但敌人的弹幕射击速度让你有充足的时间进行预判并闪避。
《Seven Day Band》加入了开放式建造的玩法,玩家能够在游戏过程中创造出属于自己的Roguelike。当你遇到新的敌人或物品的时候,你可以对他们的名称以及能力进行编辑。“Band”的意思是指创造属于你的Angband-like游戏。
注:Angband,Roguelike游戏经典之作,暗黑破坏神的创作来源之一。
《Broken Bottle》则是一个以叙事为主的Roguelike,玩家将在末日世界中扮演一名酗酒者,饮酒量与角色的经历有关,而故事的走向则由玩家作出选择。
《Drakefire Chasm》虽然也是地下城冒险游戏,但主角确实一只与冒险者、怪物抗争的龙,游戏取消了物品的设计,单纯依靠升级、打怪提升能力。该游戏仍在更新中。
在《Golden Krone Hotel》()中,你可以在人类与吸血鬼形态间进行切换。该游戏最后走上了商业化道路,一年来在Steam上获得了不错的成绩。
这个是《Cogmind 7DRL》()的原型,你将扮演一名机器人,你需要通过找到的以及从其他机器人身上扒下来的零件来完善自己,由于零件容易损坏所以需要频繁地进行更新。后来游戏也成功地走上商业道路。我从未想过自己六年前的7DRL作品最后会成为自己工作的一部分,但这也证明了游戏的核心机制足够有趣。
今年的7DRL上我做的游戏是《POLYBOT-7》(),它跟《Cogmind》有点像,但核心机制完全不同。玩家无法自主选择安装哪些零件,路过的零件会自动吸附到机器人身上,而且它们无法卸下来,只能等他们自然损坏。我原本打算做一款缩小版的《Cogmind》,但随着7DRL的临近,我发觉这想法并不值得去实现——新游戏需要新的、异于它者的核心机制。
7DRL以外的例子
我们还可以看下一些并非在7DRL上制作的游戏,其中某些游戏的制作时间长达数年,它们包含了大量的系统与内容,但你依旧能够看到它们是如何围绕核心机制展开的。
(偷下懒,仅列出游戏名称与地址)
Mage Guild
()
Demon
()
The Ground Gives Way
()
()
()
资源
开发Roguelike最重要的事情是什么?信息的获取。不仅仅是基础知识,咨询的解答,还包括游戏的进阶、创意的滋养物。
开发者在开发过程中遇到的问题都是不尽相同的,但你可以利用在线资源来解决它。虽然你未必会与其他开发者合作,但一些必要的建议还是应该接受的。这是我开发多年血淋淋的教训!我早期做游戏时属于闭关式开发,进度相当缓慢。
Reddit / RoguelikeDev
RoguelikeDev()是全球最大的Roguelike开发者社区,细致的栏目分类能让你找到各种有用的资源。
这些资源包括程序语言的教程,你也可以向那些使用者咨询。
比如文章开头提到的Python,最简易的方法就是使用一个名为“libtcod”的语言库,我们在论坛上有不少相关教程。
与大多数游戏库一样,libtcod自带一些常见的基本功能,比如游戏窗口、键鼠支持、点阵字体、调色板等。但它也有不少专为Roguelike而设的功能,比如地图生成、视角以及寻路功能。
(接下来的一大段文字都在介绍该社区,比较值得一提的是他们整理了一个常见问题解答的帖子,里面包含了主题、系统、日程管理等方方面面的问题,具体如下图。)
()
RogueBasin
除了RoguelikeDev,还有一个存在多年的RogueBasin网站(),它的创建者是Santiago Zapata,上面有一堆以开发为重点的文章。
虽然内容有些陈旧,但多数文章仍旧适用于当下。多年前我就是在这里起步的,这里有不少具有启发性的文章。
Roguelike Radio
由Darren Grey、Andrew Doull、Mark Johnson 和其他人主持的播客 Roguelike Radio(),上面不仅有与开发相关的主题,同时也有开发者的采访。
知识有了,那么用于实际操作的材料也不会少。
Assets
这是一些我们常用的Assets:
说实话,ASCII在很多方面的表现都很出色,通过前景色与背景色的巧妙组合,你可以创建一些非常漂亮的游戏。
多年来我收集到的ASCII游戏截图,在这里你可以看到它所蕴含的可能性。
当你选择使用ASCII或是与ASCII相似的tilesets时,你可以尝试下我做的编辑器——REXPaint(可与libtcod同时使用)。你能够利用它做一些界面、地图乃至艺术设计。
Tilesets
如果你想不因画面而劝退玩家的话你可以试着使用Tilesets,虽然它们只是一个占位符,但却能拥有极为艳丽的色彩。在RoguelikeDev的侧边栏中你可以找达到一堆Tilesets的链接,虽然多数是免费的,但也有的需要付费。
对于部分开发者而言,tilesets有助于激发他们的想象力。虽然视觉效果并不是让你的游戏脱颖而出的关键所在,但一副好看的皮囊终究是有意义的。
赢在起跑线上
在文章的最后一部分,我想探讨一下Roguelike游戏设计应该从何入手以及关注的点。也许你仅仅只是满足于让自己的角色在屏幕上动起来,再大一点的,就是希望其他人能像你一样喜欢上这款游戏。
你需要运用一些手段来让玩家留意到你的游戏。
前面我们讨论过游戏的核心机制,这是最有效的方法,因为它与游戏玩法的联系是最紧密的,而Roguelike本身就是一种游戏玩法。如果游戏丧失了重复游玩的乐趣,那永久性死亡也就无从谈起。
精致的视觉效果正在传统的Roguelike游戏中并不多见,不过现在有不少游戏朝着这一方向发展,其对玩家的吸引效果也很明显。
但在这里,我想谈的是游戏的主题,这是一个被多数开发者忽视的法子。
题材
市面上有大量幻想题材的地下城游戏,如果想要脱颖而出,最好避开地下城题材。
Roguelikes通常都会有一个良好或是有趣的游戏玩法,但一个独特的题材不仅能让你的游戏别树一帜,同时还能为你提供一个合理解释新机制的机会。大量的历史与神话资源是一个可供挖掘的宝库,业已存在的科幻类Roguelike也难以满足玩家的需求。
近年来,我们看到了不少拥有独特题材的Roguelikes。
这些都是一些容易引起注意的题材,尤其是当它们可供运行的时候(上述游戏仍处于开发状态。)
已经制作完成的《Lone Spelunker》则拥有不少奇特的洞穴景观。
在roguelike社区中还有一些未见成品的题材,比如海盗。我们也确实看到一款相应的游戏出现——Pirate Rogue,这是论坛史上呼声最高的游戏之一。
遗憾的是,Pirate Rogue停留在了概念阶段,开发者意识到游戏要想成型的话远超他们现有的经验,即便游戏呼声是如此之高。
超级英雄与赛博朋克也是期待值较高的题材。
在这里我想谈一款我印象深刻的游戏,Armoured Commander。
在游戏中你将操控一辆二战坦克,带领士兵们投身战役。开发者Gregory Scott以有限的编程经验投入了游戏的制作中。
一年后,游戏制作完成并被报道在Rock, Paper, Shotgun网站上。
从毫无游戏制作经验到出现在知名游戏网站上,这中间固然有运气加成,但一个独特的题材也是不可或缺的。
此外,开发者还应注意的是你的游戏不一定需要遵循Roguelike的规矩。我们经常看到开发者提出想要制作的游戏创意,却担心是否会因为不像Roguelike而被拒绝。这一点并不重要,有多少玩家,就有多少关于Roguelike的定义。你只要确保游戏能够贯彻自己的设计理念就足够了。
XRLs
除了绞尽脑汁想一个独特的题材外,你还有另外一种现成的方法,我们将其称之为“XRL”。()该方法基于现有的IP,它将为你节省大量的设计工作量,你只需要考虑如何让它适用于Roguelike游戏。有了XRL,你可以专注于游戏的基础构建,但相对的,它也会限制你的思路。
但千万要注意,你必须小心那些对知识产权特别上心的公司,比如任天堂。XRL更适合于业余爱好或是用来练手的项目,不要想着它能获得任何商业回报。
(我还琢磨着作者不怕东半球最强法务部找上门吗,这就给出解释了。)
当然你也可以借此积攒粉丝,为以后的商业道路奠定基础。
一些帮助你走得更远的建议
“早产”与高产
“早产”与高产是Roguelike发展的常态,将游戏内容凝缩在一个可供游玩的样本中,尽可能早地将其发布出来。这样你能够收到一些有价值的反馈,这对于一个长期项目而言是有利的。
开发者日志
将开发信息集中发布在一个地方,比如博客。它可以帮助你:
整理思路;
从不同角度审视你的工作;
记录开发进程;
建立一个可长期参考的对象;
收到反馈;
建立起互动社群;
我长期这样做,它对于我的帮助特别大。以下是我在博客上讨论过的话题:
要想知道tileset 与ASCII、鼠标与键盘哪个更受欢迎,你可以参考下《Cogmind》的数据:
这里是文章的结尾,同时也是你的Roguelike的开始。
编译自gamasutra ,原文地址
标签: #php制作小游戏的代码