找回密碼
 注冊帳號

掃一掃,訪問微社區

綜合新聞 獨立游戲開發是如何讓我進退兩難的?

4
回復
392
查看
打印 上一主題 下一主題
[ 復制鏈接 ]
排名
1
昨日變化

8034

主題

8592

帖子

3萬

積分

Rank: 16

UID
1231
好友
186
蠻牛幣
12062
威望
30
注冊時間
2013-7-29
在線時間
4106 小時
最后登錄
2019-8-13

活力之星原創精華達人突出貢獻獎財富之證游戲蠻牛QQ群會員蠻牛妹VIP

馬上注冊,結交更多好友,享用更多功能,讓你輕松玩轉社區。

您需要 登錄 才可以下載或查看,沒有帳號?注冊帳號

x
這個折磨我多年的項目終于完成了。現在有種當年高考結束后的那種,空白的感覺。繃著的弦松了,之后是急劇的脫力感。其實還有一些收尾工作要做,但每次打開電腦之后,都是坐著發呆。拖延了一個星期,還是覺得應該寫個總結。至少把自己走過的彎路寫下來吧。

做獨立游戲,我覺得至少應該具備三個條件:

1.具備能看懂技術文檔的英文水平

2.具備基本的編程能力

3.具備基本的將想象具像化的能力

但如果你像我開始的時候一樣,什么都不會,我會鼓勵你保持熱情,但我不建議你真的全身心投入進去。如果還是心中躁動不安,無論如何都想嘗試的話,我真的希望每一個這么有熱忱的人都能成功。所以我寫了幾條淺薄的建議,至少請你規避我犯過的錯誤吧。

所以,這應該算是一篇錯誤經驗總結,以下的建議或者犯得錯誤可能在專業人士眼里不值一哂,但這些東西的確困擾了我很長時間,我希望我的這點建議能夠給予像我一樣,一無所知而又無知無畏的愣頭青們些許幫助吧。

問題之一:目標不明確

其實開始的時候,目的并不是做獨立游戲。根本就沒敢想。當時只是想做一個demo,好讓自己去應聘的時候更得心應手一些。但是做著做著就開始失控。誰說的來著,創作是件非常讓人上癮的事。

開始沒多久的一天,我突然意識到這可能是長這么大頭一次做自己的東西,做自我表達,那為什么一定要做一個demo呢,直接做成游戲的話表達的不是更清楚嗎?說干就干,從那天以后項目鋪的越來越大,想法也越來越多。潛識里就想把它做好,這個功能想做,那個東西想加進去,再加上那個時候精力無限,從早上一直忙到晚上十點多,飯都能忘了吃。那段時間很過癮,但也因為那種熱血上頭的狀態,使我忽略了很多問題,為以后的日子埋下了不少隱患。

第一個被忽視的問題就是,目標不明確。

憑著飽滿的精神和一腔熱血,看似每一天都很忙碌。但倒底要做成什么樣,自己并沒有想好。在很長一段時間里,我的工作模式都是,突然有個想法感覺不錯,然后馬上去搗鼓出來的個原型,一會兒又覺得那個創意很好,立刻著手做個功能實現。最后發現積攢下來的東西,前言不搭后語。這些也許可以作為素材以后用,但是做游戲不能這樣想到什么做什么。

創意可以天馬行空,但程序是一個系統工程。我是后來看羅伯特麥基寫的《故事》-第十九章-作家的創造方法才意識到這個錯誤。之后又推倒重來,浪費了大量時間。

總體而言,成功者和掙扎者之間的區別在于他們相反的工作方法:從里到外和從外到里。掙扎型作家傾向于采用這樣的工作方法:他憑空想出一個想法,稍加醞釀,便直奔鍵盤。——羅伯特麥基《故事》

真是當頭棒喝。將demo改成獨立游戲的決定做的太草率了。其實無論在何種狀況下,如果打算做獨立游戲,還是應該冷靜下來,認真考慮一下的。現在回過頭來看,更恰當的方式應該是,像大家廣泛建議的那樣:在開始動手做之前,先完成一個事無巨細的設定文檔。比如游戲的核心玩法是什么;要用什么算法實現;是3d還是;是橫版過關還是第一人稱;需要講故事嗎;要講故事的話是線形敘事還是非線性;需要人物嗎;人物動畫是幀動畫還是骨骼動畫……

或者收集腦子里蹦出來的各種畫面,比如坐車的時候窗外流動的霓虹燈,進而做出個特效;比如在快餐廳吃飯的時候看到的某個角落的景色,從而做出個場景;最后將這些零零碎碎的東西整理拼湊出個大綱。

這個過程需要的時間可能要比想象中的長的多,但好在這個部分可以在大腦中完成,有些時候只需要紙和筆,而不需要耗費過多的資源。在這個設定完成之前,不建議動手去做,但也不是說這個工程中就不需要寫程序了。想法還是需要去通過寫程序去驗證,看是否能夠實現或者效果是不是足夠好。

比如,我就曾想在游戲里實現一個畫面波動的效果。以下是將這個想法實現的過程,可能會感覺非常冗長:



靈感

在網上搜索一番之后,發現最常用的方法是用OpenGL自己寫一個shader,然后加進游戲里。但是我對OpenGL一竅不通,又不想花時間學習,當時就想放棄了。不過在瀏覽游戲引擎SpriteKit類庫的時候,發現有一個叫SKEffectNode的類,文檔中提了一句說可以調用CIFIlter類實現某種效果。我又去看CIFitler類,這個類好像是iOS用來處理圖片的,其中有一些Distortion的filter效果看起來很有趣,也許能用來實現我想要的效果,但是這些都是處理靜態圖片的,并不能處理動態的東西。


CIBumpDistortion文檔說明

前提

實驗嘛,那就弄著玩唄。SpriteKit是先在ViewController里設置一個SKView,然后再通過SKVIew的Scene屬性來設置游戲內容。所以基本上這個Scene類就是游戲場景的地基,之后所有的人物啊,物體啊等等就加在這個Scene里。文檔里有一個提示,說SKScene類其實是SKEffectNode的子類,所以也就是說如果對Scene類像使用SKEffectNode類一樣操作,比如指定filter什么的,理論上是可行的。并且對Scene添加效果,那所有添加到Scene類的子類都會有相同的效果。



SKScene是SKEffectNode的子類

實施:

1.實際操作之后發現黑屏,而且內存猛增。不好使?

2.看log發現實際上方法已經運行了,但不知道為什么沒有效果。難道不兼容?官方文檔上建議可以使用CIFilter,應該是沒問題的。

3.于是又重新開了一個hello world工程,用最簡單的方式測試,這次卻可以運行了。

4.好吧,最起碼證明這個方案是可行的,只是不知道為什么在我的游戲工程里不行。像我這樣的凡人,就只能用最笨的方法,一點點的去試,看到底是哪里出了問題。于是我在游戲工程里加了一段跟在測試工程里一模一樣的代碼,運行之后發現還是不行。

5.唯一不同的是在測試工程里用的是隨便找來的圖片素材,而游戲工程里是游戲素材。這次又換成測試工程里的圖片,運行之后,ok了。

6.所以是素材的問題,又是一番測試,最后得出結論:想要通過SKEffectNode實現效果,整體Scene的內容不能大于1024*768。超過這個尺寸就無法顯示。這一點我覺得應該在文檔里注明的,但是并沒有。也許寫在別的地方了,但我沒有發現。有很多時候文檔并不會寫的事無巨細,在網上也找不到與之相關的帖子。

7.總之,又是對素材和場景一番修改,總算是可以運行了。但是如之前所說,CIFilter是處理靜態圖片的,而這個Distortion在設定好,center,scale等等參數之后,效果是固定的。比如這個圓心就在那個位置,然后半徑就是那么大,而我需要的是動態的,是半徑逐漸變大的波動效果。

8.電影的原理不就是每秒24幀,本質上也都是靜態圖片。想到這,心里也就有了答案。只要在一秒以內更新24次以上就行了,而游戲引擎自身攜帶的update方法就是每秒更新60次,所以把變化的方法寫在update方法里就能實現動態效果了:


最終效果:


雖然說不應該邊想設定邊寫程序,但我說的是應該將設計與實現分開,其實上面寫的這個過程是想法的驗證,應該算是設計的一部分。做游戲絕對需要奇思妙想,但將想法落地,要比想象中困難的多,而且很有可能完成的東西,的確實現了想要的效果,但卻和想象中的不一樣。

在整個游戲的構思慢慢成型之前,這種橫沖直撞的試錯階段會持續很長時間,新接觸的時候尤其如此。這是一個驗證的過程,也是一個妥協的過程。也正因為這樣,這種耗時費力的工作應盡量在設定階段完成。如果像我一樣,想到什么做什么,很有可能會因為,不斷在發散思維和邏輯思維之間做轉換,且因為想法驗證出錯而打擊積極性,搞得自己精疲力盡。

沒有文檔或明確的目標,就是需求不明確。需求不明確,就沒法做需求分析。沒有需求分析,就沒法有條理的做設計。沒有設計,也就沒法做功能實現和編程。

從外到里的寫作:邊寫對白邊尋找場景,邊寫場景邊尋找故事———是最沒有創造力的方法。——羅伯特麥基《故事》

總結了失敗經驗,才發現動手去做所花費時間反倒不是最長的,而做設定也是需要耗費大量心血的。

通過這個經歷也折射出第二個我沒意識到的問題:

問題之二:做獨立游戲花費的時間往往超乎想象

很多成名老哥都說過這個問題,像高瞰老師和吹哥都說過:人們往往對項目周期估計不足。但我聽到這些忠告的時候都是項目進行到中后段,進退兩難的時候了,并沒有起到什么作用。所以我希望你看到這個建議的時候,還來得及。

設定需要異想天開,然后還要驗證這些想法能否實現。尋找靈感和處理bug都需要時間,如果你做的是個全新的東西,出了問題也只有你自己能幫你。因為別人沒做過,也就沒遇到過這些問題,自然也無法在網上找到解答,時間上更是沒法保證。

我應該建議:對項目周期有足夠的估計,但這也可能是一句廢話。



嘗試新的東西,總會有新的問題。而新的問題誰也不知道什么時候能解決。所以,要做好足夠的心理準備,慎重選擇開始的時間和地點。在什么時間,什么樣的地點,看似微不足道,但如果對開發周期估計不足,這些因素反倒會成為最棘手的阻礙。

時間

兼職去搞聽起來不錯,下班之后總能抽出點時間吧。但是如果是游戲開發相關的職業,工作壓力還是挺大的。加班是常態,回家之后倒頭就睡,連周六日都在家中補覺。就算時間抽得出來,精力也抽不出來。如果不是it相關,就算有時間,也得花大把時間從頭學起。學習是最累的,而世上大多數工作都不輕松,等費勁心思鼓動起來的寥寥熱情與精力消耗殆盡,卻連基本的動畫與移動,都無法做到同步的時候,也定會產生放棄的念頭。但只要意志堅定堅持下去,無論是以上哪一種情況都會有成效的,只是無法改變兼職所帶來的事倍功半。

只有全身心投入,才能以最大的效率去隨心所欲的創作。但無論做什么,將自己全部的時間投入進去勢必會打亂生活重心。而在這樣的情況下,對開發周期估計不足,就可能會消耗大量的成本。時間成本自不必說,生活成本超支的痛苦往往超乎每一個社會新鮮人的想象。宮崎駿曾經說過:要想隨心所欲的創作就要攢夠五年的生活費。可能原話不是這么說的,但說的是這個意思。

時間總會不知不覺的流失,但究竟時間都花在哪了?以我自己的情況舉例,首先是畢業后的這個時間點可以說非常糟糕,不確定性太多,導致項目在前期時一再中斷,拖長了周期。但無論怎樣,憑著下班后抽出來的空閑時間兼職做了一段時間之后,感覺自己也積攢了一些經驗,項目也初見雛形。但如果集中力量全職去做的,覺得三個月就能做出成品,遂辭職回家。

嘿,愣頭青,什么也不懂,怎么可能會估計的準呢。



當初說是三個月,可三個月之后又三個月,三個月之后又三個月。

就像上面提過的,驗證新的想法并將其實現,耗時費力。但有很多看似普通的問題,不一定很費腦子,但做起來非常麻煩。比如最基本的角色移動,想起來很簡單:玩家發出移動命令,人物移動到指定地點同時播放走路的動畫,到達地點人物停止移動并停止動畫。

但是真正編程起來就很復雜:

  • 什么時候開始移動?是點擊手機屏幕之后,還是點擊的手指抬起之后。
  • 是勻速移動,還是先加速再勻速?
  • 就先設定成勻速移動,但是如果在角色第一步抬腳的動畫開始的時候就移動,那人物抬起的腳還在空中,人物已經漂移了,不行,太突兀了。
  • 必須要在人物第一步落地之后再開始移動,這就需要把人物走路動畫分成,抬腳,走路循環,停止走路三種動畫。
  • OK,設定完動畫狀態,使人物在抬腳動畫播放完之后,再觸發移動方法,但是人物已經移動到指定地點了,人物的動畫還沒播放完,還在邁步,怎么處理這個情況呢?



開始的時候,我每天處理最多的都是這些細枝末節的問題,因為是新手,沒接觸過自然也考慮不到那些細節。對我來說這個過程沒法避免,只有通過不斷的犯錯和學習,才能最終找到合適的解決方案:


人物走路的邏輯圖

單就這一個問題,在腦海中設想,也就三分鐘,但做起來兩天都不一定能從各種bug里找到出路。這還沒涉及到場景之間的轉換問題;戰斗系統里人物的ai問題;另外我用的是橫版過關的視角,還要處理人物離屏幕遠近導致的上下關系變化;還得考慮人物離屏幕遠近的大小關系,從而實現透視效果,等等等等。

時間就是在這樣不斷解決零散問題中悄悄流逝的。

地點

當時間超出預期的時候,你會開始變得焦躁不安,而且日漸嚴重。而長時間深入簡出使你在親戚中聲明遠揚,你的臥室會變成十里八村七大姑八大姨鐘愛的旅游景點,各路沒聽說過的陌生親戚會強裝客套滿臉堆笑以示關心的擠破門來想要一睹你超凡脫俗的尊容。讓本就心急如焚注意力難以集中的你更加精神渙散。所以這里有個衷心建議:除非是你自己的房子,你一個人住,否則千萬不要在家里工作。

很多時候你自己最清楚風險是怎樣的,而你身邊的人往往覺得你不知道,會不斷提醒你。也許你不往心里去,因為你自己最清楚自己在追求什么,但誰也耐不住這樣日復一日的干擾。給自己一個良好的工作環境能提升不少效率,這個地點設在哪里都行,就是千萬別設在家里。

時機

說了這么多,那到底什么情況下開始比較好?在我看來,做獨立游戲的最佳時機應該是在大學階段。

我特別后悔,為何沒有在大一時萌生想法的時候就開始。即使起初沒找到入門的途徑,也應該堅持求索。大學時期,只要不是勵志搞學術,只單單應付考試的話,相信絕大多數人都有充裕的業余時間。如果你是游戲開發相關專業,編程,美術,數字多媒體藝術等等的在校大學生,并且有做游戲想法,那我建議你馬上,立刻動手。也不用花太多時間,只要每天拿出兩小時搗鼓搗鼓,一年下來也應該能做個差不多的東西出來。四年下來能積攢不少經驗,即使只做出了一個游戲,那也會是個不錯的畢業設計,運氣好還能靠它掙點零花錢。

當然,剛開始立項要緊湊,不要鋪張。先做設定,慢慢驗證,想法成型之后再做成品。

第一,大學時期精力充沛。第二,大學時期食宿不用操心。第三,也是最主要的,大學時期有時間,時間是最大的本錢。并且這也算是課余練習,失敗了也無所謂。

簡單建議

1.選擇游戲引擎

對于初學者而言,無論是什么平臺,相對3d引擎而言,選擇先從2d游戲引擎開始,會更輕松一些,至少可以先了解一下游戲的開發機制。而我自己選擇了2d引擎之后,平臺上則選擇了手機平臺,因為它相對來說更加輕量化。

