03.04 遊戲引擎是什麼?它與遊戲軟件本身是什麼關係,它與編程語言是什麼關係?

凹凸美神


這個問題很有意思,因為我自己也是個資深的遊戲愛好者。簡單來講,遊戲引擎就像是一個庫,裡面包含著編寫遊戲的各類工具,方便了設計者的開發。

遊戲引擎是什麼

並不是所有的遊戲都需要遊戲引擎,比如貪吃蛇,五子棋這類小遊戲,用C++或者java等語言都可以寫出來,語句也不是太複雜。但是如果我們要做一些大型遊戲,尤其是像刺客信條奧德賽,孤島驚魂5這樣的3A大作,就需要遊戲引擎的支撐了。

遊戲引擎的本質是程序,包含的內容有很多,有必要的渲染組件,物理引擎,音效,腳本和碰撞檢測等等。相信各位玩家都有這樣的體驗:同一系列的遊戲,人物動作,光影渲染會傳承數代,就是因為使用了同一款遊戲引擎的原因。當然了,並不是說不使用遊戲引擎就做不出大型遊戲,開發者們也可以從零開始,但是這樣太費力了,所以諸如R星,育碧這樣的遊戲開發泰斗都選擇了使用遊戲引擎。

至於遊戲引擎,編程語言和遊戲本體之間,他們的關係是這樣的:遊戲引擎+編程語言=遊戲本體。雖然遊戲引擎的內容很多,但並不能直接在遊戲中使用,必須通過編程語言來調用。

常見的遊戲引擎

世界上游戲引擎的種類有很多,比較出名的有瑞典DICE工作室的寒霜引擎,大名鼎鼎的《戰地》系列就使用了該引擎。還有虛幻4,是整個遊戲業界內運用範圍最廣,整體運用程度最高,次世代畫面標準最高的一款引擎。像風靡全球的《堡壘之夜》,《絕地求生》都使用了虛幻4作為遊戲引擎。除了寒霜和虛幻四,還有一款比較輕量級的遊戲引擎——unity3D,這類引擎多用來做網頁遊戲和手機遊戲。

需要注意的是,遊戲引擎並不能直接主宰遊戲好壞。舉個例子。B社旗下的《輻射76》,照搬了《輻射4》的Creation Engine,雖然說也是自家的東西,但是挺湯不換藥的只知道打情懷圈錢的舉動簡直是腦子有坑;相較之下,老毛子的《逃離塔科夫》就有誠意的多,而且使用的還是Unity3D這樣的引擎,做出來的卻是一款足夠硬核的FPS大作。所以還是要看開發商的態度如何。


愛思考的奧特曼


先給出遊戲引擎的定義把:

遊戲引擎是指一些已編寫好的可編輯電腦遊戲系統或者一些互交式實時圖像應用程序的核心組件。這些系統為遊戲設計者提供各種編寫遊戲所需的各種工具,其目的在於讓遊戲設計者能容易和快速地做出遊戲程序而不用由零開始。

其實不需要遊戲引擎也能製作遊戲,比如C#,VB這些的都能用來製作遊戲,不過過程極為複雜,甚至製作一款連連看這類的小遊戲都得花費大量的時間和精力。後來為了減少遊戲工作者的工作量,那些遊戲製作的前輩們就將他們先前設計過的程序做成一個又一個的程序包整合起來成為了一種隨時方便後續遊戲工作者調去的工具,這就是遊戲引擎。

目前市面上在流通的比較出名的遊戲引擎有unity3D,虛幻4,havok等等;還有一些很出名但是隻是個別公司御用的引擎比如動視暴雪的IW,EA的寒霜。

其實這些公司的御用遊戲引擎的誕生就是因為大公司有錢,完全可以不依賴現成的遊戲引擎而讓自己從頭開始編寫遊戲。基於OpenGL或者Direct3D,自己寫場景的解析器,自己寫渲染器。為了跟美術和策劃合作,至少還得寫一個場景編輯器,後來發現老是手工改材質配置非常繁瑣或者是容易出錯,就需要再寫個材質編輯器。後來又發現缺個啥,再寫個什麼。如果完完整整都寫下來,那麼寫出來的這些個工具,就成了一套完整的3d引擎了。

那我們來理一下游戲引擎,遊戲和編程語言之間的關係吧

遊戲引擎+編程語言→遊戲

編程語言→遊戲

上面這兩條基本就是這三者之間的關係咯~

那麼做遊戲的話僅僅學會使用遊戲引擎就足夠了麼?

如果你只是目標做一款類似於連連看這種的小遊戲話,unity絕對是首選,隨便拖兩下基本就能動了。但稍微規模開始大的話就得了解C/C++,OpenGL/DX,圖形學,線性代數(圖形學的基礎)。看到了吧,大學時候你們說學線性代數沒用,其實在程序設計的時候線性代數是非常關鍵的知識!

好了,其實今天說的算是比較簡單的,因為涉及到遊戲引擎的話還有非常多的東西,因為不同的引擎支持的編程方式也有點不太一樣,不過C和C++就像屠龍寶刀基本都能通殺哈哈,因此大學計算機專業到現在C語言也依舊是必修課程,甚至只要是一些和程序設計有點相關的專業也都要學C語言。


