作者laechan (小太保)
看板mud
標題[閒聊] 群式怪物的設計
時間Tue Apr 9 10:58:53 2013
這東西 sanc 有,以前的大神寫的。嘛,假設現在沒有然後
想做的話,其實也不難。
一般來說怪物都會有一欄叫做 hp 的欄位,當怪物受傷時,
hp 就會減少,減少到 1 以下時就陣亡。
那假設有一隻怪物我們現在當它是群式怪物,隻數是 100,
則有個簡單的實裝做法如下..
1.將玩家對該怪物的攻擊「實際傷害」/ 100
比方說該群式怪物設定血量為 10000,則因為有 100 隻
,總血量實際上就是 100 萬,則當該群式怪物受到 3萬
的傷害時
a.顯示上依舊為「該怪物受到 30000 的傷害」
b.然後對 30000 做除以 100 的處理 = 300
c.再做血量 10000 - 300 的動作
2.當該群式怪物的血量小於 10000/100 = 100 時
則每受到一次傷害為 n 的攻擊,就減少 n/10000 個隻
數,然後把 n%10000 的值存成 m,m 累加到 10000 時
就再減少一隻,怪物的血量則不變動,維持瀕死狀態。
顯示上則是「該群式怪物陣亡了 x 隻」這樣
3.當該群式怪物的隻數小於 1 隻時
就陣亡。
顯示上則是「一群群式怪物陣亡了」。
細部的設定就依各 mud 設定風格的不同而有不同,例如
你要依隻數初始化血量的 mapping 資料也是可以的,如
hp=query("hp");
for(i=0;i<隻數;i++)
hps[""+i]=hp;
然後戰鬥時就隨機抓 hps[""+random(sizeof(hps))] 來
扣血,當 hps[""+i] < 1 就 map_delete(hps,""+i),這
樣也能實現 100 隻怪物有 100 條血條,然後戰鬥中這些
血條也會扣血,血條扣到 0 時怪物就陣亡血條就消失,
則自然戰鬥到最後隻數會越來越少,這樣的模擬是更趨近
於真實的。
但不管如何,平常的攻擊情況,就類似這一整群怪物很平
均地接受玩家的攻擊,而且最後也很平均地接近瀕死狀態
,然後才一隻一隻地陸續陣亡這樣。
群式怪物的好處自然就是減少物件存在數,例如極端的例
子..
>
礦場深處
明顯出口有: south, east, 和 west.
Lv180.一群牛頭人衛士(Minotaur Guard) [81隻牛頭人衛士]
Lv189.一群牛頭人衛士(Minotaur Guard) [91隻牛頭人衛士]
Lv192.一群地獄穴居人(Infernal Troglodyte) [229隻地獄穴居人]
Lv181.一群梅杜莎皇后(Medusa Queen) [103隻梅杜莎皇后]
Lv180.一群梅杜莎皇后(Medusa Queen) [97隻梅杜莎皇后]
Lv221.一群紅龍(Dragon) [17隻紅龍]
上面看起來有幾百隻怪物塞在同一個房間,但實際上只有
六個物件。
一點心得,跟大家分享。
Laechan@Sanc
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.61.157.53
→ takomalu :一群紅龍同時火焰吐息一定很壯觀... 106.187.98.173 04/10 10:48
→ takomalu :群怪是同時揍一下 然後傷害x數量? 106.187.98.173 04/10 10:55
這屬於各 mud 細部設定的部份,例如要擬真的話,假設一群
有五隻,那就是一回合攻擊為五連擊這樣。
那假設要簡易模擬,就是在 mob 本身做 ::create() 時,將
「隻數」帶進設定裡頭,例如當隻數 5 隻時,怪物的力量、
敏捷等設定就跟著調整,在做回合攻擊時傷害也跟著增加這類
的。
(也就是說一回合還是只打一下,但是會比同等級 mob 打還痛)
個人是認為群式怪物還是要 follow 設定合理性,所以我上面
才會說那是「極端的例子」,若設定合理,個人比較支持一回
合依隻數決定連擊數的擬真做法。
※ 編輯: laechan 來自: 210.61.157.53 (04/10 12:04)