[解析ActionRPG]寫(xiě)這個(gè)系列的動(dòng)機(jī) & 目錄

斷斷續(xù)續(xù)學(xué)習(xí)和使用Unreal Engine已經(jīng)近一年時(shí)間了。保管庫(kù)里也已經(jīng)免費(fèi)蹭了100+個(gè)資源了。。。沒(méi)有怎么使用,感覺(jué)非常對(duì)不起這些寶貴的素材。于是,打算開(kāi)始仔細(xì)學(xué)習(xí)一個(gè)官方游戲工程,看Epic是如何組織游戲和資源,希望能熟練地使用UE,并快速地Prototyping,這樣才能花更多的時(shí)間在設(shè)計(jì)上(原型制作應(yīng)該算在設(shè)計(jì)游戲過(guò)程中,而不是游戲制作)。之前雖然用純藍(lán)圖做了一個(gè)簡(jiǎn)單IO游戲的原型,基本掌握了虛幻的Gameplay Framwork、藍(lán)圖和藍(lán)圖網(wǎng)絡(luò)編程,但完成工程后回看,自己的藍(lán)圖編程簡(jiǎn)直是個(gè)災(zāi)難。(這是我編程生涯中一直存在的問(wèn)題。閱讀《GameProgrammingPattern》,學(xué)習(xí)面向數(shù)據(jù)編程和ECS,都對(duì)我?guī)椭艽?,但現(xiàn)在的能力離我的期望還較遠(yuǎn)。我想,只能通過(guò)多閱讀游戲項(xiàng)目和自己動(dòng)手做原型才能加深我對(duì)游戲的理解。對(duì)原型制作有見(jiàn)解的看官,請(qǐng)不吝賜教?。?/p>

對(duì)于官方項(xiàng)目,我選擇了ActionRPG。因?yàn)樗Y料最齊全(文檔+視頻)。話雖如此,其實(shí)資料也只是解析了其中的一部分。除此之外,ActionRPG中使用的Gameplay Ability System,我也很感興趣。整個(gè)項(xiàng)目只有近30個(gè).h文件。而且之前對(duì)Unreal C++編程也有一定的基礎(chǔ)了,只要堅(jiān)持應(yīng)該可以順利啃下來(lái)。
現(xiàn)在Epic已經(jīng)全面更新了中文文檔,大家可以去官網(wǎng)查看:
https://docs.unrealengine.com/zh-CN/Resources/SampleGames/ARPG/index.html
項(xiàng)目工程可以在Epic虛幻商城下載。

在這個(gè)系列中我會(huì)逐一分析每個(gè)代碼文件,藍(lán)圖。動(dòng)畫(huà)、材質(zhì)、粒子等,我應(yīng)該也都會(huì)涉及。
希望到這個(gè)系列的結(jié)尾,我能從零開(kāi)始構(gòu)建一個(gè)自己的“ActionRPG”項(xiàng)目(當(dāng)然,素材還是用別人的)。

PS:【爭(zhēng)取每日一更】

Contents

1) Code

注:代碼部分會(huì)有大量的代碼和注釋?zhuān)曇翱赡軙?huì)更局部,各部分之間的關(guān)聯(lián),會(huì)在其他部分說(shuō)明。

Part I: Modules

一、TargetRule , ModuleRule
二、ActionRPGLoadingScreen.h/cpp & Slate


Part II: Gameplay Ability System[GAS] ( ActionRPG/Abilities)

三、RPGAbilitySystemComponent.h/cpp & AbilitySystemComponent
四、RPGGameplayAbility.h/cpp & GameplayAbility
五、RPGAttributeSet.h/cpp & AttributeSet
六、RPGTargetType.h/cpp & Targeting
七、RPGAbilityTask_PlayMontageAndWaitForEvent & AbilityTask
八、RPGDamageExecution.h/cpp & GameplayEffectExecutionCalculation
十五、RPGCharacterBase (GAS related)

代碼部分的GAS就到這了。GAS部分還有很多內(nèi)容,到藍(lán)圖的時(shí)候會(huì)補(bǔ)完。我們先把GAS暫時(shí)擱置,將目光轉(zhuǎn)向道具和背包。(也能檢驗(yàn)一段時(shí)間后回看自己所寫(xiě)是否簡(jiǎn)明。)


Part III: Item & Inventory ( ActionRPG/Items , InventoryInterface , AssetManager etc.)

應(yīng)該要去思考:

  • 背包系統(tǒng)的功能
  • 如何定義背包的數(shù)據(jù)
  • 明確待解決的問(wèn)題(為解決問(wèn)題而努力,而不是還原人腦中的抽象模型【OOD的思維誤區(qū)】)

九、RPGItem.h/cpp & PrimaryDataAsset
十、RPGAssetManager.h/cpp & AssetManager
十一、RPGType.h
十二、RPGInventoryInterface.h & Interface
十三、RPGPlayerControllerBase.h/cpp & InventorySystem
十四、RPGSaveGame & SaveGame

還剩下RPGGameInstanceBaseRPGBlueprintLibrary,就不細(xì)講了。其中RPGGameInstanceBase負(fù)責(zé)游戲數(shù)據(jù)的存儲(chǔ)和加載。RPGBlueprintLibrary則是提供靜態(tài)工具函數(shù)供藍(lán)圖調(diào)用。


2) Code Design

這一部分,我們?cè)俅位乜创a,思考其結(jié)構(gòu)。
十六、背包系統(tǒng)設(shè)計(jì)(嘗試分析的一些思考)

在GAS這塊,項(xiàng)目中RPGAbilityType.hRPGTargetType.h自定義了些新的數(shù)據(jù),打算在看完藍(lán)圖部分后再倒回來(lái)分析。


3) Blueprint

Part I : GAS

分析幾個(gè)具體的技能實(shí)現(xiàn):
十七、使用生命藥水回復(fù)生命值(GA_PotionHealth)
十八、玩家戰(zhàn)斧攻擊(GA_PlayerAxeMelee)
十九、火球術(shù)(GA_PlayerSkillFireball)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容