上一篇讲的NPC的生理需求推动NPC基本能动性,让NPC能够自主的动起来,这也只是比传统的mud游戏有了一点点进步,并没有从根本上让NPC变得更加真实,更加的灵动。
想要NPC更鲜活,Npc必须有自己的主观意识,虽然在现阶段以我的能力实现起来困难重重,但是我还是想试一试。
这算法在我看来应该非常复杂:内在的年龄,阅历,情商,性格,好恶,实力等因素,配合外在的或临时因素,如心情,任务,身份,环境,形势,人物关系等等,在特定的触发条件下,辅助NPC做出决策,通过算法直接模拟出ai部分。
以上算法的优势是运算速度快,不需要机器学习的过程;缺点也很明显,因为算法简单,而且不能成长及变化,这样的NPC极容易被人套路。
暂时能想到解决的办法就是,可通过内在可成长因素来逐渐调节Npc,当然最主要的还是不断的优化算法。
年龄、阅历、情商属于数值型元素,性格、好恶等属于标签型元素。
各种元素之间都有一定的作用关系,比如年龄因素可以确定阅历的大致范围,而阅历的水平又基本上可以确定情商的范围;在情商的辅助下,可以更好的生成好恶及性格,比如情商超高的人就会减少出现缺陷性格的机会。
在配合大基数的随机调节因子,可以随机给NPC贴近于合理又差异较大基本设定。
依靠这些比较关键的人物设定作为算法元素,基本上可以实现Npc差异化决策,比如说当NPC在执行战斗任务的时候,阅历可以决定是否随时打开反隐形反侦察,是否在关键道路上设置阵法;性格贪婪,自私,无原则,胆大妄为有可能做出杀死任务相关NPC,以便达到独占任务奖励的目的。情商决定当完成上述目的时自身实力不够,是否邀请其他npc或者玩家一同参与,并就利益问题讨价还价。
说起来简单,当遇到每一次决策的时候,都需要独特的算法支撑。我估摸着能够支撑一个NPC活出个人样来,至少要超过200个心里决策算法。
且行且看吧!