Game Engine Architecture by Jason Gregory:1.3 什麼是一個遊戲引擎

"遊戲引擎"這個概念是在1990時代中期隨着類似當時由idsoft公司做的瘋狂流行的Doom這種第一人稱射擊遊戲而出現的。Doom通過對核心軟件部分(如3D圖形渲染系統、碰撞檢測系統、音頻系統)、美術資源、遊戲世界、用以提高玩家遊戲體驗的一些遊戲規則的合理的、很好的定義的分離,形成了一個比較好的的架構。當開發者開始開放遊戲授權,或者僅僅用對“遊戲引擎”作最小的改動而把新創作的美術資源,世界地形分佈,武器,角色,車輛還有遊戲規則做到新產品中去的時候,這個分離的作用就顯現出來了。這個使得"mod commnity"誕生了-一組獨立的玩家及小型的獨立的工作室,用原作品開發者提供的免費的工具對現有的遊戲進行修改。到90年代末期,一些遊戲如"Quake III Arena"(雷神之錘3:競技場)及"Unreal"(虛幻)就是被重用及模式修改而製作出來的。引擎可以被通過腳本語言例如idsoft的QuakeC等高度定製,引擎的授權使用對開發者來說也變成一個非常重要的資金來源。今天,遊戲開發者可以通過授權遊戲引擎和重用一它的一些重要的部分來製作遊戲。這個經驗在個性化引擎的時候仍作爲一個可考慮的投資方式被使用,它比自己在家裏面一個引擎的核心部分全靠自己完成更加經濟。

遊戲跟它的引擎之間的界線經常是模糊的。有的引擎作了一個非常合理的劃分,而另外一些則看上去絲毫沒有這個意思。在某個遊戲,渲染代碼可能清楚地“知道”如何去畫一個獸人,而另外一些遊戲,渲染引擎可能只提供一個通用的支持材質和shader的東西,而“獸人”這種東西可能是靠數據來定義的。沒有哪個工作室對遊戲和引擎做一個完美的清晰的劃分,隨着遊戲設計的確定這兩個東西的可接受的定義經常在轉換着。

辯證地說一個“數據驅動的架構”是這個軟件到底只是一個遊戲還是一個遊戲引擎之間的區別。當一個遊戲包含了硬編碼的邏輯或者遊戲規則,或者使用了特定的代碼去渲染特定的遊戲物件,那麼就變得很困難或者基本不可能用它去另外做一個遊戲。我們可能需要定義“遊戲引擎”這個概念在軟件上應該是可擴展的,並且在不作大的改動的情況上能作爲許多不同遊戲的基礎。

完全不能再用來     能夠個性化去做     可以修改以便做某種      可以用來做任意
另外做一個遊戲     非常簡單的遊戲     特定類型的遊戲            類型的遊戲
        |--------------------|------------------|---------------------------------|
        |--------------------|------------------|---------------------------------|
                ^                   ^                        ^            ^                  ^
            PacMan      HydroThunder           Quake     Unreal     基本不可能
                                  engine                    3            3
       

這裏當然沒有像黑白分明那麼清楚的界限。我們可以作一個完整的列表來顯示這些引擎的地位。表1.1列了一下一些非常知名的引擎在這個列表中的位置。

有人可能會想遊戲引擎可能可以做得像蘋果的QuickTime或者是微軟的MediaPlayer-一個具有通用的能玩可以想象的任意類型的遊戲。不過這個設想還沒有達到(或者永遠都不會達到)。絕大多數遊戲引擎都經過很仔細的調整以便於在一個特定的平臺上運行一個特定的遊戲。即使是最通用的支持多平臺的遊戲引擎都只適合做某一類型的遊戲,如第一人稱射擊遊戲或者賽車遊戲。可以這麼說,一個遊戲引擎或者中間件越通用,那麼它就越不能理想的在某個特定平臺運行某個特定的遊戲。

這個現象會發生是由於設計任何軟件時固定性會帶來一些矛盾,這個矛盾是建立在這個軟件將如何被使用以及運行的目標平臺是什麼。例如,一個被設計爲負責祕密室內場景的渲染引擎可能就不適合廣闊的室外場景。這個室內場景引擎可能會用一個BSP樹或者portal系統來保證這些被接近攝像機的牆或者物體擋住的幾何網格不會被渲染。而另外一方面,室外場景引擎,可能會用一個less-exact occlusion mechanism,或者完全不是,但它有可能會同意使用一個細節層次(LOD)的技術來保定越遠的物體是用最少的三角形來繪製,而用一個比較高精度的較多三角形的解決方案當它靠近攝像機的時候。

隨着越來越快的計算機硬件和特殊的顯卡到來,也伴隨着更高效的渲染算法和數據結構的出現,不同類型的遊戲的渲染引擎之間變得越來越接近。比如現在有可能用一個第一人稱射擊遊戲的引擎來做一個實時的策略遊戲。但是,通用性和最優化的矛盾依然存在。一個遊戲往往可以通過針對特定的類型或者硬件的一些特定的需求作一些非常重大的改進。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章