引言

歡迎來到GamePlay架構(gòu)章節(jié)的下半部分!
在上一篇的內(nèi)容里,我們談到了UE的3D游戲世界是由Object->Actor+Component->Level->World->WorldContext->GameInstance->Engine來逐漸層層構(gòu)建而成的。那么從這下半章節(jié)開始,我們就將要開始逐一分析,UE是如何在每一個(gè)對象層次上表達(dá)游戲邏輯的。和分析對象節(jié)點(diǎn)樹一樣,我們也將采用自底向上的方法,從最原始簡單的對象開始。

首先需要明確的是,本部分接下來要講述的UE的GamePlay邏輯框架部分,只是討論UE的設(shè)計(jì)思想和理念,并不是表示其在所有其他游戲引擎中是最優(yōu)最完美的方案,同時(shí)當(dāng)然也不是開發(fā)人員務(wù)必遵守的金科玉律,你依然可以也應(yīng)該根據(jù)自己實(shí)際情況靈活變通。UE經(jīng)過了很多權(quán)衡設(shè)計(jì)和歷史進(jìn)化,最后選擇了該設(shè)計(jì)方案,一方面和對象層級相輔相成,另一方面也提供了足夠的自由度可以供你騰挪。
實(shí)現(xiàn)一個(gè)游戲業(yè)務(wù)功能的方式有多種,你應(yīng)該盡量妥善的權(quán)衡你當(dāng)前的現(xiàn)實(shí)情況,考慮生產(chǎn)效率、維護(hù)性、功能實(shí)現(xiàn)、易理解、性能等等多種因素,然后選擇你認(rèn)為最恰當(dāng)?shù)姆绞?。如果你?dāng)前在制作一個(gè)快速原型Demo,你大可以簡單粗暴,我也不贊成時(shí)刻謹(jǐn)遵教條主義一定要分層拆分如何如何;而如果是面對一個(gè)正式的比較大型項(xiàng)目,隨著規(guī)模的擴(kuò)大,我們就得利用清晰的概念來幫助我們減輕心智負(fù)擔(dān)。UE作為一個(gè)老牌的經(jīng)歷了十幾年風(fēng)風(fēng)雨雨的游戲引擎,也當(dāng)然有它的一套GamePlay哲學(xué)。我們選擇了UE,接受了在UE的工作流之下工作,如果我們能比較好的理解它的概念和思想,就能更加的“順”著它的思路,得心應(yīng)手海闊任魚躍。而如果我們“逆”著這個(gè)框架來搞自己的一套,一是不免有無法充分利用UE的嫌疑,二也是以UE的龐大和根深錯(cuò)節(jié)難免讓你碰一頭灰費(fèi)力不討好。

Note1:雖然本部分會涉及到游戲的業(yè)務(wù)邏輯編寫部分,但并不打算詳細(xì)討論AI(BehaviorTree,Navigation等)。AI也是一個(gè)很大的話題,值得專門開個(gè)大章節(jié)討論,我們現(xiàn)在不應(yīng)該委屈她。
Note2:本部分也不會細(xì)討論輸入事件的處理,游戲邏輯確實(shí)一大部分是由輸入事件驅(qū)動起來的,不過我們此時(shí)只是簡單聊一下概念,后續(xù)會有章節(jié)再細(xì)討論輸入事件的路由流程。
Note3:聯(lián)機(jī)游戲的游戲邏輯自然也是非常重要的,但為了簡化本章節(jié)的概念,所以網(wǎng)絡(luò)聯(lián)機(jī)的邏輯同步等也都不會涉及。留待后續(xù)網(wǎng)絡(luò)章節(jié)再好好的闡述。

Component

Actor可以說是由Component組成的,所以Component其實(shí)是我們對象樹里最底層的員工了。在UE里,Component表達(dá)的是“功能”的概念。比如說你要實(shí)現(xiàn)一個(gè)可以響應(yīng)的WASD移動的功能,或者是VR里抓取的功能,甚至是嵌套另一個(gè)Actor的功能,這些都是一個(gè)個(gè)組件。正確理解“功能”和“游戲業(yè)務(wù)邏輯”的區(qū)分是理解C

網(wǎng)友評論