Avatar狀態機設計

Avatar狀態機設計看似非常簡單,其實深究每個細節則會發現並沒有想象中那麼容易,如何讓設計合理、符合玩家操作習慣是一個很大的話題,我結合實際工作中的設計實例,來做一些分析,本文的素材來源是公司的實際項目,文中引用到一些參與者的設計和言論,並不是最終設計結果,參與討論者的觀點也是即時觀點,有傾向性的觀點也只對本文內涉及的內容有效。

 

註釋:本文爲實際項目中的對答,文中給出的設計圖需各位看官分析思考

 

首先給出一個設計方案如下

這個設計裏有些問題,有大有小,羅列如下:

  • 自動攻擊  是一種狀態沒錯,但自動攻擊的同時,角色也可以移動,但上圖中 自動攻擊 移動的關係是相互切換
  • 談話  其實可以不作爲一種狀態,和NPC對話的同時 玩家同樣可遭受攻擊,進入戰鬥狀態,在對話的過程中,也可以釋放技能,上圖中沒有表現
  • 跳躍 狀態結束 有可能直接進入移動狀態
  • 按你的設計,空閒,跳躍,移動,是人物動作狀態,而並非人物所處的狀態,非玩家控制狀態下 你的角色仍然可能釋放技能,比如 被敵對玩家 “精神控制”,因此,非玩家控制 狀態  人物動作狀態並非同一層面
  • 戰鬥狀態 非戰鬥狀態 兩種狀態 此圖不能體現
  • 瞬發技能不需要詠唱,在空閒和跳躍的過程中都可能釋放
  • 移動狀態下,不可切換成詠唱,必須是空閒狀態下,纔可以詠唱,這裏估計是想錯了,認爲移動可切換成站立不動的詠唱,但實際上應該是先不動了,才能詠唱

 

註釋:以上提出的幾點,是這個狀態機的直觀分析,設計者的隱藏設計,並不在考慮之內

 

針對以上問題的討論如下:(不同顏色代表不同的討論者)

1、自動攻擊  是一種狀態沒錯,但自動攻擊的同時,角色也可以移動,但上圖中 自動攻擊 移動的關係是相互切換

自動攻擊時不能移動,這個參考天龍的做法,跟wow不一樣,用鼠標操作的如果自動攻擊時可以移動會帶來很多問題。

自動攻擊時不能移動,剛剛LY也是這麼說,這一點我持保留意見。另外,就算按照你說的,自動攻擊時不能移動,那自動攻擊時能不能釋放技能呢?圖裏也沒畫吧?我覺得自動攻擊是一種常態,是角色所處的狀態,不能和角色的動作狀態放在一起。

其實仔細看下來ZJ的這張圖裏,並沒有動作狀態,全都是邏輯上的狀態,所以自動攻擊作爲一種角色狀態放在裏面是沒問題的。另外,自動攻擊中不能移動這個不是我們決定的,策劃文檔裏雖然沒有明確指出這一點,但由於我們是參考天龍,所以沒有明確指出的部分,在文檔上沒有被明確補完之前,這樣的遷移沒有問題。

LY:如你所說,這張圖確實可以理解爲一張純邏輯狀態圖,如果這樣理解,問題就變成了:跳躍本身就是移動的一種子狀態,此圖就沒有跳躍狀態,因爲區分“移動”和“空閒”兩種狀態的目的是爲了“移動中不可施法”,跳躍沒有作爲一種單獨狀態存在的理由(有的話,請舉出)。如果“自動攻擊”狀態成立,那自動攻擊狀態不可施法(圖中)?空閒不可進入自動攻擊?這裏還需要確認的是“自動攻擊”的定義,我認爲自動攻擊是一種保持的狀態,在戰鬥中移動了位置,也是在自動狀態中,而你的解釋是,自動攻擊會切換到移動狀態,然後再切回來,從你的這個論點出發,就是按照角色動作劃分了,並不是按照角色狀態劃分了。因爲角色纔此時的狀態就是自動攻擊狀態。

 

