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


轉載請注明出處:http://www.cnblogs.com/yuxiuyan/p/7533392.html

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

 

《王者榮耀》(以下簡稱“農葯”),專注於移動端(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#使用起來還是相當舒服不坑爹的。在微軟的大樹下正在茁壯成長。

准確驗證:

下載王者榮耀的apk文件,解壓,發現了如下文件:

 

可以斷定,有unity的功勞。

有的小伙伴可能會有疑問,為啥不用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. unity中的js腳本是可以和C#腳本等值替換的,所以自然也有一大堆數據類型,對象繼承等傳統語言及OOP的概念。不過var speed = 5這么寫也是可以的,因為編譯器會自動理解成var speed:int = 5。但是其他數據類型比如GameObjectTransform就不行了,必須在聲明變量時指定數據類型。
  3. 自然,很多標准js中的特性在unity中也不支持,比如高階函數,閉包等。
  4. Unity3D中的Math對象叫做Mathf。
  5. Unity中的js可以直接調用Mono,C#封裝的dll等。
  6. Unity中的調試語句用Debug.Log。
  7. 每行后面必須有分號。

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

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

二.游戲入門

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

  1. 把游戲想象成一個動畫片,它是一幀一幀播放的
  2. 它的邏輯是可以變化
  3. 你的程序控制它的畫面

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

(一)什么是邏輯

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

  1. 游戲邏輯:游戲的玩法,用戶的輸入等。
  2. AI:NPC,自動尋路,追逐敵人等。
  3. 物理運算:碰撞,速度,加速度,重力等物理計算。

(二)什么是顯示

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

  1. 動畫系統:控制游戲動畫的播放。
  2. 底層渲染:告訴硬件該怎么樣把圖像顯示(渲染)出來。

用一幅圖歸納:

三.游戲團隊的角色

粗略可以分為三種角色:策划、美工、程序員。

  1. 策划:負責設計游戲的玩法。
  2. 美工:負責設計游戲的資源素材。
  3. 程序員:負責游戲的編碼。

四.unity介紹

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

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

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

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

ok,今天就先到這里。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM