lal*_*ala 3 artificial-intelligence behavior-tree
我想让游戏中的角色执行部分随机但也受首选项影响的动作.例如,如果一个角色感到愤怒,他们就会比说笑话更有可能大喊大叫.所以我正在考虑如何确定角色将采取的行动.以下是我的想法.
解决方案#1:迭代所有可能的操作.对于每个操作执行随机滚动,然后将首选项值添加到该随机数.具有最高值的动作是角色所采用的动作.
解决方案#2:为一个动作分配一系列数字,更可能的动作范围更广.因此,如果随机滚动从1-5返回,该角色将讲述一个笑话.如果它返回6-75,他们会大叫.等等.
解决方案#3:对所有操作进行分组并创建分支树.他们会采取友好行动还是敌对行动?随机滚动(添加了偏好值)表示敌意.他们会进行身体攻击还是言语?随机翻卷说话.继续行,直到你到达行动.
解决方案#1是最简单的,但效率不高.我认为解决方案#3有点复杂,但效率不高吗?
有没有人对此特定问题有任何了解?#3是最好的解决方案吗?有更好的解决方案吗?
#1和#2很简单,但可能无法很好地扩展到更复杂的行为.行为树(#3)似乎是当今许多游戏中的首选系统.您可以在AiGameDev.com上找到一些演示文稿和说明,例如http://aigamedev.com/open/coverage/paris09-report/#session3和http://aigamedev.com/open/coverage/gdc10-slides-highlights/ #session2(来自Crytek的第一个非常好)
从CPU使用的角度来看,你可能不需要担心"效率",因为这不太可能成为游戏中的主要瓶颈.减少调整行为所需的程序员/设计人员时间更为重要.