作者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
1F:→ takomalu :一群红龙同时火焰吐息一定很壮观... 106.187.98.173 04/10 10:48
2F:→ 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)