1. 程式人生 > >王者榮耀是怎樣煉成的(一) 王者榮耀 用什麼開發,遊戲入門,unity3D介紹

王者榮耀是怎樣煉成的(一) 王者榮耀 用什麼開發,遊戲入門,unity3D介紹

               

在國內,如果你沒有聽說過《王者榮耀》,那你一定是古董級的人物了。

 640?wx_fmt=jpeg

《王者榮耀》(以下簡稱“農藥”),專注於移動端(Android、IOS)的MOBA遊戲。筆者看到這麼火爆,就萌生了瞭解一下這類遊戲的開發歷程,本專欄的目標是做一個類MOBA的Demo。

俗話說,不去瞎琢磨的程式設計師,不是好司機。

好的,直接進入正題。

一.農藥用什麼語言和軟體開發

小夥伴看到農藥執行在Android和IOS平臺上,估計第一個想到的就是 java / kotlin 和 Object-C / swift 了。其實不然,原生遊戲的開發是非常耗時耗力的,並且在一些細節問題上不容易處理。現在的大部分遊戲都是利用“遊戲引擎”來處理的。比較著名的遊戲引擎如unity3D,在處理農藥這種3D遊戲時有著非常便利的管理和編碼功能。unity在5.x版本後支援C#和JavaScript兩種語言實現遊戲中的指令碼(在4.x還支援Boo)。據不完全統計,unity程式設計師大約80%都是用C#,所以這次筆者也是用C#(隨大流,不捱揍,haha)。而且如果你有java或者C基礎,那麼C#使用起來還是相當舒服不坑爹的。在微軟的大樹下正在茁壯成長。

有的小夥伴可能會有疑問,為啥不用JavaScript呢?現在JavaScript這麼火爆?

其實unity使用的JavaScript和我們做web開發使用的JavaScript非常不同,或者我們乾脆分別稱呼為unityScript和JavaScript也不為過。

這裡在segmentfault的看到的一段:

 
  1. unity中的js與其說是js,不如說是Unity Script。unity中的js是會經過編譯的,其效能和本地速度差不多。在官方教材《unity 4.x從入門到精通》中unity稱C#,Boo,JS的效能是差不多的。

  2.  
  3. unity中的js指令碼是可以和C#指令碼等值替換的,所以自然也有一大堆資料型別,物件繼承等傳統語言及OOP的概念。不過var speed = 5

    這麼寫也是可以的,因為編譯器會自動理解成var speed:int = 5。但是其他資料型別比如GameObjectTransform就不行了,必須在宣告變數時指定資料型別。

  4.  
  5. 自然,很多標準js中的特性在unity中也不支援,比如高階函式,閉包等。

  6.  
  7. Unity3D中的Math物件叫做Mathf。

  8.  
  9. Unity中的js可以直接呼叫Mono,C#封裝的dll等。

  10.  
  11. Unity中的除錯語句用Debug.Log。

  12.  
  13. 每行後面必須有分號。

  14.  

總之,Unity中的js是會在執行前被編譯成原生代碼的。和標準js僅是寫法比較相似,內在是完全不同的。比如js是非阻塞的,而unity中的js是阻塞的;js是動態語言,而unity中的js則是不折不扣的靜態語言。

總之,使用unity + C#來進行開發。

二.遊戲入門

關於遊戲,有以下幾個特點:

  1. 把遊戲想象成一個動畫片,它是一幀一幀播放的

  2.  
  3. 它的邏輯是可以變化

  4.  
  5. 你的程式控制它的畫面

綜合來看,遊戲包括兩大要素:邏輯、顯示

(一)什麼是邏輯

簡單來說,就是遊戲是怎麼控制的,玩法是什麼樣的。

  1. 遊戲邏輯:遊戲的玩法,使用者的輸入等。

  2.  
  3. AI:NPC,自動尋路,追逐敵人等。

  4.  
  5. 物理運算:碰撞,速度,加速度,重力等物理計算。

(二)什麼是顯示

顧名思義,顯示就是把遊戲的畫面、內容展現給玩家。

  1. 動畫系統:控制遊戲動畫的播放。

  2.  
  3. 底層渲染:告訴硬體該怎麼樣把影象顯示(渲染)出來。

用一幅圖歸納:

640?wx_fmt=png

三.遊戲團隊的角色

粗略可以分為三種角色:策劃、美工、程式設計師。

  1. 策劃:負責設計遊戲的玩法。

  2.  
  3. 美工:負責設計遊戲的資源素材。

  4.  
  5. 程式設計師:負責遊戲的編碼。

640?wx_fmt=png

四.unity介紹

上面說過,原生開發遊戲耗時耗力,想象一下,整個遊戲從底層的渲染,一直到上層的動畫聲音,簡直要了命。而且有一點,原生開發不利於元件的重用。

有些東西,在A遊戲上可以用,在B遊戲上也可以使用。那麼我們為什麼不把這些可以重用的部分提取出來,到時候再開發其他遊戲的時候直接呼叫就可以了啊。

基於這麼一種“偷懶”的思想,Duang~,遊戲引擎就誕生了。

遊戲引擎減少了重複開發,降低了技術門檻,對於那些遊戲開發者簡直是“神器”。現在優秀的遊戲引擎有很多非常有用的模組。

640?wx_fmt=png

ok,今天就先到這裡。

原文地址:http://www.cnblogs.com/yuxiuyan/p/7533392.html


.NET社群新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注

640?wx_fmt=jpeg

           

再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!https://blog.csdn.net/jiangjunshow