麥大麥


首先什麼是遊戲引擎?以下就是遊戲引擎的解釋(圖片來自百科)


那麼簡單點講到底什麼是遊戲引擎呢?我先舉個例子,一家遊戲公司要做十個遊戲,這十個遊戲有40%的代碼部分是一樣的( 場景切換,聲音效果解析,鍵盤控制角色,場景的創建等等),60%的代碼部分是不一樣的。遊戲公司有兩種選擇解決方法:

  1. 第一種 這十個遊戲都是從頭開始寫不管是40%一樣的部分還是60%的不一樣的部分每個遊戲都要寫一遍。

  2. 第二種 首先寫遊戲之前把這個十個遊戲中把那個40%的一樣的代碼部分寫成若干個類庫,組件。開始寫遊戲的時候只寫那個不一樣的60%的代碼部分,需要些那40% 一樣部分的時候就直接調用先前寫好的類庫,組件,避免重複寫一樣的代碼浪費時間,浪費精力,浪費資金。

遊戲引擎就是先前寫好的40%的代碼部分,任何遊戲有可能用到的代碼部分寫成獨立的工具,然後把好幾個像這樣的工具集合在一個軟件上 這就是遊戲引擎。

比較流行的遊戲引擎有,虛幻4,unity3D,cocos2dx...等等。



遊戲引擎與遊戲本身是沒有什麼關係因為你寫遊戲的時候可以不用遊戲引擎直接調用平臺(Win,OS,Android)提供給你圖形庫,聲音庫,和硬件,輸入輸出設備有關的類庫,庫函數。

如果說有關係那就是用遊戲引擎寫遊戲的時候必須要遵守引擎的規範,用引擎寫的遊戲有一定程度上依賴引擎提供的遊戲運行環境。

不過經濟上有很大的關係因為上面提到的虛幻4,unity3D等引擎前期是免費,等遊戲寫完開始盈利到一定的程度以後引擎公司從遊戲公司拿一部分作為引擎的授權費。而且不是一次性的。


就算有了遊戲引擎的幫助上面講的那個60%不一樣部分還是我們自己用變成語言編寫完成。每個引擎支持的編程語言是不一樣的,有的支持c/c++,有的c#,有的js。每個引擎支持的編程語言數量也是不一樣的,有的引擎只支持一種編程語言有的就好幾個變成語言。


以上全是個人理解有很多不足的地方不喜歡勿噴,如有喜歡的朋友記得點贊,點關注。


雞蛋愛上計算機


遊戲引擎,其實只是一個比喻。所謂的遊戲引擎,就是一個框架,或者可以說是一套製作程序的模板,如果你熟悉mfc,你就知道了,其實mfc也可以看作是一個引擎,它是為了製作一般桌面程序用的引擎。這一套模板主要的功能就是減少重複開發的成本,理想的引擎狀態是基本上不用改動什麼代碼,只是寫一寫腳本就可以通過加載不同的素材,製作出各種各樣的遊戲。

至於使用的語言,其實引擎可以用任何語言來開發,但為了榨乾硬件的效率,同時又保證開發的效率,遊戲引擎更適合於一些執行效率高的語言,比如C語言和C++。

一些商業化的引擎,通常除了軟件代碼模板以外,還提供了很多工具,極大地簡化了開發流程,縮短開發週期。但歸根結底遊戲引擎就是一套代碼,可以使用任何語言來開發,但推薦使用執行效率高的語言。


極限英語


在IT行業和電競行業,很多人都聽說過“遊戲引擎”、“編程語言”這類和遊戲相關的專業名詞,但未必能弄清楚這些名詞間的關係。

首先我總結一下“遊戲引擎”、“遊戲”、“編程語言”三者的關係:

  • “遊戲”是最終產物,是一款程序;

  • “遊戲”需要用“編程語言”來開發,來編寫源代碼;

  • “遊戲引擎”是已開發好的遊戲公共組件,它對外提供了SDK,可以讓遊戲開發者避免重複造輪子、快速的開發出遊戲程序;“遊戲引擎”其實也是程序的一種(本身也是由編程語言來開發的),另外支持多種開發語言來調用它。

遊戲開發者通過編程語言和遊戲引擎來開發出遊戲程序。

遊戲引擎其實就是遊戲開發過程中的必要公共組件和小工具,一般的遊戲引擎包含以下子集系統:

  • 渲染引擎,支持二維、三維圖像的渲染;

  • 物理引擎,如重力檢測、運行檢測;

  • 腳本引擎,支持一些腳本語言,如很多遊戲引擎都支持Lua腳本;

  • 音效系統,遊戲中各類音效的實現與管理;

  • 動畫引擎,動畫管理;

  • 人工智能,如語義理解

  • 網絡引擎

現在主流的遊戲引擎如:Unity3D、Cocos2D等,有興趣的都可以瞭解一下。

網絡圈


\n

{!-- PGC_VIDEO:{"thumb_height": 360, "thumb_url": "199a1000bc944cc589580\


分享到:


相關文章: