遊戲引擎開發的學習路線

2021-02-25 平臺開發

很多遊戲幵發者認為自己能寫邏輯就等於掌握了遊戲開發技術,引擎對自己來說無足輕重,這種想法是有問題的。

首先你寫邏輯是在引擎的基礎上寫的,其次如果你對引擎一無所知,非常不利於你去深入理解邏輯開發。相反,如果你對引擎有深入的研究,你調用引擎提供的接口時可以很清楚地知道其內部是如何實現的,這樣有助於寫一些引擎的輔助功能算法,提升自己的編程能力。

我以前在 xxx 公司工作時,項目組就有一位邏輯程式設計師在做功能時,需要在原有引擎接口的基礎上增加一些算法編程以滿足遊戲玩法,當時他並沒有求助引擎組的同事,而是自己寫出來了,因為他自己平時就喜歡鑽研 3D 遊戲引擎,了解引擎接口內部是如何實現的,這本身就證明了他的編程能力。最後將其吸納到擁有公司最核心技術的引擎項目組,薪酬和職位同時得到了提升。

因為在公司裡面會寫算法,或者會 GPU 編程的人相對來說非常少,如果你掌握了 3D 引擎開發技術,不僅對於邏輯開發更加有利,而且對於你技能提升幫助非常大。

學習 3D 引擎需要經歷一個由淺入深的過程,首先要了解最基本的一些 3D 知識,比如固定流水線、可編程流水線、3D 模型結構、骨骼動畫等,並且能利用 Dirct3D 或 OPENGL 或 OPENGLES 這些圖形庫中任何一個,做個簡單的 Demo。

通過這個 Demo 了解程序運行的原理後,再嘗試封裝一些簡單算法,一些常用函數,利用這個簡單封裝做一款小的遊戲 Demo。

最後再研究一下 GPU 編程,比如 CG、HLSL 語言的語法,在 GPU 編程的基礎上再學習一些大型遊戲開發中常用的算法,比如 PSSM 實時陰影算法、Bloom 算法等,它們都是與 Shader 編程緊密相關的後處理渲染算法。

目前各大遊戲公司,比如網易、騰訊、EA、任天堂等國內外知名的 IT 公司,還有許多新興的 VR/AR 公司非常緊缺 3D 引擎資深程序或者圖形學引擎開發人員,開出了非常誘人的薪水和待遇,從中可以看出,目前遊戲市場對於這類人才需求還是非常緊缺的。這正是一個學習 3D 引擎幵發的好機會,俗話說「機不可失,時不我待」。

我曾經在國內知名 IT 遊戲公司參與過 3D 遊戲引擎項目組的研發,利用業餘時間也開發過3D遊戲引擎,從底層算法到架構設計都是一個人完成的,當然開發周期也是比較長的。

如何學習 3D 引擎開發?

回到正題,3D 引擎這麼重要,那作為新手應該如何著手學習?換句話說,關於幵發 3D 引擎要具備哪些條件?網絡上有許多這方面的解答,我經過多年對 3D 遊戲引擎的開發研究和實踐經驗,在此主要總結了以下六點供大家學習參考。

1) 首先必須掌握主流幵發語言C語言、C++、Java 或 C# 至少一門程式語言。

2) 編程離不開數據結構,大學課程裡面學的數據結構對於遊戲開發非常重要,數據結構在遊戲開發中主要用於數據存儲及內存管理,開發 3D 引擎常用數據結構有數組、鍊表、哈希表等,以及常用的一些查找算法:快速排序、二叉樹查找、二分査找等,對於常用的數據結構要重點掌握。

為引起讀者重視,在此再重點強調一下,數據結構對於遊戲開發非常重要。

3) 線性代數對於開發同樣非常重要,掌握線性代數的目的是在遊戲開發中靈活地運用向量、矩陣、四元數,以及歐拉角這些基本的數學運算解決問題。3D 固定流水線中的坐標變換和可編程流水線的頂點和像素轉換都是使用線性代數運算完成的,運算主要涉及遊戲幵發中的物體移動、旋轉、縮放,以及點乘和差乘等。

