龙与地下城(DND)于1974年发行第一版,当初所有RPG游戏都有它的影子,能够说它影响了全世界的RPG,对于RPG来说,最次要的一个特点就是有着不同类型的怪物,而咱们能够通过《dungeon master guide》中提供的Challenge Rating(CR)公式来创立咱们本人的怪物,因为咱们也是地牢巨匠的一员,对吧。
《龙与地下城》让玩家可能自在地与好友一起游戏并发明故事。作为DM,咱们还能依据本人的爱好发明属于本人的怪物。所以就有了本篇文章,本文中着重于四个次要问题:
- 依据CR公式计算的手动怪物的挑战等级有何不同?
- 怪物的属性如何与挑战评级零碎及其自身相关联?
- 怪物的非属性属性(类型,环境,大小,排列)如何影响它的属性?
- 咱们能预测一个没有教训的dm和SRC怪物类似的怪物属性块吗?
挑战等级(CR)公式
威世智(Wizards of the Coast)提供了一系列图表和一个通用公式,能够为玩家创立本人的自制怪物时作为参考。所以咱们首先就是要验证这个公式的准确性。我咱们从《怪物手册》中的怪物上利用它,看看是否会取得雷同的等级评定?
因而,我从CR列表中获取了三个怪物,并应用公式计算结果,它们实际上十分靠近,所以能够证实这个公式是无效的,咱们上面能够应用它进行正式的工作了。
从《龙与地下城》的零碎参考文件(SRD)中取得了300个怪物,并开始摸索数据。侥幸的是,威世智为咱们提供了收费应用和摸索本文档中的信息的服务。
我应用Selenium抓取这些数据感,而后进行了整顿。数据科学家毕生中90%的工夫都在清理数据时,他们不是在开玩笑。
上面是我获取的所有数据的属性:
[‘Monster Name’, ‘Size’, ‘Type’, ‘Alignment’, ‘Traits’, ‘Reactions’, ‘Armor Class’, ‘Hit Points’, ‘Speed’, ‘Challenge’, ‘Proficiency Bonus’, ‘STR’, ‘DEX’, ‘CON’, ‘INT’, ‘WIS’, ‘CHA’, ‘Actions’, ‘Legendary Actions’, ‘Environment’, ‘Attack_Bonus’, ‘Spell_Bonus’, ‘Spell_Save_DC’, ‘WIS_SV’, ‘INT_SV’, ‘CHA_SV’, ‘STR_SV’, ‘DEX_SV’, ‘CON_SV’, ‘Arctic’, ‘Coastal’, ‘Desert’, ‘Forest’, ‘Grassland’, ‘Hill’, ‘Mountain’, ‘NA’, ‘Swamp’, ‘Underdark’, ‘Underwater’, ‘Urban’, ‘Average_Damage_per_Round’, ‘Damage Resistances’, ‘Damage Immunities’, ‘Condition Immunities’, ‘Damage Vulnerabilities’, ‘Spellcaster’, ‘Magic Resistance’, ‘Legendary Resistance’, ‘Regeneration’, ‘Undead Fortitude’, ‘Pack Tactics’, ‘Damage Transfer’, ‘Angelic Weapons’, ‘Charge’]
CR与怪物统计数据无关吗?
探索性数据分析的根底就是散布。这些统计数据的数据集是什么样的?咱们有很多右偏的数据。思考到挑战等级的偏右(大多数怪物等级较低),这是正当的。
大多数规范属性:力量、麻利、智慧、智力和魅力的散布范畴都在0到30之间。然而体质中简直没有10以下的怪物。这应该是因为体质0的话就死了,毕竟在任何游戏中活着是第一位的。
绘制统计数据的联结散布能够失去更清晰的相干图。
熟练度的处分与挑战评级相干,这是必定的。所以在咱们的模型中不应用熟练度处分这个特色,因为它不会为咱们提供更多信息。咱们应用相关性的热图进行更具体的剖析。
这里最大的一个发现是麻利与其余任何统计数据的相关性简直没有(是不是能够说麻利是最没用的属性呢)。
然而也确实有一些十分强烈的相干属性,这意味着它们相互影响。
为了进一步摸索所有怪物的次要统计数据,所以应用了一个简略的箱型图。
只有力量和体质与彼此没有显着差别。所有其余统计数据在平均值上均具备统计学上的显着差别。
这里可能和咱们的认知相似一个人的强健是力量和属性的合体,基本上不会呈现,力量很大然而体质很差的人。
怪物的免疫和抗性与挑战等级之间显著不足相关性。有这么多的较弱的怪物都有免疫属性这个剖析也让我更理解了怪物。
怪物类型,环境,大小和排列
下面曾经将挑战等级与统计数据进行了比拟,能够确定这将是模型的输出,然而其余类型的统计数据:类型,环境,大小和排列形式又是什么样呢?它们对统计有任何影响吗?他们能够用来帮忙改善咱们的预测吗?
雷达图表是我始终以来最喜爱的图表。他是我在《宠物小精灵》中发现的一个十分好的办法,通过这些图表将分类数据与统计数据进行比拟会是一个很好的办法!
下面图中能够看到环境对怪物统计数据的影响很小,我感到十分诧异/悲观。然而咱们能够在环境图(下)中看到两个十分不同的总体形态:一个具备高强健的,然而其余属性低,和一个其余比拟全面但智力比拟低的形态。这能够算是个好消息,因为它表明环境与统计数据之间存在一些关系。
咱们还留神到智力的平均数都比拟低。这可能是因为许多“野兽"并不聪明。
创立一个模型来预测怪物数据
既然我曾经理解了咱们的输出和输入的关系,那么我能够开始创立模型了。基于问题,咱们须要的后果是数值,所以回归模型是最好的抉择。
在尝试了Scikit-Learn的几种根本算法(线性,K-Nearest,决策树,随机森林)之后。我没有失去令人满意后果,所以我决定抉择一种更弱小的算法,该算法能够从较弱的输出中学习,并应用相干的输入来构建更好的模型。
咱们应用神经网络构建一个三层的mlp
进行了大概十次运行的微调,包含学习率,批大小,损失函数等。最终取得了85.64%的测试准确性,均方根误差为59.7。这是一个还不错的模型了,为了让用户应用就须要一个前端的界面获取用户的输出数据。我须要plotly 的Dash是很好的工具,成果如下:
总结
在本文中,咱们查看了所有怪物统计数据,以及它们与CR以及彼此之间的关系水平。而后应用Keras API和TensorFlow构建和训练。,创立了一个85.6%的准确模型和一个Dash UI进行公布。应用AWS Lightsail部署。
https://avoid.overfit.cn/post/0f490c24d6b54648b20e4cb421020881
作者:Andrew Ingalls