U3D遊戲開發從入門到彎道超車(一):序章

妙蛙發表於2019-01-17

1. 寫在最前面的寄語:

很多人把學習定義為一件痛苦的事情,那是因為90%的人都未掌握正確高效的學習方法。這也是為什麼只有10%的人站在了職場的最頂峰,因為他們掌握了高效的學習方法,這樣的方法能夠讓他們不斷地更新迭代自己,不斷地重新整理自己的認知。每個人的成就最終很大程度上依賴於個人的認知。

所以,在我分享各種技術、產品策劃設計、專案管理方面知識的同時,我更想把一種高效的學習方法也教給大家,最終能夠達到授人以漁的目的。在這裡,我把這種學習方法稱之為HOPL(Hands-on Project Learning)學習法 — 通過動手做專案學習。

(本教程答疑請加U3D遊戲開發入門到精通QQ群:730399676,申請進群備註掘金)

2. 教程概述和預期學習效果

本教程面向的群體有以下4類成員:

  1. 完全0基礎純萌新(C# 0基礎、Unity3D 0基礎)
  2. 有一定基礎,但是還找不到遊戲開發工作
  3. 想自己製作獨立遊戲的同學
  4. 雖然已經參加工作,但並不理解遊戲開發中的設計思想

本教程是一篇連載圖文教程,將通過一個自制的《Flappy bird》遊戲案例講解遊戲開發的思想及方法,並將《Flappy bird》這個遊戲進一步改造成一個橫板射擊類遊戲《Crazy bird》以鞏固並且昇華整體學習效果。 學習本教程後,你將最終達到以下學習效果:

  1. 熟悉Unity3D遊戲引擎
  2. 熟悉C#程式語言
  3. 瞭解遊戲開發整體流程
  4. 掌握大部分遊戲開發客戶端的知識
  5. 第一次體驗高效的學習方法帶來的益處
  6. 初步掌握高效的HOPL(Hands-on Project Learning)學習大法

下面是兩款遊戲的一些截圖(遊戲中的美術資源都是純手工繪製):

Flappy Bird
(本教程答疑請加U3D遊戲開發入門到精通QQ群:730399676,申請進群備註掘金)
Crazy Bird

3. 遊戲開發有什麼特點?遊戲開發和網站開發、APP開發有什麼不同?

要回答遊戲開發有什麼特點,我們必須先思考一個問題,即什麼是遊戲?一款遊戲是一款軟體應用嗎?是一款產品嗎?某種程度上,遊戲是一款軟體產品,因為畢竟它最後的表現形式無非就是一款客戶端軟體、一個網頁端產品或是一個手機APP應用。

但是,我們再思考一下,什麼是應用?應用的產生是為了方便人類日常生活、工作、學習的。人們日常高頻重複地使用一個應用主要目的是為了便捷,比如現在人們都習慣性用支付寶或者微信這兩個應用去支付任何消費。上述定義中有兩個關鍵詞:重複、便捷。

我們回過頭來看下游戲,遊戲是精神娛樂類的產品,大家對於遊戲的需求就是要品類多、體驗不同、玩法不同,大家最不需要的就是重複。

所以遊戲一定不是一個應用,它更像是一部電影,人們每看一部不同的電影都希望有不同的體驗和感悟。電影是藝術,一部好的電影一定會被稱為是一部好的作品,而不是一部好的應用或者好的產品。同理,一款遊戲其實應該是一部作品,作品是要避免同質化的,所以遊戲有時候會被稱之為“第九藝術”。

奧日
相信看到這裡,有同學會提問:“我知道遊戲是一部作品了,但是這個跟開發有什麼關係呢?”。我們所生產的所有東西都需要使用者來賦予它價值,而價值來自於使用者的需求。

遊戲玩家對於遊戲的需求就是好玩、不重複、體驗獨特等。這樣的需求導致了,每一款遊戲需要具備自己不同的體驗。所以每一款遊戲在設計的時候雖然有參考其他遊戲,但是都要有自己的一套獨有的遊戲機制,以區別於其他遊戲。

下面三張圖為遊戲機制的示意圖以及兩款知名遊戲的遊戲機制示意圖(此處不再展開遊戲機制這個話題,此話題在策劃範疇內,我們可以在以後討論)。

遊戲核心機制
我們可以看到,哪怕是兩款小遊戲《超級馬里奧》和《Flappy Bird》,它們的核心機制也是完全不一樣的。我們很難找到兩款遊戲,它們的核心機制是基本一致的。所以,對於開發而言,我們很難做出一套框架來適用於大部分遊戲。
超級馬里奧
但是網站開發和APP開發不同,同型別的網站或者APP應用都能找到很多共同點,比如電商網站基本都長得差不多,只是賣的東西不一樣。所以如果一個團隊一直做電商類網站,他們最終也會總結出一套電商類網站的前後端框架出來。這也是為什麼前端技術和後端技術,如Java往深入學就是學習各種框架(如Spring)的原理,研究那些框架的原始碼。

但是遊戲開發不同,遊戲開發面對的產品需求都是不一樣的,沒法總結出一套通用的框架出來,如果非要說有,那遊戲引擎本身就是一種“框架級產品”,它整合了很多遊戲開發中常用到的功能模組(如UI模組、動畫模組)並讓這些模組非常易用,你甚至不用寫一行程式碼就能做出遊戲動畫。當然,像網易這樣專注於MMORPG遊戲開發的公司而言,內部應該是有一套或多套MMORPG類遊戲開發的成熟框架的。

所以,遊戲開發最大的幾個特點就是:

  1. 需求多變(幾乎找不出完全一樣遊戲機制的遊戲)
  2. 複雜程度高(要結合很多技術,如高併發、AI等)
  3. 使用者互動行為很多(玩家在虛擬的世界裡有眾多的互動行為)
    在這裡插入圖片描述
    我們可以簡單得出個結論:在同使用者規模下,遊戲開發要比網站和APP開發複雜的多。這也是為什麼一款MMORPG遊戲動不動就需要百人團隊開發數年才能出第一個版本的原因,因為MMORPG遊戲就是一個虛擬的世界啊!

(本教程答疑請加U3D遊戲開發入門到精通QQ群:730399676,申請進群備註掘金)

4. 那到底如何才能高效地學習遊戲開發?

既然遊戲開發這麼複雜,那是否有什麼方法能夠讓一個初學者高效、快速地入門遊戲開發呢?答案是肯定的。這也是我寫這部《遊戲開發從入門到彎道超車》的核心目的。

這裡我們要隆重推出我們的HOPL(Hands-on Project Learning)學習大法!為了方便理解,我這裡用學習英語的例子去做舉例,因為學英語的方式和學程式語言和U3D非常的相似。只不過我這裡描述的學英語的方式和我們曾經上學時期學英語的方式非常不同。Let's recall the memory of learning English in studenthood.(我們來回憶一下學生時代學習英語的樣子吧!)。

大家在學生時代學習英語的過程基本是下面這樣的:

學英語
按照這個流程學習英語,最後的結果是:你會發現,你從小學開始到大學學了10幾年的英語,如果現在讓你用英語日常交流的話你都做不到,更別提寫出一篇優秀的英文文章了!
背單詞
So Why?原因是,這樣學習英語的方法其實只是在碎片化地學習英語知識點罷了,但是從來沒有教你如何用這些所學的知識點連貫起來去做一些事情。什麼是做一些事情?語言就是個工具,大家通過語言去理解他人所說的話(Listening)、去讀他人寫的文章(Reading)、去通過文章表達自己的觀點(Writing)、去通過口語日常交流(Speaking)。這些都是學習英語後真正要去實踐的事情,但是很不幸的是,中國的教育體系並沒有提供這樣的學習場景和方式給到大家。大家只是通過不斷地刷題去鞏固碎片化的知識點罷了。
啞巴英語
程式語言和U3D遊戲引擎同樣也是兩個工具,這兩個工具相互配合可以開發出精品的遊戲。這裡我以學習程式語言舉例,學習程式語言(如U3D遊戲開發需要必備的程式語言C#)的邏輯其實和學習英語的邏輯很相似。Why?因為他們都是語言類工具啊!英語是提供給人與人之間溝通的,而程式語言是提供給人與機器之間溝通的。

但是,更不幸的的是,由於大家在學生時代養成的學習習慣導致了大家按照以下流程在學習程式語言:

學程式語言
是不是和上面學英語的流程很像?然後你發現,你連一個很小型很簡單的應用都做不出!那到底應該怎麼樣學習英語或者是程式語言呢?我的答案是:實踐。回憶一下我們學漢語時候的樣子,我們什麼字都不認識的時候,父母就開始用口語教我們喊爸爸媽媽了。還沒上學前,我們就開始看一些小人書(圖畫配上簡單的文字)了。我們學習漢語絕對不是通過背新華詞典學會的。再舉個例子,有的老爺爺老奶奶一個字都不認識,但照樣能說漢語,這又說明了什麼呢?

說明:學習一樣工具,先從實踐(直接上手用工具),邊用邊學習,只學要用的!就像我們第一次用手機,我們可能只用裡面的通話功能。所以我們完全沒必要把一部手機的所有功能都學一遍再開始使用這部手機。

學習遊戲開發亦是如此,開發一款遊戲,所要用到的U3D的知識和C#的知識是有限的,根本不用把C#系統學一遍再把U3D系統學一遍,然後再開始學做遊戲。我們要深刻的認識到,系統學習C#和系統學習U3D並不等於你學會了遊戲開發。

學習做遊戲,直接實踐,遇到什麼問題,找到對應的資料學習要用的知識,然後解決這個問題,如此迴圈。這裡,很多同學會問:“我什麼都不知道,我都不知道遇到問題是什麼,怎麼找資料?”這就是我寫這部教程的原因,我會一步步帶著你通過運用HOPL(Hands-on Project Learning)— 通過動手做專案學習。你走完這遍流程你就會發現你的自學能力上了一個大臺階!

具體請看下面的HOPL學習大法流程:

HOPL學習法
(本教程答疑請加U3D遊戲開發入門到精通QQ群:730399676,申請進群備註掘金)

5. 本教程大綱預覽

根據以上這張學習的流程圖,我們的本教程的大綱如下:

  1. U3D遊戲開發從入門到彎道超車:序章
  2. 《Flappy Bird》場景動畫及角色動畫製作
  3. 《Flappy Bird》UI與互動及動態關卡技術
  4. 《Flappy Bird》剛體與碰撞器、碰撞與檢測
  5. 《Flappy Bird》角色狀態控制與遊戲計分實現
  6. 《Flappy Bird》開發流程圖繪製與知識點思維導圖總結
  7. 《Flappy Bird》中所用知識點學習
  8. 《Flappy Bird》獨立完成指導與難點總結
  9. 《Crazy Bird》角色自由飛翔與子彈發射
  10. 《Crazy Bird》怪物自動生成
  11. 《Crazy Bird》戰鬥主邏輯實現
  12. 《Crazy Bird》不同怪物製作及戰鬥難度升級
  13. 《Crazy Bird》BOSS製作及導彈自動跟蹤效果實現
  14. 《Crazy Bird》BOSS戰鬥實現
  15. 《Crazy Bird》關卡管理與遊戲優化 — BOSS、AI與關卡
  16. 《Crazy Bird》關卡管理與遊戲優化 — 關卡管理
  17. 《Crazy Bird》關卡管理與遊戲優化 — 遊戲優化(1)
  18. 《Crazy Bird》關卡管理與遊戲優化 — 遊戲優化(2)
  19. 《Crazy Bird》開發流程圖繪製與知識點思維導圖總結
  20. 《Crazy Bird》中所用知識點學習
  21. 《Crazy Bird》獨立完成指導與難點總結
  22. U3D遊戲開發從入門到彎道超車:總結

相關文章