4) 現在的 3D 遊戲引擎渲染都是基於 DirectX 或者 OPENGL、OPENGLES 這些圖形庫完成的,這就需要開發者能夠熟練地使用圖形庫的接口開發程序。在當前移動端跨平臺非常火熱的情況下,建議大家學習 OPENGL 圖形庫。

3D 引擎的核心功能就是對遊戲的場景渲染和物體的材質渲染。

對於材質中有 Alpha 通道的要做特殊處理,Alpha 通道就是說材質有透明的部分。在移動端為了減少透明材質的消耗,會通過 GPU 編程在 Shader 中進行處理,比如把有 Alpha 通道的圖片切分成無 Alpha 通道和有 Alpha 通道的圖片,通過 Shader 編程將其再合在一起。

場景渲染使用的是後處理渲染效果,比如 Bloom、Blur、 Ssao、Pssm 等。這些效果實現與 GPU 編程息息相關,要求大家至少掌握 GLSL、HLSL 或 CG 這些基於顯卡 GPU 程式語言的一種。

5) 學習圖形學算法,遊戲要實現一些逼真的效果離不開算法的支持,比如柔體的模擬、剛體碰撞效果及曲線插值算法等。

學習圖形學算法,建議大家看一下《算法導論》這本非常經典的書籍,以上說的這些是引擎中比較深層次的知識點。

6) 另外,在框架設計方面,需要掌握設計模式裡常用的如工廠模式、單件模式、狀態模式、MVC模式等。設計模式的使用不能靠死記硬背,需要將其靈活運用到項目幵發中,這樣才能逐步深入領會其設計精髄。

初學者在使用設計模式的過程中會出現一個誤區:千萬不要為了使用設計模式而使用設計模式,過度使用會得到適得其反的效果,凡事要把握一個度。以前公司的同事為了使用設計模式,不論設計什麼模塊都要用設計模式,最後導致在模塊擴充時出現了很多問題,舉這個例子的目的是告訴讀者好東西也不能亂用。

我從沒有在做架構設計時去特意考慮用哪種設計模式,都是順其自然地使用,真正的用劍高手,可以做到手中無劍,心中有劍的境界。

以上六點是筆者對 3D 遊戲引擎開發的心得體會,建議大家循序漸進、由易到難地學習。

再談算法

遊戲開發最核心的技術是算法,在遊戲開發中佔非常大的比重,也可以說是引擎核心中的核心,以筆者親身開發項目經歷給大家分享一下,希望起到拋磚引玉的效果。

近期與高校科研機構合作研發了一款海水渲染 3D 引擎,可以逼真地模擬真實海浪,以及海浪在不同的天氣實現不同的效果,模擬船在海中隨海浪上下浮動和直升機在海浪上空懸停風力與海浪的作用效果等。

在實現的過程中使用了很多算法,比如 Perlin 噪聲算法、弗洛伊德算法,以及物理算法等。

如下圖所示,是基於 GPU 編程模擬的旋渦。

圖1:旋渦模擬

總結

技術的掌握不是一朝一夕能夠完成的,關鍵在于堅持,首先要做的是打好基礎,在真正掌握了基礎知識後,再提升是非常快的。

做遊戲引擎也是知識積累的過程,雖然現在的 3D 引擎非常多,自己幵發遊戲引擎己經不現實,但要想真正地深入學習遊戲幵發核心技術,至少應該知道引擎的底層是如何實現的,換句話說就是其工作原理要搞清楚,這對於開發者來說非常重要。

不要再把自己局限於代碼操作工簡單地寫寫邏輯,這對自己的技術提升沒有任何幫助的。要做到對遊戲開發知其然知其所以然,就必須學習 3D 引擎開發技術,特別是對剛踏入遊戲行業的從業者,每天堅持不斷地學習,如果能持續不斷地學習 10000 小時,你肯定會成為 3D 引擎高手。

這就跟鍛鍊身體一樣,其實鍛鍊身體非常能夠磨鍊一個人的心性,鍛鍊一個人的意志力。

自己嘗試開發一款小的遊戲引擎,即使不能成功,但過程也是非常重要的,你從中可以學習到很多知識,經驗的積累對自己的發展幫助非常大,這也是為什麼遊戲公司招聘,首要的條件是應聘者要有實際開發項目工作經驗。 

