做出梦想中的那款游戏

译注:本文作者为Godot游戏引擎的开发Leader - Juan Linietsky。

撰写本文的动机

我今天在重装自己开发用的电脑,所以无法进行太多编程工作。主要是因为Godot的编译时间越来越长了,就想看看重装一下会不会快一点。

撰写这篇文章呢,主要是应长时间来很多开发者的要求。除了是Godot的首席开发人员,我还拥有将近20年的游戏开发和发行经验、以及10年的技术顾问经验。

总的来说,从程序员到项目负责人我都干过,不过大多数时间是做技术指导或技术顾问。

我还开了几家公司,在业务上对其他人提供帮助。所以相信我应该能对游戏制作的整个流程描绘出足够清晰的画面,而且不是失败的那种流程。

游戏制作还没让我发财,但在这个过程中我已经学到很多。而且比起其它东西来,我现在更享受开发Godot的过程。

其他人肯定也写过同样的主题,但这篇文章来自我自己的经验,希望对大家有用。

自从Godot引擎发布以来,我见到很多开发者用它进行了一些很棒的项目开发。归因于它的设计 - 这也是Godot最大的优点,使得开发过程中代码的编写真的很简单且容易延伸到大型项目,而又无需担心游戏的架构。

很多游戏发布了,但也有大量的游戏放弃了。我联系过很多开发者,向他们了解原因,大多数情况下,这些人不是搞技术的,对于项目管理感到困难。

制作游戏的过程有趣但很难

开发游戏的确很难。它涵盖了很多学科的内容,但无法从这些学科中借鉴太多。

从艺术性和创新性的角度来讲,艺术家们(画家、音乐家、作家)通常会将某些东西概念化,然后为之增添内涵。在游戏开发中,你初始实现的游戏设定总是会被打破的,并且需要迭代改进。很多情况下,要做出一些艰难的决定,意识到得放弃一些喜欢的东西,否则都不可能让它正常运行。

从技术的角度来讲,在大学里学到的方法也是不适用的。软件工程是基于整理的需求清单、并基于来自需求的用例进行开发。根据用例,定义了所有的交互。而这套方法在游戏开发领域并不好用,因为你会更关心玩家的体验,而不仅是Ta的操作。

设计模式之类的问题

就算应用了标准的设计模式,也还是无法保证游戏的开发进程。我做顾问时反复遇到的一种情况是:得让工程师骗他们自己说已经成功将MVC模式应用到其游戏架构中了(并且结局是做了一盘肉丸意面,译注:没查到这个梗是什么意思)。另一种案例是工程师们声称他们确实做到了不采用OOP设计 - 而其实他们依旧用了,只是并未意识到或者不承认而已,这种情况多到数不胜数。

其中还伴随着另一种情况:程序员太过于关注『doing things correctly』及『good practices』。这经常导致代码的过度封装,当你的细节要变化时,代码库修改起来巨头痛。

如果你在编写一款游戏,要尽快用尽量简单的方式编写出来。不必纠结于设计。不要为了应用设计模式或为了封装而封装。就是快点将它实现,让它可以运行起来。到了难以继续维护的时候,可以计划让代码在某些方面更整洁;否则,别碰这件事。

在团队协作环境,多人开发同一款游戏的时候,这种情况非常普遍。首席程序员们会要求代码组织良好、保持整洁,但结果往往是开发进度的缓慢。他们有一项指导原则:我们要能随时替换程序猿,所以代码必须保证可读性和可维护性。而现实呢,这导致游戏花费了更长的时间才能开发出来,且从长期来看几乎也没有降低成本。

其实将团队种程序员的角色和责任定义清晰就好了。让他们可以以自己喜欢的方式工作,快速而可能有些不够『整洁』,但必须要编写出整洁的API供程序员之间相互调用。这样,尽管在项目组织上有所失分,但却赢得了开发速度几何级数的增长。

我在开发Godot引擎时,我会确保设计与架构尽可能完美;但当我在开发游戏时,我只想尽快完成。

读到这里,很多人可能已经意识到Godot引擎就是提倡以方式来开发游戏的。它的设计思想提倡生产力应该凌驾于其它因素之上。其场景系统的运作方式允许你应用一种『化整为零并攻克』的方法开发游戏 - 而不是关注像MVC、细分成组件这些无意义的东西。GDScript的简洁性让你刚好能写出能达到效果的大段代码;一旦完成这些代码的编写,你无需再接触它们。实现那种『刚刚好』的感觉是我所追求的,在Godot引擎开源之前,我和Ariel Manzur就已经在这方面进行了多年的工作。

这也是我们在Godot引擎开发上投入如此多的精力的原因。尽管仍有大量的缺失部分,我们知道自己在做一些前人未做过的、而又比较特别的事情。

有引擎还不够,重要的是开发过程

在社交网络上出现的最多的一个问题:我想做某种类型的游戏,哪种引擎最合适?一款引擎能针对提问者提供很多针对性的用例,但真相是:最终的成功依赖的是你的开发流程的可行性而非其它因素。

大多数开发者犯的第一个大错是这样的:开始于非常艺术性的点子、制作出简单的原型、然后期望以同样的方式开发游戏剩下的部分。随着时间的推移,就可能发生下面这些情况:

  • 静态资源是OK的,但游戏设定很糟糕。甚至觉得最好是推倒重来,但从要花费的时间来看太让人沮丧。
  • 游戏是OK的,但意识到静态资源还可以做得更好,重新制作太让人沮丧。
  • 游戏运行良好,但感觉还可以实现更多的东西,只是这个点去制作静态资源有点障碍,真让人沮丧。
  • 对于制作的游戏,由于意料之外的复杂性,需要继续获得投资。

以上是些常见场景,也是多数项目失败的原因所在。这次让我们重新开始一套正确的制作流程,包括从概念原型到最终发行的环节。

从头开始,先考虑游戏是否具有商业上的可行性

咦,不应该先做个原型出来吗?当你有了一个好的点子的时候,最自然的动作就是将它做成原型...

当然不是这样!这也是99.99%的独立开发者和工作室犯的主要错误,而且是最致命的错误。

这样的流程不是决定游戏是否在商业上可行的重点。你读过的很多文章 - 关于制作一款成功的游戏,都会告诉你说:要保持小一点的范围(scope)来避免风险。这种建议很糟糕、而且是没什么实际经验的人提的。别按这种建议来做游戏。这个世界上,不冒点风险就没有收获。关键是要体会到如何管理这种风险。

就按你自己的想法去做。你的长处和短处,在开发流程中会自动反映出你的能力界限。想要成功,是需要有野心的,别太早砍断自己梦想的翅膀。

在进行原型开发之前,你要能回答出以下四个问题:

  • 游戏针对哪些玩家?
  • 游戏如何触达目标玩家?
  • 如何筹集开发经费?
  • 你的游戏有何与众不同?

下面详细的说一下:

1) 游戏针对哪些玩家?

这是要问自己的第一个问题。试着描绘一下哪些人会玩这款游戏。通常有这么几种答案:

  • 所有人,如密室逃亡类的、塔防类的、休闲类的等等。
  • 主流玩家,比如RPG, FPS 或策略游戏等。
  • 小众玩家,如探险游戏、回合制策略游戏等。
  • 独立玩家,如那些在寻找很酷的、更小型游戏的人,他们不在乎游戏的类型。
  • 其它

在进入下一个问题前,要把这个问题想得非常清楚,确定是哪种玩家。

2) 游戏如何触达目标玩家?

这个问题就复杂了。

休闲类游戏: 休闲类的游戏经常是所有人都会去玩,像愤怒的小鸟、2048等。的确,市场是巨大的,十几亿人都是你的潜在用户。所以只需要做出游戏然后分发就坐等收钱?然而并不是,应用商店中这类游戏太过饱和了,你发布的任何游戏会立马被淹没掉、失去关注。

移动端游戏的宣传有点超出这个话题了,但它的费用真的太贵了。你可以找发行商,但大多数移动端发行商都是骗子。如果他们告诉你他们很高兴可以发行你的游戏,千万别相信他们!他们会运行你的游戏用于获取他们自己的利益,而不是你的。

真正的移动端发行商会问你这个问题:KPI指标是什么?或者你期望游戏的转化率及留存率是多少?这才是真正的移动端游戏发行商,他们会为你的游戏投入资金。

不幸的是,这个问题很难给出一个明确的答案。移动端游戏最流行的赚钱方式是:先免费玩、然后应用内付费。其它方式都不起作用。

这一点解释起来很复杂,超出了本文的讨论范畴,在这种免费玩的模式里,玩家也是需要付费获取的。有的公司说5美金帮你获得一个游戏用户,这不是开玩笑,而且通常需要花费更多费用。多数用户在你的游戏里不会付费,但有一些可能会花费不知5美金,这样从每个用户身上可以得到一个平均收入。

『转化率』这个术语的意思是平均有多少玩家形成了付费。如果你在每个用户身上花费了5美金,但平均获得了8美金的收入,你就有一个1.6的正向的转化率,一旦有了这样正向的转化率,你的游戏就变成了一台印钞机。

这类游戏往往耗费数年开发,在没有足够的资金投入的情况下,要达到这个点是无比困难的;所以会一直亏损,直到转化率走向正值,情况才能有所改变。

简言之,想要你的休闲类游戏在移动端获得成功,机会很渺茫。除非为了兴趣或学习,否则不要轻易进入休闲游戏这个领域。

营销专家经常会告诉你:与常识相反,市场越广,越难覆盖。

主流游戏: 这类游戏需要大量的资金投入用于发展用户,游戏的制作往往也耗费了大量资金。如果你有足够的游戏开发经验,你可以尝试这个路线。

小众游戏: 小众游戏通常最容易抓到用户。有专门的网站、论坛、Facebook组等。每种不同风格的游戏也有专门的发行商,可以告诉你他们能覆盖到的用户数。

独立游戏或实验性游戏: Steam、GOG等还是这类游戏的好去处,假设你的游戏足够有趣的话。要记住:多数游戏要么卖得很好,要么卖不出去,没有你期待的那种中间地带。

3) 如何筹集开发经费?

你需要想想如何筹集游戏的经费。下面来说明一些获得资金的常规方式:

发行商: 你可以相对容易的从游戏发行商活动投资,如果遵循正确的步骤的话。

最常规的方式是发行商会给你提供销售方面的助力,然后抽成。

在寻找发行商时,要试着找与你的游戏相似的游戏发行商。通常他们对市场理解得更好,可以更好的评估风险。

众筹: 如今通过像 Kickstarter, Indiegogo 或 Patreon这样的网站被认为很难获取投资。一种策略是筹集更少的钱提供更小型的游戏,如果后续游戏成功,再找游戏发行商或私人投资者争取所需的剩下的资金。

政府津贴: 看看你当地政府是否在支持游戏产业、提供津贴。

投资机构: 有专门投资游戏的投资商,但通常他们会对拥有你公司股权或知识产品感兴趣。最常见的类型是种子资金。

提前销售及社区式开发: 这是一种最佳的方式,它是在游戏开发过程中形成一个忠实的社区,要求你必须是非常擅长这种事情的,开发过程种听取社区的意见,随着社区的成长,越来越多的用户会预订游戏,直到游戏最终完成开发。

最后这个问题是最重的也是最难回答的:

4) 你的游戏有何与众不同?

如果你的游戏与市面上现存的游戏没有足够的差异,它将会失败。没有人会去玩它,游戏发行商也不会对它感兴趣,也不会为之形成社区。

更糟糕的是,你必须用一句话、一张图或者一个短片就可以描述清楚差异。

差异可以是一个创新性的游戏设定概念、或者之前游戏种不曾出现的艺术风格。独一无二的角色设计也会让人产生兴趣。对于RPG或冒险游戏来说,故事性和艺术性都是关键。

制作游戏原型

如果你确信上述问题你都有了答案,那是时候开始制作原型了。原型的目标是证明你的点子可行,并且你在美学方面(艺术、声音等)路线正确。

我见过很多设计者,当原型出来后,就能预见到他们的失败。从未避免这个阶段。

原型中美术或声音可能都还不是最终效果,代码也可以非常粗糙,这都不是问题。最要紧的是『体验』要棒。明智的想法是:原型必须让人感觉达到了最终效果或接近最终效果。原型必须尽可能传达好你的想法。

在这个阶段不断迭代是至关重要的。别忘记任何待测试的核心功能,在感觉达到完美效果前,保持不断改变。

任何未解决的核心问题在后续解决时都会很痛苦。这意味着得让控制感很流畅。它得表现出你的创意想法。

在这个阶段尽可能获得更多反馈!

从钱的角度,原型阶段是找到种子投资的最佳阶段。这类投资方会提供足够的资金让你开发出下个阶段的片断性成品(vertical slice),并要求根据你的最终总收益进行大量分成(通常在30-40%的范围)。

制作片段性的成品

如果你是自己独力利用业余时间完成整个游戏的制作、或者已经有了一些投资,可能不必进行这一步。否则,这是弄到投资来完成整个游戏或开发到Alpha阶段的关键步骤。

片断性成品就是游戏的一小段,但必须达到成品质量。

例如你的游戏有30关,你可以制作其中的2~3关,而且必须是达到最终质量水平。就算对于剩下内容的引用也必须是可见的,尽管当想访问时还不能正常运行。

这种片断性成品不一定要是游戏的第一部分,它可以是随机选取的。

为何片断性成品对于获取投资如此重要,原因如下:

1) 帮助投资者降低风险

投资全是风险。风险越低,获得投资的机会就越高。如果原型能说明创意可行,片断性成品就说明你有能力完成整个游戏的开发。

2) 对开发成本的估算更靠谱

到了这一步,你应该知道制作片断性成品要投入多少钱、要耗费多长时间。

可以做一个推断:如果开发游戏的10%的内容花费2万美金,就可简单的估算出最终费用是20万美金左右。

3) 让调节各种预算更容易

很多发行商和投资者可能没有足够的资金来让你完成计划的长度和内容的游戏开发。片断性成品可以帮你估算多少内容需要砍掉,来匹配他们的预算。

Alpha版的目标是完成脚本开发

这一步是多数开发者会犯的另一个致命错误。除了某些类型的游戏需要,在完成Alpha阶段之前,不要添加最终的静态资源(Asset,译注:在游戏中包含的纹理、音频等素材文件)。

我知道这会让人很沮丧,但一定要压制这种让游戏场景更逼真的心态。

这样做有几个关键性的原因:

1) 游戏设定的优先级最高

好的游戏设定定义了你的游戏的好坏。必须尽可能精益求精,所以先要开发出所有内容。确保所有功能特性被实现,并且游戏可以从开始到结束完整的体验。游戏控制感或易用性必须让用户感觉良好。

而因为艺术性相关工作不需重做,解决所有问题的成本很低。

2) Alpha版很适合用于获得投资

开发到Alpha阶段是进行投资和发行谈判的最具优势的点。因为:

  • 展示你能完成所有最终资源的制作,而且你确定花费的时间;
  • 展示游戏所有内容,可以现场演示游戏有多好玩等;
  • 还没有投入太多,因为这个阶段主要是投入多数程序员及一两个艺术/动画/策划人员;
  • 要完整整个游戏,真正的资金投入是剩下的艺术部分(动画、图形、音乐、SFX、VFX等)

结果是到了这一步开发风险也非常低了,这也使得更容易获得更好的投资。

Beta版再填充静态资源!

