Dev Diary: Aura

May 28, 2018
在最近進行的 side project 中刻了一個靈氣(aura)輪子。比我想像中的麻煩,決定動筆記錄一下。
首先,這是個規模很小的回合制遊戲,所有角色算攻防加權的動作可以塞在一個迴圈裡面。概念很簡單,我打算先算加權,然後再用加權套進攻防公式,而靈氣的部分就塞在加權裡一起處理。
這裡出現了第一個問題:回到剛剛說的「一個迴圈算完所有數字」,這導致了有些人的靈氣被套進加權時,應該被影響的對象已經先算完了。我也不想算每個人的攻防時再去抓一次所有角色所持有靈氣的判斷,效率感覺就很差。
所以我在每次行動決定後攻防開始前,先把靈氣註冊到該陣營的資料裡,如此就不用多從所有角色撈一次靈氣的資料,所有人都可以到固定的地方找靈氣。
就這樣很開心地開始跑了之後出現了第二個問題:由於系統設計上所有角色的加權都可能互相影響,每次算加權都會對每個角色計算一次。幾個角色行動就算幾次。所以靈氣的效果就被乘以人數。
我的解法是當靈氣啟動時算一次受影響目標,連帶的加權也在那時候就算完。靈氣的啟動與否會有很明顯的斷點(每次攻防結束都會斷掉,效果就被收回。開始時再啟動,這時再把效果加回去)。而原本的加權計算部分,從只計算靈氣的效果加上啟動與否的判斷。
就遊戲設計上來說靈氣是一個不好處理的東西。持續性的效果代表特效不會比一次性的技能顯目,但如此往往讓玩家低估了他實際的效果,同時設計者與玩家之間對靈氣在 lore 所扮演角色的沉浸感也常常有所歧異。
簡單地說,如果不是很花巧思的靈氣,你往往會覺得他很無聊。但這樣無聊的東西事實上花了比我想像還多的功夫,僅此紀錄一筆。
至於我把靈氣寫完之後發現太強所以拔掉就又是另一個故事了。