從《2048》看WEB開發(fā)者是如何做游戲
前幾周對我來說是一個漫長而瘋狂的時間。三月份,我因為好玩,制作了一款叫《2048》的游戲,然后以開源的形式發(fā)布在Github上了。在接下來的幾周時間里,它意外成為了世界范圍內(nèi)的熱門話題,而且超過了兩千三百萬的人玩過了。
這段時間是我生***最激動人心的一段時間,同時也是壓力***的一段時間。知道你所創(chuàng)造的東西被數(shù)百萬人玩到并且喜歡,這是一種非常棒的感覺。對于大多數(shù)人而言(包括我自己),這會帶來繼續(xù)創(chuàng)作新東西的動力。與此同時,當(dāng)你創(chuàng)作的東西世界聞名的時候,你必須要面對一堆新的挑戰(zhàn)。如果你從來沒有面對過這樣的壓力,來自別人的關(guān)注和別人對你的期望會把你壓垮。
在這篇文章中,我會和你們分享我所經(jīng)歷的一切,以及我是如何處理它們的,既站在個人的角度也從專業(yè)的角度進行闡述。我也會解釋到底是什么樣的心路歷程讓我改變了我的想法而去制作這個游戲的手機版本。
這是一篇很長的文章,但是我希望這篇文章能夠帶來一些有意義的想法,并且能夠幫助那些可能要面對類似問題的人。
一切是怎么開始的
我利用周末的時間寫了《2048》這個游戲,僅僅只是好玩而已。我以前被兩個游戲所吸引,它們分別是《1024》和《2048》。這兩個游戲我都喜歡玩,我想用一種不同的視覺展現(xiàn)效果和更快速的動畫來創(chuàng)造我自己的版本,只是試試看自己行不行。在那個時候,我還不知道有款叫Threes的游戲,它是所有這類游戲的原型(包括《2048》)。
AsherVollmer和GregWohlwend作為Threes的開發(fā)者,已經(jīng)證明了他們在開發(fā)這款游戲的時候投入了大量的時間和精力。就Threes的模仿者都大紅大紫的現(xiàn)狀,他們最近表達了他們的不平。我理解他們的感受,我也對他們在創(chuàng)造Threes中付出的努力和心血表示由衷的敬佩?!?048》確實欠他們的。
在制作《2048》的過程中,我決定把項目托管到Github上去,并且通過Github完成項目。由于這是一個大部分都基于別人工作的項目,所以我不想把它設(shè)為私有的項目。
當(dāng)我完成了這個游戲之后,我就通過GithubPages發(fā)布了它,并把它發(fā)表在DesignerNews上,僅僅只是為了看看大家反饋的效果而已。
爆發(fā)
接下來的一天,我從朋友那里收到了一條消息,讓我看看HackerNews的首頁。有人把《2048》發(fā)布在那里了,而且現(xiàn)在被頂?shù)搅?**的位置。通過GoogleAnalytics的報告可以知道,現(xiàn)在有上千人在HackerNews的網(wǎng)站上。我完全無法相信發(fā)生的這一切。
盡管這就像互聯(lián)網(wǎng)常見的爆炸新聞一樣,來的快去的也快,我還是花了一整天的時間查看這條帖子的狀態(tài)??吹疥P(guān)注數(shù)目持續(xù)上升使我非常興奮,同時還有一點害怕。
我完全被那些積極回應(yīng)的評論震驚了。每個人都在談?wù)撍麄兪侨绱说南矚g這款游戲,簡直就停不下來,甚至在上班時間也在玩。
接下來的幾天
我以為大家對《2048》的興趣很快便會過去,但是接下來的幾天,大家的熱情始終如一。事實上,大家更加關(guān)注這個游戲了。從某種意義上來說,《2048》不僅僅成為了HackerNews讀者中的一個熱門話題(它成為了HackerNews歷史上被點贊次數(shù)排名第三的話題),它還在Twitter,F(xiàn)acebook甚至是在線下被廣泛談?wù)摗?吹剿鼭u漸成為一個全球范圍的話題讓我感到一點小小的不適。
與此同時,我的收件箱開始被那些喜歡這個游戲的玩家的來信占滿,也有一些開發(fā)者希望能夠得到我的授權(quán)來開發(fā)手機應(yīng)用賺錢。
我面臨的***個問題就是我到底應(yīng)該拿《2048》這個游戲怎么辦,以及我該如何回復(fù)這些郵件。盡管《2048》對于我而言只是一個小項目,而且我也沒有對它寄予什么希望,我周圍的人都建議我應(yīng)該趁這個機會拿它好好賺一筆。
就我個人來說,我不太喜歡要拿《2048》這款游戲來賺錢的想法,因為它畢竟是基于別人的游戲而來的。
另外一個讓我無比苦惱的是,為了專注于《2048》這款游戲,我必須要放棄我的其他項目。那時,我正在做一個freelance的項目,而專注于《2048》意味著我必須要停止那個項目或者是結(jié)束它。
把《2048》做成手機游戲,那是我不熟悉的一個領(lǐng)域,即使如此,我也必須要足夠快,這樣才能成為***款《2048》的手游。這個想法嚇到我了,因為這會讓我跳出安逸的生活狀態(tài),而我對將要面對的問題一無所知。
這兩個原因在那幾天里一直折磨著我。我覺得沒有任何可以擺脫這種痛苦的途徑,任何我做的決定都會讓我陷入麻煩。
一方面,我可以抓住這個機會(而且這個機會看起來會是一生中唯一的一次)并且獲得回報,代價是誤導(dǎo)玩家,讓他們分不清到底哪個游戲才是最初的創(chuàng)意。
另一方面,我可以什么都不做繼續(xù)我的生活。而我知道,事后當(dāng)別人告訴我,我錯過了這個機會的時候,我一定會后悔。
最終,我說服了自己,我決定什么都不做,因為我認為這是結(jié)束我所面臨的壓力的唯一辦法。我決定讓游戲繼續(xù)開源,而且我不會做手機版。
在做了那個決定之后,我立馬就感覺舒服多了。這使我覺得我做了一個正確的決定,我不會后悔了。
回到原點
在接下來的幾天里,我依然覺得輕松。
那段時間,游戲的手機版本已經(jīng)出來了。這些手機版中很多甚至都沒有經(jīng)過我的同意,或者其他參考的游戲的開發(fā)者的同意,當(dāng)然其中的一些也指出了是模仿我的游戲。在看了Threes開發(fā)者們對此的反應(yīng)后,我覺得不是由我導(dǎo)致的這一切,真好,當(dāng)初那個決定果然是正確的。
我周圍的很多人并不這么認為。我的朋友和家人認為我的決定糟糕透頂,但是同時我認為我只是丟掉了一個我不會想擁有第二次的機會罷了。
最初,他們的意見不會煩到我。我知道,我選擇的這種方式擺脫了之前遇到的壓力,而且在我的考慮中,這比金錢或者名聲要重要的多。
但是這種感覺沒有持續(xù)太長時間。幾天之后,那些我認為我已經(jīng)成功擺脫掉的問題都卷土重來了,甚至比以前還要嚴重。我開始后悔浪費掉了這個機會,而且我感覺的到,我的行為讓我周圍的人失望了。更讓我感到糟糕的是,被別人制作的《2048》游戲登上了AppStore的榜首。
一線希望
我已經(jīng)被我的狀況搞到發(fā)狂了,但我還是有理由快樂起來。
即使有的人不在乎拿別人的勞動成果去賺錢,在開源社區(qū)依然有很多有創(chuàng)造力的人在乎游戲從何而來。他們只想讓游戲變得更好,甚至是把它帶到一個全新的高度。
看到數(shù)不清的各種版本的《2048》游戲的出現(xiàn)讓我感到開心多了。我非常愉快的玩各種各樣的版本,開心的看著他們能夠創(chuàng)造出什么奇特的游戲。
人們充滿激情的翻版這個游戲,把它做成各種完全不同的版本。發(fā)現(xiàn)別的人在努力的把你創(chuàng)造的東西發(fā)揚光大是一件幸福的事情,特別是你的作品能帶給人們快樂,而你又享受這種感覺。
改變主意
感謝我的家人和朋友做出的努力,我意識到,唯一的辦法,讓我不覺得我失去了一個機會就是去接受它,去創(chuàng)造一個手機應(yīng)用。我不會為了錢而做這件事情。事實上,錢也對我并不重要。真正重要的是我沒有浪費一個機會,無論***的結(jié)果是成功或是失敗。
人們會這么想我呢?在每一次采訪中,我都說,因為道德的原因,我不會從游戲中賺取一分錢。我認為,如果我改變了我的主意,我會被認為是偽君子,而我確實不想成為那種人。
最難受的是,這個決定會讓那些對我寄予期望的人感到背叛。畢竟,我改變了我的主意,并做了一件我已經(jīng)說過絕對不做的事情。這讓我難受了好幾天,但是***讓我接受這一切的是我知道,我不是為了錢而改變自己的想法。我選擇去做是為了不讓我在接下來的日子里感到錯過了一個機會。
由于我的決定,那些把我以前說的話放在心上,并且欽佩我所做出的決定的人們很可能會感到被騙了。這也是我寫這篇文章的理由之一:我想給我如此矛盾的選擇做一個解釋,這個選擇是在什么樣特殊的情況下做出的。
但愿我做這個決定的前因后果可以解釋我的行為。如果不行,我希望至少能夠幫助別人了解到這一切是怎么來的。
開發(fā)應(yīng)用
我仍然認為保持游戲的原樣僅僅只是把它打包成一個應(yīng)用是不好的?!?048》本來就不是我的游戲。相反,它是屬于那些相信它的無數(shù)的貢獻者們,我沒有權(quán)利把它拿來己用。如果我想要這個決定看起來合理,那么我必須認真考慮如何創(chuàng)造這個應(yīng)用。
***,它花了我一個整個月的時間來開發(fā),從最初的一點點開始到***的細心打磨,精益求精。
作為一個web開發(fā)者,而且沒有任何的手機開發(fā)經(jīng)驗,我無法一開始就做一個各方面都正規(guī)的iOS或者Android應(yīng)用。所以,我決定使用Phonegap。Phonegap允許你使用HTML,CSS和JavaScript像web開發(fā)一樣來構(gòu)建一個手機應(yīng)用。
使用Phonegap的問題是,如果你想要構(gòu)建一個看起來像樣的應(yīng)用,你就要花很大的功夫。幸運的是,我想制作的是一個游戲,這意味著我不需要非常仔細的考慮不同操作系統(tǒng)上的界面效果。
我想要這個應(yīng)用擁有一個菜單,因為在應(yīng)用啟動的時候直接把玩家放進游戲里不是一個非常好的體驗。一個菜單同樣也可以讓我介紹新的游戲模式,這會給游戲添彩的。
我想要游戲邏輯是通用的,這樣能夠在創(chuàng)建一個新的游戲模式時,只需要定義一個對象,然后用類似“hook”的方式嵌入到游戲核心里去,并且可以非常容易的修改表現(xiàn)行為。
我最終從頭開始一點點的構(gòu)建這個應(yīng)用的核心。我從開源的《2048》版本里保留的唯一的代碼是移動圖塊的代碼,這能夠給玩家?guī)碓兜捏w驗。由于這個應(yīng)用的代碼目前是閉源的(但是我也許會在未來把它開源了),所以如果我使用了別人貢獻的代碼就不公平了。
代碼庫***發(fā)現(xiàn)比WEB版本的要大3倍,大部分的代碼都是全新的。
在構(gòu)建這個應(yīng)用的過程中,我發(fā)現(xiàn)了很多提高和精簡代碼和接口的方式。我非常想要把這些優(yōu)化提進開源的《2048》版本里。我也想要重構(gòu)開源《2048》的代碼,使它成為開源社區(qū)的一筆財富。
如果你對我***實現(xiàn)的游戲感興趣的話,你可以下載iOS和Android。版本進行體驗。我希望你會喜歡它。
總結(jié)
但愿這篇文章能夠給你們帶來關(guān)于《2048》火爆背后的一些有意義的新觀點,即使我處理這種狀況的方式也許不是***的方式。
我所做出的大部分選擇是基于我自己的感受來的,并且目的是為了解決自己的問題,而非是從項目中獲得什么。
我希望這篇文章能夠合理的解釋我是如何又是為什么做出每一個決定的,并希望能夠幫助任何遇到這些問題的人,讓他們能夠明白所要面對的到底是什么。