Beta版就是整个最终的游戏完成了,它加入了上一个阶段欠缺的所有静态资源。

这个阶段非常有价值感和成就感,但其实非常有难度。从大的公司到独立开发者,为游戏填充最终的静态资源总是在整个开发接近结束时完成。

对于独立开发者来说,这个时间点可以雇佣一些人来进行艺术、音乐、视觉特效等方面的工作了。因为这时需求已经不会再有变化,你可以花费更少的资金。你能进行更精确的预算,签署待完成内容的服务协议。

这可以避免非常常见的问题 - 因为开发周期往往比预期时间更长,如果按月雇佣艺术人员的话,支付薪水方面就会超支。

从Alpha到Beta,除了最终的静态资源,典型的任务还有翻译、电影短片、录音等。

Gold版

当游戏所有bug及很小的少量的怪异情况被解决后,游戏变得足够稳定时,就可称为Gold版。这个过程会花费相当长的时间,所以很多工作室在实际的Gold版状态前就发行了游戏,后续通过更新来修复bug。这似乎有点不妙,但整个行业就是这样操作的。

发行版

我对于游戏发行有形形色色的经验。发行商对于他们的游戏普遍有种赌博的心理。他们投资大量的项目,但仅对那些在销售方面表现好的项目在推销上进行真正的投入。那些得不到资金投入的项目就会被留下来等死。这就是生存法则。

就算你签署了发行协议,也不能保证获得营销方面的资金投入。能让你获得更好的协议的条件是提供给发行商已完成的或者至少也是Alpha阶段的游戏。

起初,面对这种事实,我很愤怒,但现在我理解了,对于发行商来说,这是最自然的行为。他们毕竟是公司,而不是慈善机构。

当然,不同的发行商也有很大的差别。甚至他们不直接投入资金在促销上,他们通常也还有非常好的媒体渠道,并且很多还拥有忠实粉丝(如Atlus或Daedalic)会订购他们的游戏。他们也非常清楚他们的目标市场,就算你的游戏没有销售,也不意味着他们在不做促销的情况下无计可施。

多数情况下,如果游戏取得的营业收入低于一个特定的界限,你可以与发行商协商让他们退回游戏的发行权。这样还有希望通过其它途径翻盘。当然,如果你是从发行商那边获得的投资,他们会要求在此之前支付相应费用。

我的经验告诉我,如果游戏销售情况不理想,通过砸钱进去大量促销的方式来改善的机会非常渺茫。

引擎方面,你可能听一些人说发行商要求你使用Unity、Unreal或其它特定引擎进行开发。这其实是谎言。我发行了很多用Godot开发的游戏,有面向文本终端的、移动端以及PC端的,从来没因为所用的技术被为难过。

唯一的情况可能发生在受雇开发第三方知识产权的项目的时候,如迪士尼、乐高等。他们有些时候会要求你提供源代码,以便在没有你的技术支持的情况下自行修改。这种情况可以做些协商或妥协。

自主发行

自主发行游戏是超级困难的。进行所有的推销工作需要花费很长的时间,就算你学会了如何操作。我知道有些小型的发行商可以帮助完成这些工作,以销售提成或按月度付费的方式作为交换。我感觉多数是骗子,所以要仔细核实他们发行的其它游戏的表现情况。SteamSpy是很棒的一个工具。

结束语

你也看到了,制作游戏的整个过程难以想象的复杂,而且成功并没有在那等着你!希望这篇文章能帮你了解游戏制作过程中最重要的部分。

如今,行情是大概有十分之一的游戏能成功获得投资,且只有少数游戏能收回投资。

可如果能掌握好它,它就成为你的一个饭碗了。如果你重复上述开发流程循环的次数足够多的话,我想你的人生获得真正的成功的机会非常高。

别轻言放弃!

译自:https://godotengine.org/article/how-actually-make-your-dream-game

posted @ 2017-08-20 17:23  x3d  阅读(857)  评论(2编辑  收藏  举报