我最開始也打算做3d的,但是建模這一塊完全不行。大學時為了學分也選修過maya,材質啊,光照啊,折射率啊已經很頭疼了。除此之外,建模相當于用鼠標做雕塑,和所有技能一樣需要時間練習,沒個一年半載熟練不了。我開始的時候以為只需要三個月就能把游戲完成,哪有心思去學習建模啊。

不過,要是決心做3d,建模是必須要掌握的,不然也要有一個會建模的伙伴。雖然我自己是單干,但我是找不到人同時又沒錢雇人。有條件的話還是要找合作伙伴,畢竟多人分工總要快過一人苦撐。

選擇2d引擎,還有一個原因是我囊中羞澀,掏不出高昂的授權費。我最開始的第一選擇其實是unity,但1000刀授權費把我勸退了(現在據說不需要了),2d引擎中很多都是開源的。

立項的時時候,游戲引擎的第一選擇其實是x,但上學的時候cpp并沒有學好,而且我一直在說,三個月嗎,心急火燎的,根本沒心思去看那個亂成一團的類庫。當時我對iOS開發非常感興趣,一直想學習一下Object-C。再加上蘋果公司看好手機游戲的前景,發布了自己的游戲引擎。我本著學習Object-C的初心,而且當時發布的蘋果游戲引擎SpriteKit并不比其他2d引擎差多少,再加上iOS又不是開源,蘋果自家引擎兼容性上不會有太多問題,遂決定使用Sprite kit。但這算是踩了一個坑。

在這里再說一個我自己的建議:無論是3d引擎還是2d引擎,應該選擇那個被業內廣泛使用的游戲引擎。更流行代表運行更穩定,功能更強大,即使出現了各種各樣的問題,因為使用的人多也就有更活躍的社區,更大幾率能找到相似的解決方案,即使是遇上了引擎自己的bug,也會因為龐大的市場壓力,廠家會在更短的時間里發布補丁修復。即使項目不成功爛尾了,也能憑著積攢下的經驗獲得更多新的工作機會,畢竟使用相同引擎的人多。

我學習游戲引擎的主要方式是看官方文檔,主要難點是英文。關鍵是掌握游戲引擎使用的計算機語言,比如cocos2dx是cpp,unity是c#,我用的spritekit是oc。之后就是熟悉引擎的各種方法,然后就可以開工了。

2.美術

我在美術上能說的乏善可陳,因為我自己不會畫畫,吃了不少虧。唯一能有點價值的就是,一定要控制素材的大小。雖說素材越大細節越好,但是導入到游戲中之后占用的內存可不等于素材在磁盤上占用的空間,有的時候占用的內存是磁盤上的四倍大小。而如果用幀動畫的話也要控制幀數,而且每一幀的素材也要盡量小一點,畢竟幀數越多,占用的內存就越大。素材應該在盡量保有細節的情況下盡量小,用壓縮工具給圖片素材瘦身是必須的。

3.一些建議

  • 在實際開發當中,update方法是游戲引擎的核心。我一般是拿來判斷狀態和實現邏輯。
  • 光照效果非常昂貴,慎重使用。要想在手機上使用華麗的光照系統,要對場景大小嚴格控制。
  • 多線程不是必須的,但如果打算用無loading機制,應該花心思好好設計一個多線程系統。
  • 謹慎將所有資源都載入到一個關卡里,無論最開始的時候它占用的內存有多小。除非游戲已經定型,否則永遠不知道還要往里加多少東西,一旦關卡的系統骨架確定,再去修改資源載入邏輯等于傷筋動骨。
  • 內存管理是重中之重,千萬別裝太多素材讓內存爆了。iOS上的內存泄漏是主要課題,這一點如果有設定文檔指引按部就班的寫代碼,仔細一點就可以避免。可別像我一樣,想到哪寫到哪,等開發時間長了,自己寫過的代碼自己都能忘,什么地方強引用,什么地方內存沒釋放肯定也記不清了,出問題了根本找不著北。



雖然開發過程艱辛且漫長,煎熬且令人瘋狂。但是日復一日的努力,最終會在某一天化腐朽為神奇。當第一次在腦中靈光一閃的情景,不佳思索的化作代碼,全新而又不存在的東西一如自己的設想,在程序里沒有報錯一次通過,并分毫不差的呈現在眼前的時候,就是最爽的精神刺激。

現實的差距

經過無數思維停滯的下午,熬過無數輾轉難眠的午夜,數不清多少次徘徊于放棄的邊緣,憑著僅存的一絲夢想的余燼,隱忍著將所有模塊一一完成,終于第一次運行設想中的游戲流程。


初版運行截圖

心情從期待到興奮,又從興奮到失望。因自我感覺良好而產生的零星閃光點也在多次運行后無影無蹤。


初版人物

平庸,溢于言表的平庸,甚至有點不堪入目。實現功能和做出表達是兩回事,就好比實現了人物擊打敵人的功能并不代表一定能獲得打擊感。游戲除了程序以外的,應該還需要別的什么,不可名狀的東西。這一點我作為玩家時就知道,但真的動手做起來,是如此的手足無措。當嘗試了各種自己能想到的方法,依然達不到心中模板游戲的效果,我才真正認識到什么叫不可名狀。

從小到大也玩了不少游戲,多年游玩的經歷讓我對高標準習以為常,我自己并沒意識到玩家其實是很挑剔的。那些脫穎而出的作品,我不假思索的認為那就是游戲本該有的樣子。但如果想做出那樣的優秀作品,就必須同那些作品一樣,與那些默默耕耘多年的大廠競爭。而我自己含辛茹苦做出來的初版樣品,連我自己都沒法說服。

絕望。

要放棄嗎?轉眼間已經做了一年半了,各大公司的校招早就已經開始招聘我下一屆的學生了。社會招聘,我有什么呢,一個平庸的半成品。這么長時間的心血付之東流,心里也過不去。

做下去?困難高聳入云,根本看不到盡頭。騎虎難下,進退兩難。


作者:火樹
來源:機核

回復

使用道具 舉報

7日久生情
2524/5000
排名
2252
昨日變化

0

主題

1120

帖子

2524

積分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
163777
好友
2
蠻牛幣
1055
威望
0
注冊時間
2017-2-27
在線時間
780 小時
最后登錄
2019-8-13
沙發
2019-7-26 10:08:47 只看該作者
回復

使用道具 舉報

6蠻牛粉絲
1248/1500
排名
1815
昨日變化

8

主題

217

帖子

1248

積分

Rank: 6Rank: 6Rank: 6

UID
131585
好友
0
蠻牛幣
2756
威望
0
注冊時間
2015-12-13
在線時間
291 小時
最后登錄
2019-8-13
板凳
2019-7-29 09:50:05 只看該作者
回復

使用道具 舉報

5熟悉之中
627/1000
排名
5713
昨日變化

10

主題

150

帖子

627

積分

Rank: 5Rank: 5

UID
89846
好友
4
蠻牛幣
519
威望
0
注冊時間
2015-4-7
在線時間
221 小時
最后登錄
2019-8-13
QQ
地板
2019-7-29 10:30:38 只看該作者
火鉗劉明
回復

使用道具 舉報

8常駐蠻牛
5545/10000
排名
1669
昨日變化

0

主題

3963

帖子

5545

積分

Rank: 8Rank: 8

UID
185339
好友
1
蠻牛幣
3488
威望
0
注冊時間
2016-11-20
在線時間
804 小時
最后登錄
2019-8-13
5#
2019-7-30 09:09:07 只看該作者
{:92:}
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 注冊帳號

本版積分規則

捕鱼王怎么进不去 开一个彩票投注站要多少 圆角分模式彩票平台 重庆时时三星彩走势图网易 开心彩票注册送50元 桂林华逸娱乐 下载app领彩金37 篮球投注网 8码二中二多少组 福彩3d三码计划软件 广东11选5计划免费网站 广西时时彩 新强时时彩最新开奖结果 同城游戏手机版下载 双人斗地主二人斗地主玩法 易购彩票 福彩3d杀和尾