Gabriele Cirulli 今年 20 岁,目前居住在意大利,自学了 UI 设计和网页开发。他最先将 2048 的开源版本放到 Github 上,由此引发了风靡全球的狂潮,各种衍生版本层出不穷。更多信息可以访问他的个人博客、Github 和 Twitter。
前几周对我来说是一个漫长而疯狂的时间。三月份,我因为好玩,制作了一款叫 2048 的游戏,然后以开源的形式发布在 Github 上了。在接下来的几周时间里,它意外成为了世界范围内的热门话题,而且超过了两千三百万的人玩过了。
这段时间是我生命中最激动人心的一段时间,同时也是压力最大的一段时间。知道你所创造的东西被数百万人玩到并且喜欢,这是一种非常棒的感觉。对于大多数人而言(包括我自己),这会带来继续创作新东西的动力。与此同时,当你创作的东西世界闻名的时候,你必须要面对一堆新的挑战。如果你从来没有面对过这样的压力,来自别人的关注和别人对你的期望会把你压垮。
在这篇文章中,我会和你们分享我所经历的一切,以及我是如何处理它们的,既站在个人的角度也从专业的角度进行阐述。我也会解释到底是什么样的心路历程让我改变了我的想法而去制作这个游戏的手机版本。
这是一篇很长的文章,但是我希望这篇文章能够带来一些有意义的想法,并且能够帮助那些可能要面对类似问题的人。
一切是怎么开始的
我利用周末的时间写了 2048 这个游戏,仅仅只是好玩而已。我以前被两个游戏所吸引,它们分别是 1024! 和 2048。这两个游戏我都喜欢玩,我想用一种不同的视觉展现效果和更快速的动画来创造我自己的版本,只是试试看自己行不行。在那个时候,我还不知道有款叫 Threes 的游戏,它是所有这类游戏的原型(包括 2048)。
Asher Vollmer 和 Greg Wohlwend 作为 Threes 的开发者,已经证明了他们在开发这款游戏的时候投入了大量的时间和精力。就 Threes 的模仿者都大红大紫的现状,他们最近表达了他们的不平。我理解他们的感受,我也对他们在创造 Threes 中付出的努力和心血表示由衷的敬佩。2048 确实欠他们的。
在制作 2048 的过程中,我决定把项目托管到 Github 上去,并且通过 Github 完成项目。由于这是一个大部分都基于别人工作的项目,所以我不想把它设为私有的项目。
当我完成了这个游戏之后,我就通过 Github Pages 发布了它,并把它发表在 Designer News 上,仅仅只是为了看看大家反馈的效果而已。
爆发
接下来的一天,我从朋友那里收到了一条消息,让我看看 Hacker News 的首页。有人把 2048 发布在那里了,而且现在被顶到了第一的位置。通过 Google Analytics 的报告可以知道,现在有上千人在 Hacker News 的网站上。我完全无法相信发生的这一切。
尽管这就像互联网常见的爆炸新闻一样,来的快去的也快,我还是花了一整天的时间查看这条帖子的状态。看到关注数目持续上升使我非常兴奋,同时还有一点害怕。
我完全被那些积极回应的评论震惊了。每个人都在谈论他们是如此的喜欢这款游戏,简直就停不下来,甚至在上班时间也在玩。
接下来的几天
我以为大家对 2048 的兴趣很快便会过去,但是接下来的几天,大家的热情始终如一。事实上,大家更加关注这个游戏了。从某种意义上来说,2048 不仅仅成为了 Hacker News 读者中的一个热门话题(它成为了 Hacker News 历史上被点赞次数排名第三的话题),它还在 Twitter,Facebook 甚至是在线下被广泛谈论。看到它渐渐成为一个全球范围的话题让我感到一点小小的不适。
与此同时,我的收件箱开始被那些喜欢这个游戏的玩家的来信占满,也有一些开发者希望能够得到我的授权来开发手机应用赚钱。
我面临的第一个问题就是我到底应该拿 2048 这个游戏怎么办,以及我该如何回复这些邮件。尽管 2048 对于我而言只是个小项目,而且我也没有对它寄予什么希望,我周围的人都建议我应该趁这个机会拿它好好赚一笔。
就我个人来说,我不太喜欢要拿 2048 这款游戏来赚钱的想法,因为它毕竟是基于别人的游戏而来的。
另外一个让我无比苦恼的是,为了专注于 2048 这款游戏,我必须要放弃我的其他项目。那时,我正在做一个 freelance 的项目,而专注于 2048 意味着我必须要停止那个项目或者是结束它。
把 2048 做成手机游戏,那是我不熟悉的一个领域,即使如此,我也必须要足够快,这样才能成为第一款 2048 的手游。这个想法吓到我了,因为这会让我跳出安逸的生活状态,而我对将要面对的问题一无所知。
这两个原因在那几天里一直折磨着我。我觉得没有任何可以摆脱这种痛苦的途径,任何我做的决定都会让我陷入麻烦。
一方面,我可以抓住这个机会(而且这个机会看起来会是一生中唯一的一次)并且获得回报,代价是误导玩家,让他们分不清到底哪个游戏才是最初的创意。
另一方面,我可以什么都不做继续我的生活。而我知道,事后当别人告诉我,我错过了这个机会的时候,我一定会后悔。
最终,我说服了自己,我决定什么都不做,因为我认为这是结束我所面临的压力的唯一办法。我决定让游戏继续开源,而且我不会做手机版。
在做了那个决定之后,我立马就感觉舒服多了。这使我觉得我做了一个正确的决定,我不会后悔了。
回到原点
在接下来的几天里,我依然觉得轻松。
那段时间,游戏的手机版本已经出来了。这些手机版中很多甚至都没有经过我的同意,或者其他参考的游戏的开发者的同意,当然其中的一些也指出了是模仿我的游戏。在看了 Threes 开发者们对此的反应后,我觉得不是由我导致的这一切,真好,当初那个决定果然是正确的。
我周围的很多人并不这么认为。我的朋友和家人认为我的决定糟糕透顶,但是同时我认为我只是丢掉了一个我不会想拥有第二次的机会罢了。
最初,他们的意见不会烦到我。我知道,我选择的这种方式摆脱了之前遇到的压力,而且在我的考虑中,这比金钱或者名声要重要的多。
但是这种感觉没有持续太长时间。几天之后,那些我认为我已经成功摆脱掉的问题都卷土重来了,甚至比以前还要严重。我开始后悔浪费掉了这个机会,而且我感觉的到,我的行为让我周围的人失望了。更让我感到糟糕的是,被别人制作的 2048 游戏登上了 AppStore 的榜首。
一线希望
我已经被我的状况搞到发狂了,但我还是有理由快乐起来。
即使有的人不在乎拿别人的劳动成果去赚钱,在开源社区依然有很多有创造力的人在乎游戏从何而来。他们只想让游戏变得更好,甚至是把它带到一个全新的高度。
看到数不清的各种版本的 2048 游戏的出现让我感到开心多了。我非常愉快的玩各种各样的版本,开心的看着他们能够创造出什么奇特的游戏。
人们充满激情的翻版这个游戏,把它做成各种完全不同的版本。发现别的人在努力的把你创造的东西发扬光大是一件幸福的事情,特别是你的作品能带给人们快乐,而你又享受这种感觉。
改变主意
感谢我的家人和朋友做出的努力,我意识到,唯一的办法,让我不觉得我失去了一个机会就是去接受它,去创造一个手机应用。我不会为了钱而做这件事情。事实上,钱也对我并不重要。真正重要的是我没有浪费一个机会,无论最后的结果是成功或是失败。
人们会这么想我呢?在每一次采访中,我都说,因为道德的原因,我不会从游戏中赚取一分钱。我认为,如果我改变了我的主意,我会被认为是伪君子,而我确实不想成为那种人。
最难受的是,这个决定会让那些对我寄予期望的人感到背叛。毕竟,我改变了我的主意,并做了一件我已经说过绝对不做的事情。这让我难受了好几天,但是最后让我接受这一切的是我知道,我不是为了钱而改变自己的想法。我选择去做是为了不让我在接下来的日子里感到错过了一个机会。
由于我的决定,那些把我以前说的话放在心上,并且钦佩我所做出的决定的人们很可能会感到被骗了。这也是我写这篇文章的理由之一:我想给我如此矛盾的选择做一个解释,这个选择是在什么样特殊的情况下做出的。
但愿我做这个决定的前因后果可以解释我的行为。如果不行,我希望至少能够帮助别人了解到这一切是怎么来的。
开发应用
我仍然认为保持游戏的原样仅仅只是把它打包成一个应用是不好的。2048 本来就不是我的游戏。相反,它是属于那些相信它的无数的贡献者们,我没有权利把它拿来己用。如果我想要这个决定看起来合理,那么我必须认真考虑如何创造这个应用。
最后,它花了我一个整个月的时间来开发,从最初的一点点开始到最后的细心打磨,精益求精。
作为一个 web 开发者,而且没有任何的手机开发经验,我无法一开始就做一个各方面都正规的 iOS 或者 Android 应用。所以,我决定使用 Phonegap。Phonegap 允许你使用 HTML,CSS 和 JavaScript 像 web 开发一样来构建一个手机应用。
使用 Phonegap 的问题是,如果你想要构建一个看起来像样的应用,你就要花很大的功夫。幸运的是,我想制作的是一个游戏,这意味着我不需要非常仔细的考虑不同操作系统上的界面效果。
我想要这个应用拥有一个菜单,因为在应用启动的时候直接把玩家放进游戏里不是一个非常好的体验。一个菜单同样也可以让我介绍新的游戏模式,这会给游戏添彩的。
我想要游戏逻辑是通用的,这样能够在创建一个新的游戏模式时,只需要定义一个对象,然后用类似「hook」的方式插入到游戏核心里去,并且可以非常容易的修改表现行为。
我最终从头开始一点点的构建这个应用的核心。我从开源的 2048 版本里保留的唯一的代码是移动图块的代码,这能够给玩家带来原汁原味的体验。由于这个应用的代码目前是闭源的(但是我也许会在未来把它开源了),所以如果我使用了别人贡献的代码就不公平了。
代码库最后发现比 web 版本的要大 3 倍,大部分的代码都是全新的。
在构建这个应用的过程中,我发现了很多提高和精简代码和接口的方式。我非常想要把这些优化提进开源的 2048 版本里。我也想要重构开源 2048 的代码,使它成为开源社区的一笔财富。
如果你对我最后实现的游戏感兴趣的话,你可以下载 iOS 和 Android. 版本进行体验。我希望你会喜欢它。
总结
但愿这篇文章能够给你们带来关于 2048 火爆背后的一些有意义的新观点,即使我处理这种状况的方式也许不是最佳的方式。
我所做出的大部分选择是基于我自己的感受来的,并且目的是为了解决自己的问题,而非是从项目中获得什么。
我希望这篇文章能够合理的解释我是如何又是为什么做出每一个决定的,并希望能够帮助任何遇到这些问题的人,让他们能够明白所要面对的到底是什么。