日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于 Unity3D 的 MOBA 游戏架构 - 开始:魔兽争霸 3(一)

發布時間:2023/12/31 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于 Unity3D 的 MOBA 游戏架构 - 开始:魔兽争霸 3(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基本概念

游戲物體,是所有游戲中最重要的一個概念,所有出現在游戲中的物體,對玩家或者二次開發者可見的,就是游戲物體。

在魔獸爭霸3的 Word Editor 的物體編輯器中可以看到有如下幾種基本物體

  • 單位
  • 物品
  • 可破壞物
  • 技能
  • 魔法效果/特效
  • 升級

這些物體出現在單位的狀態欄,建筑的升級欄,或者是商店的購買欄,或者是掉落在地上的物品。

可以看到這些都是組成游戲的基本元素,游戲內所有交互都是基于這些基本物體之間的。

而魔獸爭霸3的 JASS 腳本以及 JASS 腳本封裝一層后帶有 GUI 的觸發編輯器所進行的二次開發,都是基于暴雪所提供的魔獸爭霸3的一些 API 。

在設計游戲的基本物體的時候,我們就需要考慮,這個物體是什么(IsA),這個物體有什么(HasA),這個物體能做什么(CanDo)。

同時我們要從這個物體給外界提供出接口,以方便外界組合出新功能。比如對某個物體提供了設置坐標的接口提供之后,便可以配合定時器做出沖鋒,位移等效果。

設計物體

首先是IsA,開發游戲,大部分是需要選用面向對象語言的,比較符合游戲開發的需求。IsA是面向對象中重要的思想,IsA 決定了這個物體的基本屬性。

舉個例子:大法師是一個英雄,是一個單位。那么他就會繼承所有單位的屬性,同時,所有單位的操作也對大法師有效,比如殺死一個單位的操作,也是可以殺死一個大法師的。

其次是 HasA,HasA著重表示他擁有什么屬性,IsA著重表示了他的父類是誰,那么HasA表示了他擁有了哪些屬性。

大法師有名字,圖標,攻擊投射物,技能等屬性,其中部分屬性是從單位類繼承而來。

當然在魔獸爭霸3的世界編輯器中,這里的游戲物體顯得比較扁平化

(可以看到在世界編輯器這里分類出來的游戲物體是非常特異化的,比如技能和單位,是幾乎無法找到共同屬性的,這也是為什么它倆要分開,但是在游戲引擎底層,應該會是屬于同一個類,因為都要進行資源的讀取,加載以及釋放)

特異化

魔獸爭霸3中的單位,大部分具有相同的屬性,比如會有右邊的操作欄,生命值,移動速度等等。而魔獸爭霸3還分有:召喚物,建筑,普通單位,英雄等概念。

如果從編輯器這里的角度來看,魔獸爭霸3做到特異化這些單位的方法,便是給屬性設置不同的值。

從這里看起來很扁平化的原因便是如此。其實考慮到英雄可能是個召喚物,英雄也可能是個建筑這些概念的話,用屬性控制特異化而不是用IsA來控制特異化是比較好的選擇。因為現在支持虛繼承,支持多重繼承的面向對象語言不多了(其實有C++一個也就夠了)

操作欄是魔獸爭霸3中能夠直接讓玩家感受到不同的區域,英雄單位通過技能的不同組合,獲得了特異的能力。

總結

以上是生活随笔為你收集整理的基于 Unity3D 的 MOBA 游戏架构 - 开始:魔兽争霸 3(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。