創作內容

5 GP

【心得分享】遊戲引擎簡易分析

作者:車一平八│2016-12-17 15:23:40│巴幣:10│人氣:1172
  以前常常再說「遊戲引擎」、「遊戲引擎」、「開發遊戲引擎」等等,到底什麼叫做遊戲引擎,其實我以前對於遊戲引擎也不是很懂,書上說明的也讓人看得霧煞煞。你拿現實生活中的車子比喻也是可以比較好理解,但是把他換作遊戲,好像又不怎麼相似。怎麼說?比如說遊戲引擎可以處理遊戲內的所有事情,包括劇情、角色、場景、音樂、動畫、特效等……,當然不止這些,這邊稍微簡單舉例。那問題來了,遊戲引擎是怎麼運作的?怎麼與其他相關的東西產生連動的呢?

  拿檔車的引擎來說,檔車的引擎透過點燃油氣爆炸產生的推力使得活塞作動,而活塞再去帶動區軸,區軸帶動變速箱的齒輪,齒輪再透過鍊條傳動至輪子輸出動力,如此繁雜。那你把它換到遊戲引擎上,也是同樣的道理,只是怎樣子會比較好理解呢?以前我真的不懂,百思不得其解何謂遊戲引擎,拿RPG Maker來說,我以前一直以為編輯器就是引擎,但事實上編輯器卻不是引擎啊!我就不懂了,直到後來我開始寫程式,才稍微比較理解。

首先,先來個簡單的關係圖,之後再來做詳細的解說。

眾多管理者集合  →  遊戲引擎  ←  編輯器
     ↑                  ↓
    └------------------┘
 透過視覺化的操作,簡易化許多需要重複的程式片段,將指令集輸入到管理者中的程式碼。能夠更方便更快速更直覺的組裝出需要的功能,節省大量的時間,也能夠讓其他人不懂程式碼的人能輕易完成數值等的設定更改。


  所謂的遊戲引擎,它是一個概稱,將所有相關的東西放在裡面形成一個有組織性、相當嚴謹的系統架構,而這個系統框架的概括統稱,就是「遊戲引擎」,這就是所謂的「遊戲引擎」的真相。

  如果從開發遊戲引擎的層面來說明,會更好理解。今天假設你要做一款文字冒險遊戲(AVG),而自製引擎的話,所謂的開發引擎,其實就是開發出各種遊戲內容物的「管理者」。舉AVG的例子是因為AVG的遊戲引擎,相較於其他類型遊戲,如RPG等是較為簡單容易開發的。

  何謂管理者(Manager)呢?在討論開發引擎之前,首先你要知道你所要做的東西裡面有什麼東西、需要些什麼。以AVG為例,有幾個重點部分,如:劇情、事件、場景、音樂、音效、人物、介面、畫面、圖片等諸多元素,你就要先為這各個元素分別製作他們的功能,如劇情系統、事件系統等,而這些系統再透過各自的管理者管理。管理者下面有各個類別→方法→程式碼等,這些類別、方法、程式碼就是剛剛提到的系統功能的原型,而相同的數個資料則是透過「鏈結串列」產生關聯性,因為在程式當中,資料並不會如你所想的都放在同一個地方。

  所以第一步是先設計需要用到的功能,比如劇情系統,再設計管理者方便管理及操作它們。第二步就是將這些管理者組織起來,產生連動,這些龐大的、有系統的、嚴謹的管理者組織架構,就是所謂的「遊戲引擎」了。

  做出了遊戲引擎之後,只要你的程式沒出問題,遊戲就能運行了,因為遊戲的運行是建立在遊戲引擎的運作下。那麼接著我們就要來談談編輯器了。何謂編輯器?所謂的編輯器就是一種圖形化使用者介面的軟體工具。當今天你的遊戲引擎完成之後,你可以透過程式碼增減遊戲內容、改變遊戲的數值等,這正是所謂的「底層製作」,直接利用編寫程式碼等來完成遊戲內容的修改。問題來了,當你今天不小心改錯了數值;或是你根本不是個程式設計師;又或著你有大量的資料需要處理。當你在使用底層製作的方式時,不但很容易出錯產生BUG;甚至會造成開發效率低下,導致時間成本的浪費。一款遊戲,通常不會只由一個人完成,會是一個由多個部門所組成的團隊。那好比說企劃人員要將數值輸入,可是他完全不懂程式,這時候該怎麼辦?答案就是「編輯器」。因為團隊中不可能所有人都看得懂程式碼;都明白如何更改遊戲數值,所以你就要開發一個編輯器方便自己或他人操作,達到能夠更方便更快速更輕鬆的改動程式碼的效果。

  當然如果你是一個人自己單獨開發自己的東西,那你也可以不做出編輯器,因為沒有編輯器,一樣可以做遊戲,遊戲內容一樣可以直接透過程式碼去更改,只是那樣會造成效率低下,而且不容易除錯。最好的做法當然還是開發一個編輯器,會比較方便。

  差不多要來收尾了。所以綜上所敘,遊戲內包含了遊戲引擎,所以遊戲才能運行,因為遊戲是透過遊戲引擎在驅動的。而所謂的遊戲引擎,就是由眾多系統功能的管理者的集合於一個框架上所組成的一個大系統。編輯器則是額外的,你可以開發它,也可以選擇不開發,因為它不屬於遊戲引擎的一部份,沒有它遊戲一樣能作動。不過從長遠來看,編輯器的開發也是非常重要的,能夠提升效率、便利性等,也能夠讓其他沒有程式基礎的人,能夠輕鬆上手,輕易地使用工具來達到數值輸入、參數更改、內容改動等。而且日後若有相同類型的遊戲要製作,你也不用再從頭開始寫程式碼寫管理者,能夠直接將這些工具搬來用。

Editors→Engine←Framework←Managers←APIs←functions

依序是:編輯器→引擎←框架←管理者←函數庫←方法

  以上,今天的遊戲引擎簡介就到這邊,因為是簡單介紹,所以如果有錯誤,還望各位多多包涵,歡迎留言指正。感謝你的收看,我是車一平八,我們下次見。
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=3417195
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:程式設計|遊戲引擎|遊戲製作|遊戲設計|遊戲程式設計

留言共 2 篇留言

Weber
可以分析 Unity vs unreal 呀... XD

02-11 13:11

車一平八
應該說這是以程式初學者的角度去理解的02-11 23:55
Weber
編輯器:已經畫好框線,填完顏色就是作品
遊戲引擎:一張白紙,全部由你創造

02-13 16:02

我要留言提醒:您尚未登入,請先登入再留言

5喜歡★a0955818935 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:愛言葉的簡譜,緩慢新增中... 後一篇:【心得】初探MVC的學習...

追蹤私訊切換新版閱覽

作品資料夾

robert286 ლ(´•д• ̀ლ
ლ(´•д• ̀ლ看更多我要大聲說17小時前


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】