游戏开发:从零到App Store再到付费用户,作为一个副业。方式和原因

2020-05-06 18:44:55

开发一款游戏本身就是一项挑战,如果你在全职工作的同时将其作为副业来做,那就更是如此。或许还能组建一个家庭。这是我在Yuppy上的故事,这是一款面向iOS和Android的迷你教育游戏集合。我为什么制作它,我面临的挣扎,以及我最终是如何完成并真正卖出它的。

像大多数软件开发人员一样,他们也喜欢视频游戏,并与他们一起长大(谁不属于这个类别?!),我从小就对开发自己的游戏的想法着迷,从编程开始。然而,在那个时候(25年前)编写游戏很困难,你必须使用带有低级图形基元的C/C++,我不知道有什么简单易用的引擎可以帮助平稳地移动东西,处理碰撞,做动画,或者,上帝保佑,物理。我承认,我太懒了,不敢低下头去学习数学、复杂算法、内存管理和优化技术等(而且毕竟我更喜欢玩而不是学习)。因此,我一直敬畏那些更聪明的孩子们在做这件事,我沿着学习更传统的Win16和Win32编程、Web等等的路线走上了这条路。

在我开始工作很多年后,我试着和几个朋友做了一段时间的工作,我们在iOS上用cocos2d做了一两个原型。是的,他们确实是这样做的,我主要是在吃披萨和喝啤酒的同时与他们见面,享受乐趣,讨论想法,但当时我的大部分空闲时间仍然致力于创建非游戏iOS应用程序,因为我很喜欢那个平台和整个生态系统。原型最终被抛诸脑后,我又忘记了几年的游戏。

在阅读和听说了很多关于Unity、它的易用性和多平台支持(包括iOS和Android,这是简单休闲游戏的理想目标,我认为这类游戏对于一个单独的业余开发人员来说从头开始是触手可及的类型)之后,我试了试,创建了一个与数学相关的非常小的游戏原型。不过,我只做了一点,UI很糟糕,从头开始总是很困难,所以我把它交给了几个已经对创建游戏认真得多的朋友;他们喜欢这个想法,学到了一些Unity(他们还在用Objective-C for iOS和Java for Android创建游戏,没有特殊的游戏引擎或SDK),刮掉了原型,构建了真正的游戏Numberful:

Numberful做得相当好,下载量达到了100K+,我们都相当高兴,不仅因为人们喜欢这款游戏,还因为我们发现了一些东西,可以用比以前容易得多的方式创建游戏,也是只写一次,但针对多个平台。未来似乎是光明的。

在Numberful我的朋友们继续全职与Unity合作开发新游戏后,他们成立了Midnight Tea Studio,并最终创造了全球大热的薄片。相反,我转向了其他事情,因为,再一次,在白天有一份全职工作的情况下,这似乎是一件太大的事情,不能在副业上做。

单独创建游戏可能是一项巨大的工作,因为编程只是工作的一小部分。游戏设计(故事、机械、关卡设计等)。这本身就是一项巨大的工作,然后是所有的艺术(包括绘制一些独特的东西,从头开始,这与为应用程序创建UI完全不同),动画,音乐,音效。单人开发人员制作的不错的游戏不太可能不多,而单个开发人员在短期雇佣的UI设计师的帮助下,就可以完成相当数量的优秀应用程序。游戏对艺术的要求更高,而艺术很少成为开发人员技能的一部分。因此,要么你和一群人一起工作,要么你运气不佳。

去年年中左右,在发布了一款在Ffltter中做的应用后,我就在寻找新的东西来学习,让我下班后保持忙碌,制作游戏的愿望再次从我的脑海中浮现出来。然而,这一次我决定,如果我要开始它,我必须完成它(也就是说,它必须在App Store中结束,人们必须能够真正地玩它),因为我不能容忍又一次失败。我意识到我必须尊重的限制:

这必须是我一个人能做的事,因为我没有任何人可以一起工作。一开始很难找到愿意做副业的人,但即使我找到了一个人,我也不想依赖一个可能没有动力或对此不够认真的人,或者可能不想投入同样的努力,或者仅仅是以一种超级冷静的方式完成它并在可能一年内完成的人。了解我自己,如果我不能在3个月内以某种方式完成一些事情(一个值得发布的MVP),我很快就会开始失去兴趣(和希望)。所以我不想有外部依赖,除了我自己谁都不能怪。

在某种程度上,与第一名相反的是,我也不想成为别人的遗憾,以防他们比我更快、更熟练/更有干劲/有更多的时间投入。

它不可能是需要独特的定制手绘艺术的东西,因为我自己做不到,也负担不起外部付费或帮助的费用。它必须是可以与现货艺术品或从众多可供选择的网站购买的现成设计相得益彰的东西。音乐和音效也是如此。

即使是最初的版本,也不可能需要太多的时间。这需要考虑到,我基本上是完全从头开始使用Unity的,因为几年前的前一个原型是超级基础的,几乎是随机完成的,对所有东西是如何工作和装配的没有太多的技术理解。我还必须考虑到,一个月的全职工作(8小时/天)对我来说大致相当于三个月,在晚上和周末工作(下面我将更详细地介绍这一方面)。

除此之外,如果我不得不把空闲时间花在工作上(我当然喜欢编程,但这绝对不像坐在沙发上看电影那么放松),它必须是有目的的东西,而不是人们可能用来消磨5分钟停机时间的游戏。我想做一些有教育意义的东西,目标是儿童…。这就是Yuppy的想法是如何诞生的:它将是一个迷你游戏的集合,学习写作,数数,演奏音乐,发展大脑技能,如空间和抽象思维等等。嗯,这么说听起来很大,但实际上我只想做一些小东西,但对孩子和他们的父母仍然有用。

如果你想真正完成一些作为次要项目开始的事情,优化花在上面的时间必须是你的首要任务之一。除了我自己的经历之外,我还看到很多朋友落入了这样的陷阱:以随机的方式开始做事情,在发现新的更好的方法后开始做几次,最后因为看不到足够的进步而放弃,因此没有多少满足感和动力。

当我用我还不熟悉的技术堆栈开始做一些事情时,我的方法如下:

根据所需的知识、复杂性、成本和可获得结果的质量,分析并决定我要使用哪种技术。有很多游戏引擎,但最主要的两个是Unity和虚幻引擎。这两种游戏几乎可以用于任何类型的游戏-也许除非你打算做一款AAA游戏-但Unity对我来说感觉更平易近人,而且在提供简单的教程和各种类型的内容方面也是如此。正如前面提到的,我已经有几个朋友成功地使用过它,所以选择它是一个很容易的选择。我对此非常满意,考虑到使用可定制的预制件和标准对象(在我的情况下,它们都是简单的2D场景,但创建3D环境在方法上没有太大区别)在视觉上创建屏幕是多么简单和愉快,设置、调整和预览动画和粒子效果,以及通常只是尝试通过点击Play并在一两秒后使用游戏所做的事情(需要多长时间取决于场景的复杂程度、加载的资产数量、场景是否可以独立运行或它是否需要),我对此非常满意。但在我的例子中,这非常容易,特别是与使用原生iOS或Android项目的典型“编写代码&>编译&>启动sim&>上传构建到sim&>运行&>测试”过程相比。

研究我能找到的关于这个主题的所有东西,对事物是如何组合在一起的,以及常见的问题是如何解决的,有一个像样的高级理解。在Unity游戏中,这意味着理解场景、游戏对象、坐标、相机、预制结构、动画、声音、移动、碰撞器、刚体、物理引擎和GUI系统。我知道很多人会说,实践实验是不可避免的,但对我来说,这只有在我尽可能多地学习之后才会发生,因为这让我可以尝试理论上或多或少已经理解的东西,所以希望当我尝试某事时,方法上会是正确的。这并不意味着我一路上不会发现很多障碍,我肯定会的,…。但至少我试图将走上一条完全错误的路线的可能性降至最低,或者是一条受到技术限制的路线,如果不是扔掉一切从头开始的话,需要一次又一次的改进才能取得进展。给你一个概念,我想我在这个阶段至少花了一个月的时间,看了很多来自Brackey,Code Monkey和Blackthornprod的视频,以及参加了这个简短的Udemy课程和这个更长的课程的一部分。一般来说,我非常喜欢视频教程,而不是书籍或文章,因为这样的主题是高度可视化的,如果可能的话,我喜欢完整的课程,而不是来自不同作者的许多视频,以确保深度和风格的级别一致,内容重复较少,并且已经以一种有意义的方式组织起来,并且示例随着时间的推移不断增长,通过在以前的基础上构建而不是每次都从头开始来涵盖新的内容。

开始对一个基本想法进行一些简单的原型设计,让我自己熟悉新的环境/技术。在我的例子中,我从重新制作几年前学习“反应原住民”时做的“动物之声”小游戏开始(这里顺便说一句)。它超级简单,没有太多的逻辑,所有的UI都是用场景编辑器静态构建的,但它仍然让我学习如何制作场景、游戏对象、可定制的预制件和脚本,以及一些灯光动画和声音处理。我也很高兴看到我花了几个晚上来做这一切(通过重用我以前拥有的所有资产),而不是我花了很多天在原始的RN版本上。团结已经显示出它的力量,甚至对于如此基本的东西也是如此!

转到更复杂的东西,添加越来越多的功能和细节(例如:新的逻辑或机械、声音、动画等)。到目前为止,Yuppy已经被证明是一个多达10个小游戏的集合,所以在第一个小游戏之后,我有更多的工作要做,其中大多数都教会了我一些以前没有做过的新事情(这也有助于保持这个项目的趣味性,因为不学习就等于无聊)。

除了最终的图形资源和声音,还包括分析(使用Firebase和Facebook)、家长入口(对于儿童游戏,但也可以是设置、排行榜或其他辅助功能)、加载屏幕或进度条、支持应用内购买以解锁受保护的内容(通过使用Jacob Eiting的RevenueCat大大简化)、条款和条件、登录页面、应用商店的屏幕截图和App Preview视频、编译和打包。当然,解决所有错误的过程是由朋友们创建的,他们得到了最初的测试版,可能还会进行一些性能优化。如果所有这些听起来比创建实际的10个迷你游戏更容易或更快,这意味着您从未听说过80/20规则…。因为我可以保证这一部分将是巨大的,实际上你会开始讨厌整个项目,只是希望要么快点完成,要么忘掉它。…。或者把它烧了然后忘了它。

幸运的是,这一次我设法完成了…。然后在很短的一段时间内就忘了这件事,…。直到我意识到完全由我自己制作一些人们可以使用和享受的东西是多么酷。实际上,有几个人非常喜欢它,决定为它买单,我可以向你保证,它给人难以置信的满足感和能量的提振。这不是钱的问题(考虑到下载和销售的绝对数量,这仍然是微不足道的),而是真正的意识到你已经建立了一些人们认为值得给你钱的东西。事实上,我个人认为这比通过欺骗人们点击恼人的广告赚得更多更令人满意。

