基于 Unity3D 的 MOBA 游戏架构 - 开始:魔兽争霸 3(一)
基本概念
游戲物體,是所有游戲中最重要的一個概念,所有出現(xiàn)在游戲中的物體,對玩家或者二次開發(fā)者可見的,就是游戲物體。
在魔獸爭霸3的 Word Editor 的物體編輯器中可以看到有如下幾種基本物體
- 單位
- 物品
- 可破壞物
- 技能
- 魔法效果/特效
- 升級
這些物體出現(xiàn)在單位的狀態(tài)欄,建筑的升級欄,或者是商店的購買欄,或者是掉落在地上的物品。
可以看到這些都是組成游戲的基本元素,游戲內(nèi)所有交互都是基于這些基本物體之間的。
而魔獸爭霸3的 JASS 腳本以及 JASS 腳本封裝一層后帶有 GUI 的觸發(fā)編輯器所進行的二次開發(fā),都是基于暴雪所提供的魔獸爭霸3的一些 API 。
在設(shè)計游戲的基本物體的時候,我們就需要考慮,這個物體是什么(IsA),這個物體有什么(HasA),這個物體能做什么(CanDo)。
同時我們要從這個物體給外界提供出接口,以方便外界組合出新功能。比如對某個物體提供了設(shè)置坐標(biāo)的接口提供之后,便可以配合定時器做出沖鋒,位移等效果。
設(shè)計物體
首先是IsA,開發(fā)游戲,大部分是需要選用面向?qū)ο笳Z言的,比較符合游戲開發(fā)的需求。IsA是面向?qū)ο笾兄匾乃枷?#xff0c;IsA 決定了這個物體的基本屬性。
舉個例子:大法師是一個英雄,是一個單位。那么他就會繼承所有單位的屬性,同時,所有單位的操作也對大法師有效,比如殺死一個單位的操作,也是可以殺死一個大法師的。
其次是 HasA,HasA著重表示他擁有什么屬性,IsA著重表示了他的父類是誰,那么HasA表示了他擁有了哪些屬性。
大法師有名字,圖標(biāo),攻擊投射物,技能等屬性,其中部分屬性是從單位類繼承而來。
當(dāng)然在魔獸爭霸3的世界編輯器中,這里的游戲物體顯得比較扁平化
(可以看到在世界編輯器這里分類出來的游戲物體是非常特異化的,比如技能和單位,是幾乎無法找到共同屬性的,這也是為什么它倆要分開,但是在游戲引擎底層,應(yīng)該會是屬于同一個類,因為都要進行資源的讀取,加載以及釋放)
特異化
魔獸爭霸3中的單位,大部分具有相同的屬性,比如會有右邊的操作欄,生命值,移動速度等等。而魔獸爭霸3還分有:召喚物,建筑,普通單位,英雄等概念。
如果從編輯器這里的角度來看,魔獸爭霸3做到特異化這些單位的方法,便是給屬性設(shè)置不同的值。
從這里看起來很扁平化的原因便是如此。其實考慮到英雄可能是個召喚物,英雄也可能是個建筑這些概念的話,用屬性控制特異化而不是用IsA來控制特異化是比較好的選擇。因為現(xiàn)在支持虛繼承,支持多重繼承的面向?qū)ο笳Z言不多了(其實有C++一個也就夠了)
操作欄是魔獸爭霸3中能夠直接讓玩家感受到不同的區(qū)域,英雄單位通過技能的不同組合,獲得了特異的能力。
總結(jié)
以上是生活随笔為你收集整理的基于 Unity3D 的 MOBA 游戏架构 - 开始:魔兽争霸 3(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 剪刀石头布微信小程序源码
- 下一篇: EPSS 解读:与 CVSS 相比,孰美