Unity學(xué)習(xí)筆記 Vol.88 游戲開發(fā)怎么學(xué)習(xí)
轉(zhuǎn)載于YouTube
博主:Game Maker's Toolkit(游戲設(shè)計(jì)工具箱)
????首先我需要學(xué)習(xí)如何制作電子游戲,這需要很大的努力也是很大的挑戰(zhàn),所以,相信我所說的,整個(gè)游戲制作帶給我的挑戰(zhàn),幾乎在它真正開始之前就已經(jīng)結(jié)束了,讓我告訴你發(fā)生了什么。
????首先讓我們后退一步,因?yàn)槲乙龅牡谝患率沁x擇一個(gè)游戲引擎,游戲引擎至少在這個(gè)例子中是游戲引擎至少在這個(gè)例子中是。一款幫助你制作游戲的軟件通過處理游戲開發(fā)中困難和無聊的內(nèi)容,比如讓圖像呈現(xiàn)在屏幕上面適配各種控制器進(jìn)行物理計(jì)算以及更多更重要的是他們有許多非常方便的工具,這是專門為你想在游戲中做的事情設(shè)計(jì)的,如動(dòng)畫和UI?,F(xiàn)在有很多游戲引擎我的意思是最流行的是 Unity、虛幻引擎、 Godot,Pico8、 Game maker、 Construct,另外還有針對特定游戲類型的游戲引擎,比如 Twine、 RPG Maker和 Adventure game studio,甚至有的游戲引擎是為特定的生態(tài)系統(tǒng)而生的,比如給 Switch做開發(fā)的 Game Builder garage,PS4的 Dream,以及為 Roblox平臺(tái)而生的 Roblox,每一個(gè)都有優(yōu)點(diǎn)和缺點(diǎn)有真愛粉也有黑子,但最終,我只能選一個(gè),所以最后我決定選擇Unity,我選擇 Unity有很多原因,它似乎在強(qiáng)大和相對容易學(xué)"之間取得了很好的平衡,這很好因?yàn)殡m然我計(jì)劃自己制作的第一款游戲是2D的,但我可能會(huì)想做3D的,這意味著我不需要學(xué)習(xí)新引擎,此外 Unity幾乎支持市面上所有的平臺(tái),所以如果我想將自己的游戲放到PS5上運(yùn)行,這在技術(shù)上是可行的,這在經(jīng)濟(jì)上是合理的。但是使我選用Unty的最有力的論據(jù),是它的流行程度,Unity開發(fā)了很多游戲比如《空洞騎士》,以及《茶杯頭》、《糖豆人》,以及《胡鬧廚房》、《都市:天際線》,以及《爐石傳說》,它是目前 steam上最受歡迎的游戲引擎,在我們最近的 GMTK Game jam中,更多的人使用 Unity來制作他們的游戲,超過了其他游戲引擎用戶的總和,這種流行程度對我來說非常重要,因?yàn)檫@意味著有更多的人來幫助我學(xué)習(xí)它,有更多的教程更多的資源,更多的資源更多的插件,有更多的人可供我陷入困境時(shí)求助,例如有很多人在GMTK聊天群,他們精通如何使用 Unity,而且我認(rèn)識(shí)一些經(jīng)驗(yàn)豐富的 Unity用戶,如來自Blackthorn Prod的Noa,以及來自 Mix and jam的 Andre,當(dāng)然的他們都能夠幫助我走岀困境,那真的很糟糕。
????好的這就是我的決定,抱歉 Godot.男孩兒們,這都是關(guān)于 Unity的,第一步完成選擇一個(gè)游戲引擎,現(xiàn)在開始第二步,學(xué)會(huì)如何使用它,這是磨礪之路的開始,所以就像我說的有很多關(guān)于 Unity的教程,這正是當(dāng)我剛開始學(xué)習(xí)的時(shí)候我想要使用的,我上 Youtube輸入了"Unity教程",然后找到了一群看起來就很懂的人,他們可以教我如何使用這個(gè)軟件,所以他們教我如何制作游戲,我也兢兢業(yè)業(yè)的跟著做了,每次他們點(diǎn)擊方框的時(shí)候,我也點(diǎn)擊屏幕上的這個(gè)方框,每當(dāng)他們輸入一行代碼的時(shí)候,我也輸入同樣的代碼,不久之后我便擁有了一款在我的電腦上可行的游戲,這非常令人興奮。但幾周后,我決定打開一個(gè)空白的 Unity項(xiàng)目,看看我學(xué)到了什么,然而答案是什么都沒學(xué)會(huì),就像他們說過的所有東西從左耳進(jìn)又從右耳出來了,我甚至不能讓一個(gè)角色出現(xiàn)在屏幕上并四處走動(dòng)這簡直太可怕了,最終是我自己的錯(cuò)。你們還記得我做過的關(guān)于策略類游戲的教程視頻嗎?提到了這有一些箭頭上面寫著“點(diǎn)擊這里”、“點(diǎn)擊那里“,其實(shí)他們在教學(xué)方面根本沒有效果,但是我學(xué)習(xí)Unity的時(shí)候就完全這樣做的,我就一個(gè)反面教材我好像自己耍了自己,但說實(shí)話這真的很讓人泄氣,我真的感覺到了自己就像個(gè)白癡,就像我浪費(fèi)了幾周的時(shí)間,而我都不知道我是否是游戲開發(fā)的料。就像我甚至不能觀看教程并理解其中的內(nèi)容的話,也許我天生就不是干這行的料,也許我應(yīng)該堅(jiān)持我已經(jīng)掌握的,我是說這都是幾個(gè)月前的事了,我本來打算做我現(xiàn)在正在做的這個(gè)系列的,在那時(shí)候我想也許我應(yīng)該取消它,這太糟糕了這太可怕了,但后來我想到了 Adobe premiere,這是我用來制作這個(gè)頻道所有視頻的軟件,并且這是一個(gè)非常復(fù)雜的軟件,但我知道如何使用它,并且我用的還不錯(cuò),那么我是如何學(xué)習(xí) Premiere的呢,當(dāng)我還在口袋游戲公司( Pocket gamer)工作的時(shí)候,我們必須做這些非?;镜囊曨l測評工作,所以一個(gè)同事教了我 Adobe Premiere的基本知識(shí),就是你需要制作視頻的絕對基礎(chǔ)的知識(shí),如何導(dǎo)入視頻片段,將它們放到時(shí)間軸上,應(yīng)用基本的轉(zhuǎn)場,并將它們導(dǎo)出到 Youtube,然后我必須自己做幾十個(gè)這樣的視頻測評,所以我必須一遍又一遍地重復(fù)這些基本步驟,因?yàn)樗鼈兟芈拥轿业拇竽X,然后,我創(chuàng)立了“游戲制作工具箱”頻道,在那個(gè)時(shí)候我想給視頻添加更多有趣的東西,我想添加蒙版、顏色、文字、轉(zhuǎn)場和運(yùn)動(dòng)圖形以及所有有趣的東西,其實(shí)這些東西本來很難學(xué),但我確立了兩件事,第一我不需要一下子學(xué)完所有的東西,只要我每次制作視頻時(shí)至少嘗試一件新東西,這樣我就能慢慢積累自己的特效技能和知識(shí),第二因?yàn)槲易鲞^那些視頻測評,我變得對 premiere非常熟悉,我對軟件使用的感覺很舒服了,所以每當(dāng)我想嘗試新東西的時(shí)候,我覺得我可以嘗試和探索,或者至少我知道我應(yīng)該去谷歌輸入什么來得到我需要的答案,所以最終,我遵循了一個(gè)非常漂亮的三步法來學(xué)習(xí) Premiere,第一步學(xué)習(xí)基本知識(shí)不要更多,第二步通過重復(fù)和簡單的項(xiàng)目來熟悉這些基本知識(shí),然后第三步慢慢地構(gòu)建一系列工具,就像我在 premiere中不斷構(gòu)建構(gòu)建構(gòu)建的軟件知識(shí)庫一樣,這顯然對我很有效,我知道怎么用 premiere,現(xiàn)在我可以在軟件里做任何我想做的事,我想我明白了為什么它會(huì)起作用。你看制作視頻通常是因?yàn)橛幸恍┫敕?,比如,如果我現(xiàn)在有—個(gè)VHS風(fēng)格(老錄像機(jī)暫停風(fēng)格)不是很酷嗎,然后我需要弄清楚如何實(shí)現(xiàn)這個(gè)想法,比如我要如何讓幀暫停,然后我應(yīng)該使用什么效果達(dá)到視頻刷新撕裂效果,然后我怎么讓這條線向下滾動(dòng)劃過屏幕呢,如果你想一下我可以有無數(shù)的想法,所以從物理上講不可能開始的時(shí)候?qū)W會(huì)如何解決所有的問題,但我能學(xué)到的是熟悉我的工具,所以當(dāng)這些新想法突然跳出來的時(shí)候,對于軟件我既有信心又有手段可以在探索的時(shí)候把事情弄清楚,因?yàn)槲乙呀?jīng)了解軟件是如何工作的了。所以,我知道問題在哪里并且我知道在谷歌用什么詞來搜索它,或者我知道如何向別人尋求幫助,這聽起來不太像游戲開發(fā)對吧,你有無限多的想法可能突然冒出來,而你不可能學(xué)會(huì)所有的想法。
????所以你真正能做的就是去構(gòu)建熟悉你的工具,因此當(dāng)這些問題出現(xiàn)時(shí)你將有一些解決方案,也許我可以總結(jié)下我的學(xué)習(xí)“三步法”,基礎(chǔ)->熟悉->實(shí)踐,然后把它應(yīng)用給 Unity,聽起來是個(gè)像樣的計(jì)劃我們試一試吧。
????幸運(yùn)的是在游戲開發(fā)方面我并不是從零開始,我熟悉編程的基本原理,至少我在推特的個(gè)人資料中這么寫,所以我知道f語句、循環(huán)和函數(shù)之類的內(nèi)容,而 且我也接觸過Game Maker,所以我知道游戲引擎是如何工作的差不多吧,但我確實(shí)需要了解Unity本身是如何運(yùn)作的,所以從最基本的開始比如它的UI是什么,以及我應(yīng)該點(diǎn)擊什么、鍵盤快捷鍵是什么之類的吧,我還需要從概念上理解 Unity是如何運(yùn)作的,比如 Unity是圍繞“游戲?qū)ο蟆边\(yùn)行的,Unity中的一切都是游戲?qū)ο?,除非你從根本上理解了它是什么,否則你不能向前進(jìn)一步,如果你好奇的話,游戲?qū)ο蠡旧暇拖褚粋€(gè)帶有位置、旋轉(zhuǎn)和縮放的隱形容器,然后你可以用組件來填充它來做一些事情,這包括給它圖像的“精靈渲染器”,給它物理屬性的“剛體”,能夠讓它撞到東西的“碰撞器′,最重要的是能夠讓你為它編寫程序代碼的腳本,一旦我腦子冒出了這些想法,我就會(huì)把我為了制作游戲而真正需要知道的事情列在一起,就像我該如何讓一個(gè)游戲?qū)ο笈c另一個(gè)游戲?qū)ο髮υ?,我如何生成和刪除新的游戲?qū)ο?,?dāng)兩個(gè)游戲?qū)ο笙嗷ヅ鲎矔r(shí),如何讓一些事情發(fā)生,我該怎么做UI、聲音效果以及動(dòng)畫,我如何處理關(guān)卡和游戲結(jié)束之類的事情,然后我使用教程、谷歌以及與人們交流來解決這些問題,從而學(xué)會(huì)Unty的基礎(chǔ),當(dāng)然現(xiàn)在可能有很多使用 Unity的人正在看這個(gè),他們認(rèn)為這不是一個(gè)非常全面的列表,這不會(huì)讓你走得很遠(yuǎn),可能沒有更好的方法來做你剛學(xué)會(huì)的所有事情,是的,這是真的,但這已經(jīng)足夠讓我開始了,我可以讓東西出現(xiàn)在屏幕上,讓它四處移動(dòng)讓碰撞發(fā)生,生成東西再刪除它們,這些都是游戲運(yùn)作的基礎(chǔ),這是一種類型,無論我今后做什么游戲我都需要知道這些東西,這是我可以用來建造知識(shí)庫的的基石。因此我接下來想做的是第二步,是證明我理解并很熟悉這些東西,通過重復(fù)制作簡單的項(xiàng)目,我發(fā)現(xiàn)在游戲開發(fā)方面實(shí)現(xiàn)這一目標(biāo)的最佳方法便是,就是古老的藝術(shù)-剽竊,我的意思是復(fù)刻非常簡單的游戲,比如,街機(jī)游戲,手機(jī)游戲、網(wǎng)頁游戲、以及小游戲,我認(rèn)為都非?;镜挠螒蛞?guī)則,通過復(fù)刻它們,我可以向自己證明我理解了 Unity是如何運(yùn)作的,我認(rèn)為這是一個(gè)很好的訓(xùn)練工具,因?yàn)槟悴槐負(fù)?dān)心藝術(shù)、設(shè)計(jì)、規(guī)則或者其他類似的東西,這些都是現(xiàn)成的,你所需要關(guān)心的就是代碼,你會(huì)得到非常清晰客觀的結(jié)果,我能否可以拿一個(gè)游戲并只靠自己在∪nity重建它,我做的第一款游戲是“ Flappy Bird“,這是一個(gè)非常簡單的 iPhone端時(shí)間消磨游戲,講的是一只大胖鳥如何與地心引力搏斗,是的講在Unity中制作這個(gè)的毛茸茸鳥的教程大約有10000個(gè),但我不想使用它們我想靠我自己做出來,所以我開始玩這個(gè)游戲并弄清楚它是如何運(yùn)作的,然后制定一個(gè)游戲計(jì)劃關(guān)于我將如何重建它,把完成這些的步驟拆分的盡可能小真的很重要,比如第一步讓一只鳥出現(xiàn)在屏幕上,第二步讓它掉落,第三步,讓它振翅,就是一件事接著一件事,沒什么太瘋狂的然后我就開始做了,我創(chuàng)造了一個(gè)游戲?qū)ο?,并為小鳥提供了精靈渲染器,為翅膀提供了動(dòng)畫控制器,給它一個(gè)剛體讓它能夠掉落,給它一個(gè)方盒碰撞器讓它撞擊管道,還有一個(gè)腳本這樣當(dāng)我按下空格鍵時(shí),它會(huì)在剛體的底部施加一定的速度,讓小鳥飛向空中,棒極了,然后我制作了管道,并把它們變成了一個(gè)預(yù)制對象或者叫“預(yù)制件”,可以讓我在不同高度產(chǎn)生無限數(shù)量的管道,正是在這里我發(fā)現(xiàn)了開發(fā)一款游戲的一個(gè)小技巧,你看直觀的做法是讓鳥飛過一堆管道,但這很難做到,更簡單的方法是讓小鳥保持靜止,讓管道在屏幕上移動(dòng),然后在它們離開屏幕時(shí)刪除它們,相信我我覺得自己是個(gè)天才當(dāng)我明白這一點(diǎn)時(shí),我還對碰撞進(jìn)行了排序,所以當(dāng)小鳥撞到管道時(shí),游戲就結(jié)束了。但如果小鳥在兩個(gè)管道之間穿過,就會(huì)觸發(fā)觸發(fā)器,并在UI中加一分,這涉及到將信息從一個(gè)游戲?qū)ο蟀l(fā)送到另一個(gè),我在基礎(chǔ)課中學(xué)到的每一個(gè)技能都被發(fā)揮出來了,然后我完成了一些音效,以及一些基本的東西比如帶有視差的云飛過,這感覺真是太棒了,我知道它看起來很平庸,就像你剽竊了有史以來最簡單的游戲,我希望你為自己感到驕傲,但我是真的我為自己感到驕傲,我挑選了這款游戲,我把它拆解開,然后自己用Unty重新做了一遍,我已經(jīng)證明了我知道Unity是如何運(yùn)作的了,我只靠自己就讓它運(yùn)作起來了,這種感覺很棒,比我第一次嘗試學(xué)習(xí)Unty時(shí)那種泄氣的感覺好太多,事實(shí)上我感覺非常好然后迫不及待地再次嘗試,這一次是復(fù)刻游戲“啪啪解鎖,這是圍繞一個(gè)圓圈旋轉(zhuǎn)的一條線,你必須再次收集其他圓圈,再次強(qiáng)調(diào)這很簡單,但它很容易上癮。整個(gè)過程幾乎是相同的,即先玩游戲,然后進(jìn)行逆向工程,最終獲得一份準(zhǔn)設(shè)計(jì)文件,把它分解成盡可能小的步驟,比如讓一個(gè)東西在屏幕上旋轉(zhuǎn),一步一步地構(gòu)建它,這個(gè)確實(shí)造成了一些很大的問題,因?yàn)樗腔谛D(zhuǎn)而Unty的旋轉(zhuǎn)使用了四元數(shù),就像是四維的旋轉(zhuǎn)軸,當(dāng)我試圖閱讀它們的時(shí)候,我的大腦就像會(huì)從我的耳朵里流出來一樣,所以這是相當(dāng)困難的。但我發(fā)現(xiàn)了一個(gè)Unity很酷的內(nèi)置函數(shù),叫做 RotateAround,它允許你圍繞一個(gè)點(diǎn)旋轉(zhuǎn)游戲?qū)ο?,這解決了很多問題,現(xiàn)在這些都在我的記憶庫里了,我還明白了游戲?qū)ο蟮母缸禹?xiàng)目的含義和關(guān)系,這也解決了許多問題,再次的我做出了能夠在自己電腦上運(yùn)行的游戲,當(dāng)時(shí)的感覺真的很酷,我無法描述它,但就像是我做到了,我達(dá)到了這個(gè)目標(biāo)做出這款游戲,我做到了,最重要的是我證明了,我知道如何使用 Unity,同時(shí)我也對 Unity這個(gè)工具非常熟悉了,以及我在制作游戲時(shí)需要解決的,一開始做不到的事情,我現(xiàn)在已經(jīng)學(xué)會(huì)了,因?yàn)槲抑涝谀睦稂c(diǎn)擊,我知道看哪里,我知道在谷歌中輸入什么,所以在這一點(diǎn)上 ,我對Unity感覺很好,就像,我當(dāng)然不是專家,但是我已經(jīng)找到了開始的地方。我認(rèn)為現(xiàn)在我應(yīng)該進(jìn)入第三步,開始創(chuàng)造自己的游戲并開始試驗(yàn),當(dāng)然,我會(huì)遇到麻煩的,有些事我不知道該怎么做,我會(huì)面對很多問題,但我恢復(fù)了信心以及對工具的很適應(yīng),我在概念層面上理解了 Unity,我理解了我需要知道如何做的基本事情,從這一點(diǎn)開始,當(dāng)我遇到問題時(shí)也許我能解決它,我至少可以嘗試一下,至少知道要在谷歌中輸入什么,或者知道如何向一個(gè)比我聰明得多的人提一個(gè)有用的問題,現(xiàn)在我不能保證這種學(xué)習(xí)方式對你有用,每個(gè)人都以不同的方式學(xué)習(xí),也許你就是這樣學(xué)習(xí)的,就是有看起來就很懂的人向你解釋事情,但對我來說作為一個(gè)很容易厭倦輔導(dǎo)課的人,我可能有多動(dòng)癥吧我不知道,有些人只有不斷實(shí)驗(yàn)、嘗試以及經(jīng)歷失敗,才能真正把東西放進(jìn)他們的大腦,這個(gè)方法對我很有效,學(xué)習(xí)基礎(chǔ)知識(shí)、不斷熟悉它們?nèi)缓箅S著時(shí)間慢慢積累技能,我想我們會(huì)看看它是否有效。