2、談話  其實可以不作爲一種狀態,和NPC對話的同時 玩家同樣可遭受攻擊,進入戰鬥狀態,在對話的過程中,也可以釋放技能,上圖中沒有表現

在談話時被攻擊會打斷談話過程,天龍跟wow好像都是這麼做的吧。

我的意思就是這個意思,既然談話時,玩家也能被攻擊,也可能會死,那麼對話就不是單獨的一個狀態了,我的觀點就是,沒有談話這種狀態。

談話是一種狀態,而且談話時會觸發到談話狀態機。有些事件只有玩家在談話時纔會接受,因此談話必須做爲一種狀態存在纔能有正確的遷移

LY:可以認爲談話是一種狀態,但我認爲是多餘的,既然談話中可能被攻擊,那談話就是空閒狀態,並不是談話狀態,什麼是你說的:“因此談話必須做爲一種狀態存在纔能有正確的遷移”,需要什麼正確的遷移?

 

3、跳躍 狀態結束 有可能直接進入移動狀態

在跳躍狀態下是不響應玩家操作的,所以跳躍完肯定是靜止站立在那邊的,移動中跳躍不同,這裏參照的天龍中的做法,移動中跳躍不改變移動方向,所以我這裏的跳躍狀態不包括移動中跳躍

我不是很理解,你所說的:“我這裏的跳躍不包括移動中跳躍”這句話。我的理解是,這個圖必須能完整反映整個情況。

這裏有點問題,我看了下需求文檔,裏面寫移動中跳躍不遷移。但實際上移動中會接收跳躍的事件併產生響應與動作,在圖中應該用一個自遷移來表示,而並非文檔裏用紅字寫的“ 狀態不遷移”

LY:暫無異議

 

4、按你的設計,空閒,跳躍,移動,是人物動作狀態,而並非人物所處的狀態,非玩家控制狀態下 你的角色仍然可能釋放技能,比如 被敵對玩家 “精神控制”,因此,非玩家控制 狀態  人物動作狀態並非同一層面

我狀態機中的名字其實並沒有實際意義,只是根據自底向上分析完之後把哪些響應同一事件的狀態整合起來而已。

這句話我也不是很理解,我的理解是,狀態機設計就是爲了劃分原本一些不清晰的概念,按照你的說法,你的名字都沒有實際意義,那狀態機設計就沒有意義了,因爲你的劃分可以這樣說,也可以那樣說。

其實重點不在於動作裏的名字有沒有意義,重點是,裏面每種狀態是否明確表達了響應的事件和跳轉關係

LY:保留意見

 

5、戰鬥狀態 非戰鬥狀態 兩種狀態 此圖不能體現

我在需求文檔中寫過了,戰鬥狀態和非戰鬥狀態區別在於一些技能和物品使用的規則不同,所以我沒有把他們放到控制玩家邏輯的狀態機中,我覺得這樣跟方便一些。

這一點,我持保留意見,回頭可以深入探討。

這一點,我覺得戰鬥狀態和非戰鬥狀態只是玩家能看到的兩種表面狀態,我們設計狀態機時應該考慮的是裏面的邏輯區別

LY:這兩種狀態並非表面狀態,而是戰鬥狀態不可以喝水吃麪包,這就是和我們邏輯相關的,必須在圖中體現

 

6、瞬發技能不需要詠唱,在空閒和跳躍的過程中都可能釋放

瞬發技能是不用詠唱,我這樣做只是爲了把關於技能判斷和處理的過程都放在詠唱階段去處理,在空閒狀態下釋放技能放在移動中也是爲了在移動中處理所有關於距離判斷的處理,並不是說空閒狀態下不能釋放技能

不可以“把關於技能判斷和處理的過程都放在詠唱階段去處理”,因爲“瞬發”和“詠唱再發”是兩件事情

瞬發和詠唱只是兩種表象,如果瞬發在數據庫裏只是詠唱時間爲零的技能,那在邏輯上就是同一套東西。不過另一方面我覺得空閒狀態下釋放技能應該是有所表達的,或者把空閒和移動歸到一個大的狀態裏,ZJ的圖裏其實看不到這一跳轉。(狀態圖應該能把操作邏輯表達完整)

LY:保留意見

 

7、移動狀態下,不可切換成詠唱,必須是空閒狀態下,纔可以詠唱,這裏估計是想錯了,認爲移動可切換成站立不動的詠唱,但實際上應該是先不動了,才能詠唱

因爲我關於距離判斷的邏輯都在移動狀態下處理,所以對於在移動時詠唱,不經過空閒階段直接進行詠唱。

這個和狀態機設計的原則不符合,不是說不能這樣做,只是這樣做好不好,這一點我持保留意見

 

你是按照自頂向下的設計思路設計的,我上個版本也是這麼做的,把玩家分爲戰鬥狀態和非戰鬥狀態,後來發現這樣做最大的壞處就是很多判斷和動作位置比較混亂,一旦有什麼修改容易造成很多bug,所以這次我採用自底向上的方法,把子狀態的所有可能跳轉分析出來,然後根據同樣的邏輯跳轉整合在一起,並不是按照存活死亡、進入脫離戰鬥狀態的方式設計,我覺得這樣可能更有效些。

你說:“這樣做最大的壞處就是很多判斷和動作位置比較混亂”,我不是很理解,請舉出具體例子,你說這樣可能更有效,我也不是很理解,怎麼有效?

 

其實這裏有個問題,就是狀態機設計是根據程序員的實現方式來還是根據玩家的操作方式來。這一點可以再討論,因爲也很難說清楚哪個更好,但狀態機最低限度應該要能讓策劃理解並且回答“這樣確實是我想要的邏輯”。

LY:我的理解不同,狀態機不是說根據程序的需要或是玩家操作來,而是真相只有一個,狀態機設計好壞,就是我們程序邏輯的好壞,沒有從不同方向考慮,不同方向進入的差別。

 

我給出設計如下

此圖爲角色上半身動作狀態圖,下半身情況簡單的多,只有空閒、移動、跳躍和死亡,如果把上下身體當作一個整體考慮,則需要做修改。

此圖爲玩家狀態圖

 

針對一些同事提出的按角色邏輯狀態劃分的需求,給出一個新的設計(角色邏輯狀態)

我的考慮如下:

跳躍實際上就是角色的錨點按餘弦軌跡移動,所以是移動的一種。按昨天的說法,談話的過程中,不可以移動,不可以釋放技能,所以移動狀態到談話狀態是單向進入,這樣的話,進入談話狀態,可能會被其他玩家輪X到死。這一點需考慮。

實際上,看上圖分析,釋放技能之後都會回到歷史狀態,這就顯得很累贅了,釋放技能實際上並不是一個狀態,只是一個動作,因爲假設釋放一個技能的動作是0.2秒,如果此時是一個狀態,則在這0.2秒中是無敵的,這樣設計就錯了,事實上,我們期望的結果是,瞬發技能只對自己或對方的狀態產生影響,而表現這個動作花費的0.2秒,和放技能本身是兩件事情。做出修改如下:

結論,狀態機設計可以從不同的出發點和角度考慮,但最後能完全滿足需求的設計方案應該只有一個,因爲使用狀態機進行設計,原本的目的就是爲了統一小組成員的設計思想,狀態的劃分也將影響最後角色的行爲,對遊戲品質也有深遠的影響,因此,設計狀態機必須能轉換角度看問題,從不同的層面不同的角度進行狀態劃分和組合,以求一個最簡最精的設計方案。

發佈了15 篇原創文章 · 獲贊 0 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章