所以,你和我有一份全职的,每天8小时的工作,我们想做点其他的事情(一个游戏,但也是另一种应用程序),对吗?时间有限,可能还有其他家务要照顾(家人和孩子?合伙人?你真的喜欢并且想经常见到的朋友吗?一座需要钱的大房子或花园

明智地利用你的时间。如果你每天有两个小时的时间,在这段时间里真正专注于你的项目,不要查看社交媒体或从视频跳到视频。至少在一周内列出你想要完成的事情,如果不是更多的话。这将帮助你保持在正轨上,并很快意识到你是否比预期的慢,这样你就可以相应地改变你的计划,或者也许你会意识到你正在以你可以避免的方式浪费时间,并尽快解决这个问题。正如前面提到的,作为第一步,我还研究了所有关于这项技术和我的具体想法的东西,以避免在可能很快成为障碍的方法上工作。如果你遇到问题,可以在专门的论坛(例如:Unity官方论坛)、Stack Overflow或你看过的YouTube视频的评论区提出问题。或者问问知道这些东西的朋友和同事,如果你有幸有一些在这方面工作的人。

估计所需的工作量,计算所需的运行时间,并决定您是否满意。上面的示例计划相当于每周总共大约16个小时,相当于2天的全职时间。一点都不坏,因为这意味着,如果你全职工作,一个小游戏可能需要1个月的时间才能开发出来,这样就需要3个月的时间,我认为这是非常合理的。一场2个月的比赛需要6个月,这仍然是你用足够的意志力可以处理的事情。不过,也有一些较小的游戏或项目,可能需要两周的全职工作,兼职工作的时间也会相应改变。举个例子,Dani(我关注的另一个YouTuber)在一周内制作了这个小而漂亮的游戏。我认为自己很善于做出不太偏离现实的估计,但是如果你没有太多的经验,或者开始做一些你真的一无所知的事情(比方说你的编程背景一般很少,因为你在另一个角色工作),很容易严重低估这项工作,这意味着在你最初估计的3个月的工作之后,你可能会发现你只完成了项目的30%,到那时你就放弃了,因为你不能再接受7个月的工作!(这句话的意思是,在你最初估计的3个月之后,你可能会发现你只完成了项目的30%,到那时你就放弃了,因为你不能再干7个月了!)。

或者做一个非常小的游戏…。或者从一开始就计划将你的宏伟想法分成多个版本,这些版本将逐步增加级别和功能。这在任何情况下都是一个很好的想法,这样你就可以开始和一些人一起测试游戏,看看他们是否喜欢这个整体想法。但是避免上面的问题也是有好处的,因为尽快发布会给你继续前进所需的动力。我再说一遍:将一些东西公开发布到应用商店,让人们真正下载和玩,这是超级强大的。它给了你信心,也是你做得到的实际证明。理想情况下,尽量在3个月内(或者更少,取决于你开始时的知识水平)拿出一些东西。甚至在最初的公开发布之前,就把它展示给朋友和家人,以便及早得到一些反馈。朋友和家人的反馈不能太可信,因为他们不太可能会告诉你你的游戏很烂-即使这是真的,如果朋友告诉你,换个朋友,因为这不是你在项目的这个阶段需要的。更重要的是看你能够完成一些事情,而不是实际的美感(或可玩性、趣味性等)。其中的一部分。许多最初的努力不会那么好,但这不是重点,如果你不放弃,你肯定会进步的。

我希望到目前为止我已经说清楚了,创造一些比原型更多的东西,一些处于你可以发表的状态的东西,是一项巨大的努力,你可能会问自己,把这么多时间和精力投入到一些很可能在金钱上很可能零回报的东西上,是否值得。如果你说的钱是对的,赚外快的方法会容易得多,比如做一些自由职业者的工作。

然而,你可以在晚上或周末做的很多自由职业工作都是小项目,适用于小公司或个人,这些公司或个人需要一些东西,但他们负担不起一家真正的咨询公司,因为随之而来的是所有的管理费用。他们只想让“某个人”“让它行得通”。问题是这些客户通常是非技术性的,他们很便宜,没有明确的规格,等等。所以做这种自由职业者是为了几块钱而感到压力的完美方式,而不是做太多有趣的事情。对我来说,在每天工作8小时,做了一些很酷的事情,而且有一个巨大的。

..