相關焦點

  • 遊戲開發完整學習路線!就是一門實時渲染的藝術!
    無論你選擇哪個平臺,遊戲開發這個浩大的工程都離不開遊戲引擎,所以這裡都有二條路線讓你選擇: 只使用遊戲引擎; 使用遊戲引擎並深入學習遊戲引擎原理。
  • unity3d遊戲引擎開發的遊戲都有哪些?
    Unity3d是目前主流的遊戲開發引擎,它提供了一個整合的編輯器、跨平臺發布、地形編輯、著色器,腳本,網絡,物理,版本控制等特性。Unity3d可以開發桌面版、web版、手機版的遊戲,是一個非常理想的三維遊戲開發平臺。
  • 遊戲廠商常吹的遊戲引擎究竟是什麼?遊戲開發背後的秘密大公開
    hello大家好,我是愛打遊戲的花菜,今天在這裡就和大家聊一聊,遊戲背後的製作神器,遊戲引擎的秘密。遊戲引擎------那個讓遊戲開發大進一步的玩意在談之前,需要先對遊戲引擎有基礎的了解,這樣才能更清楚的知道引擎的優劣勢。
  • 主流遊戲引擎都是用什麼語言來開發?
    1.unity 3d這是目前最火的遊戲引擎之一,像王者榮耀和仙劍六都是unity 3d開發的,這個引擎開發效率很高。這個引擎要用C#來開發。2.虛幻引擎如果說unity 3d是第一的遊戲引擎的話,那虛幻引擎能稱第二。這是一個開源的引擎,它製作的遊戲在畫質上比unity 3d精美的多,但開發效率不如unity 3d。《絕地求生》就是這個引擎開發的。
  • 遊戲引擎開發涉及到的數學知識
    數學可以說是引擎的根基,它的作用是不言而喻的。
  • 開源軟體之遊戲開發:還用Unity做遊戲?免費遊戲引擎Godot打天下
    如今,一提到製作遊戲,我們往往會想到兩大商業的遊戲引擎。Unity和UE4。正因為這兩款都是商業的,所以它們並不是免費提供的,儘管我們可以加入它們的商業陣營,開發遊戲並盈利,不過必要的軟體付費或收益分成還是要有的。對於中小開發者和愛好者而言,算是一種阻礙。
  • 【學習經驗】android開發的學習路線
    第二階段:Java Web開發1.Java解析XML文件DOM4J。2.MySql資料庫的應用、多表連接查詢的應用。3.Jsp和Servlet應用。4.Http協議解析。5.Tomcat伺服器的應用配置。6.WebService服務配置應用。
  • 你喜歡的2D遊戲《鏟子騎士》是用3D引擎開發製作的
    不知道各位是否還記得2D像素動作遊戲《鏟子騎士》呢?這款遊戲給人最初的印象就是完美還原了8位機時代的畫面和音效,那麼如果告訴你說這個遊戲2D點陣的畫面是用3D引擎開發製作的,你會相信嗎?近日,一個名為Boundary Break的視頻節目找到了《鏟子騎士》的開發商Yacht Club Games,雙方首次對外展示了一款2D遊戲是如何使用3D遊戲引擎開發製作的。在這段視頻中,我們首次看到完全不同的視角下的《鏟子騎士》,對於喜歡這款遊戲的玩家來說非常珍貴。
  • 編程貓Kitten物理引擎開發小遊戲《夢幻灌籃高手》
    一、創作緣由在很早以前,我曾經使用微軟的C#+Silverlight 2+Farseer物理引擎編寫過一個投籃小遊戲,而如今正使用Scratch開發遊戲教學軟體,那麼能否也使用少兒編程工具重新實現一款投籃小遊戲呢?因為Scratch本身並沒有提供物理引擎,所以有了兩個想法。
  • 20人就能做大型網遊 英國開發遊戲引擎進軍韓國
    Hero Korea近日在首爾西橋洞弘大附近召開了記者會,會上公開了自主研發的遊戲引擎Hero Engine,這款引擎專為大型MMORPG開發所設計,以雲端為架構整合客戶端與伺服器。
  • Tiny小遊戲引擎和即時遊戲技術初探
    7月29日,由羅斯基和Unity聯合舉辦的「Unity引擎技術如何為H5小遊戲帶來革新」主題小遊戲技術沙龍在上海舉辦。作為主流的手遊開發引擎,在國內手遊市場佔有率高達近八成,Unity何時正式入局H5小遊戲市場一直被業內所廣泛關注。
  • 遊戲引擎有沒有高低之分:虛幻4引擎就一定好?
    遊戲引擎是如今開發遊戲必不可少的工具,現在幾乎任何遊戲都是靠遊戲引擎做出來的。相信各位喜愛遊戲的玩家們,一定也對某些遊戲引擎略之一二,也講得出幾個大名吧? 沒錯,現在的遊戲引擎早已不是什麼業界機密,而是唾手可得的東西了。而遊戲引擎如今也有百百種,有分3D的、2D的,商用的、自製的等等……每一個都有自己的優勢跟劣勢。
  • 網頁遊戲開發引擎之戰,Adobe與Unity孰優孰勝?
    支持開發3D瀏覽器遊戲的先進技術,已經成為影響網路遊戲發展的重要因素,但開發者究竟更青睞哪家公司提供的解決方案呢?  2011年的開發者將面臨兩個新選擇:採用Unity Technology於去年9月份發布的Unity 3,或是Flash 3D版本的Molehill,該工具目前仍處於測試時期,預計今年第二季度發布。
  • VR拓荒者:如何用開源遊戲引擎Gotdot開發VR應用程式
    日前,Oculus內容團隊的開發者關係工程師Eric Cosky推送分享了由Bastiaan Olij撰寫的一篇關於開源遊戲引擎Godot的文章,並介紹了所述工具的開發緣由,以及你可以如何利用這個開源遊戲引擎來開發屬於自己的VR應用程式。下面是映維網的具體整理:1.
  • Javaweb開發學習路線及Java三大框架分享
    Java web開發是什麼?Java web開發,是用Java技術來解決相關web網際網路領域的技術總和。web包括:web伺服器和web客戶端兩部分。Java web 開發Java web開發學習路線一:入門階段
  • 安卓開發學習的路線
    Android應用程式開發是以Java語言為基礎的,所以沒有紮實的Java基礎知識,只是機械的照抄別人的代碼,是沒有任何意義的。下面給各位介紹一下安卓開發學習的路線。很多朋友一上手就開始學習Android,似乎太著急了一些。Android應用程式開發是以Java語言為基礎的,所以沒有紮實的Java基礎知識,只是機械的照抄別人的代碼,是沒有任何意義的。
  • 《摩託英豪4》首批遊戲截圖公布 虛幻4引擎開發
    原標題:《摩託英豪4》首批截圖公布 虛幻4引擎開發   法國廠商Micro ds公布了《摩託英豪4(Moto Racer 4)》。《摩託英豪4》由Artefacts工作室採用虛幻4引擎開發,系列創始人Paul Cuisset也已回歸。
  • Steam喜+1:簡單遊戲開發引擎《AppGameKit Classic》限時免費
    steam商店中原價138的遊戲開發引擎《AppGameKit Classic: Easy Game Development》開啟了限時免費活動,在10月6日之前可免費獲取該版本,活動結束後仍可保留但可能會有一些使用限制
  • HTML5 遊戲引擎深度測評
    設計理念鑑於支持遊戲開發和APP開發,這個框架必定會顧全一些東西,不能在遊戲方面放開手腳。架構設計上,沒講所有的元素全部按照OOP方式設計,內部使用實踐驅動,並有效的結合了異步處理。遊戲方面則僅僅對動畫相關功能做了支持。
  • 《怪物獵人崛起》確認採用RE引擎開發
    《怪物獵人》的Switch版新作《怪物獵人崛起(Monster Hunter Rise)》正式公布,遊戲將於2021年3月26日登陸Switch。不過關於遊戲的更多情報還需要等後續公布。之前業內爆料大神「Dusk Golem」爆料表示卡普空已經搞定了兼容Switch版本的RE引擎,而怪獵新作就是由這個RE引擎開發。現在官方也確認了這一消息。很多玩家在《怪物獵人崛起》公布之後都很好奇本作是否真的像爆料中是採用兼容Switch版的RE引擎開發的。