王者榮耀是怎樣煉成的(一) 王者榮耀 用什麼開發,遊戲入門,unity3D介紹
在國內,如果你沒有聽說過《王者榮耀》,那你一定是古董級的人物了。
《王者榮耀》(以下簡稱“農藥”),專注於移動端(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的看到的一段:
unity中的js與其說是js,不如說是Unity Script。unity中的js是會經過編譯的,其效能和本地速度差不多。在官方教材《unity 4.x從入門到精通》中unity稱C#,Boo,JS的效能是差不多的。
unity中的js指令碼是可以和C#指令碼等值替換的,所以自然也有一大堆資料型別,物件繼承等傳統語言及OOP的概念。不過
var speed = 5
這麼寫也是可以的,因為編譯器會自動理解成var speed:int = 5
。但是其他資料型別比如GameObject
、Transform
就不行了,必須在宣告變數時指定資料型別。自然,很多標準js中的特性在unity中也不支援,比如高階函式,閉包等。
Unity3D中的Math物件叫做Mathf。
Unity中的js可以直接呼叫Mono,C#封裝的dll等。
Unity中的除錯語句用Debug.Log。
每行後面必須有分號。
總之,Unity中的js是會在執行前被編譯成原生代碼的。和標準js僅是寫法比較相似,內在是完全不同的。比如js是非阻塞的,而unity中的js是阻塞的;js是動態語言,而unity中的js則是不折不扣的靜態語言。
總之,使用unity + C#來進行開發。
二.遊戲入門
關於遊戲,有以下幾個特點:
把遊戲想象成一個動畫片,它是一幀一幀播放的
它的邏輯是可以變化的
你的程式控制它的畫面
綜合來看,遊戲包括兩大要素:邏輯、顯示。
(一)什麼是邏輯
簡單來說,就是遊戲是怎麼控制的,玩法是什麼樣的。
遊戲邏輯:遊戲的玩法,使用者的輸入等。
AI:NPC,自動尋路,追逐敵人等。
物理運算:碰撞,速度,加速度,重力等物理計算。
(二)什麼是顯示
顧名思義,顯示就是把遊戲的畫面、內容展現給玩家。
動畫系統:控制遊戲動畫的播放。
底層渲染:告訴硬體該怎麼樣把影象顯示(渲染)出來。
用一幅圖歸納:
三.遊戲團隊的角色
粗略可以分為三種角色:策劃、美工、程式設計師。
策劃:負責設計遊戲的玩法。
美工:負責設計遊戲的資源素材。
程式設計師:負責遊戲的編碼。
四.unity介紹
上面說過,原生開發遊戲耗時耗力,想象一下,整個遊戲從底層的渲染,一直到上層的動畫聲音,簡直要了命。而且有一點,原生開發不利於元件的重用。
有些東西,在A遊戲上可以用,在B遊戲上也可以使用。那麼我們為什麼不把這些可以重用的部分提取出來,到時候再開發其他遊戲的時候直接呼叫就可以了啊。
基於這麼一種“偷懶”的思想,Duang~,遊戲引擎就誕生了。
遊戲引擎減少了重複開發,降低了技術門檻,對於那些遊戲開發者簡直是“神器”。現在優秀的遊戲引擎有很多非常有用的模組。
ok,今天就先到這裡。
原文地址:http://www.cnblogs.com/yuxiuyan/p/7533392.html
.NET社群新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注
再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!https://blog.csdn.net/jiangjunshow