文档目标:在不启动 Unity 的情况下,通过纯数据模拟进行数万次战斗迭代,验证 PRD、暴击率、闪避率及数值成长的数学期望。
在 Unity 中按下 “Play” -> 等待编译 -> 加载场景 -> 刷怪 -> 战斗,整个流程至少需要 30 秒。 如果我们要验证“15% 闪避率在 10,000 次攻击下的实际减伤期望”,在 Unity 里跑要几个小时。
Python Headless 仿真:
class Entity:
def __init__(self, hp, atk, defense, dodge_rate):
self.max_hp = hp
self.hp = hp
self.atk = atk
self.defense = defense
self.dodge_rate = dodge_rate
self.prd_counter = 1 # PRD 计数器
def take_damage(self, amount):
actual_dmg = amount * (1 - self.defense / (self.defense + 100))
self.hp -= actual_dmg
return self.hp <= 0
def simulate_battle(hero, monster_list):
log = []
ticks = 0
while hero.hp > 0 and len(monster_list) > 0:
ticks += 1
# 简单的回合制或时间片逻辑
target = monster_list[0]
# Hero Attack
if ticks % hero.atk_speed == 0:
target.take_damage(hero.atk)
if target.hp <= 0:
monster_list.pop(0)
# Monster Attack
for m in monster_list:
if ticks % m.atk_speed == 0:
# PRD 闪避判定
if not check_dodge_prd(hero):
hero.take_damage(m.atk)
return ticks, hero.hp # 返回战斗时长和剩余血量
python run_sim.py。report.html (使用 Matplotlib 绘图)。核心价值:Fail Fast。在写一行 C# 代码之前,先确无数值模型是成立的。