《全境封锁》敌人AI设计思路分析
每个阵营都会随着游戏的进行按我所列出的顺序而改变难度。鉴于有如此多的NPC原型,设计者很容易通过迭代的方式进行难度管理,并且足以在整个NPC群体中进行普及。 ![]() 为了实现这一目标,Massive构建了一个AI配置系统,可以修改NPC的许多公开属性。这使得他们对玩家构成的威胁变得更加可控。这是其中的八个属性:
构建的配置文件可以在特定NPC类型及NPC所在的派系中保持一致。例如: Rioters-他们是玩家在游戏中会遇到的第一个派系,其仅限只用“Dumb“配置文件,其中所有属性都相当低。 当然,重型、支持型、炮塔都拥有专用的配置文件,适用于所有派系一致的原型。与此同时,Last Man Battalion拥有自己独特的精英配置:这使得他们对玩家的威胁远远超过其他所有人。 对AI行为产生影响的最后一个因素是他在游戏本身中的角色定位。 角色的范围从常规的敌人到退伍军人、精英,最后则是命名敌人,他们将作为最高优先级的目标。随着NPC角色定位的提高,他们的基础属性也会受到影响,例如武器伤害、护甲和设计准确性,精英和命名NPC可以获得特殊的武器和模型。 他们甚至可以获得定制的激光瞄具,这些瞄具对他们的游戏能力几乎没有任何影响,但这会让玩家更紧张。 小结 这套体系使全境封锁可以建立一个严格且多样化的非玩家角色集合,帮助其还原一个末世的曼哈顿。虽然这一系统本质上使用着相同的核心AI架构,但使用原型、派系、配置文件与角色排名不仅可以实现敌人行为,还可以为全球玩玩家带来挑战。 但其中有一个更大的问题:如何在一个为世界各地玩家在线运行的游戏中保持这些系统的性能呢?自发售一来,全境封锁已经拥有了至少1000万名玩家,并且拥有超过100万名同时在线玩家。这就需要在数千个单独的游戏实例中创建、维护与控制许多的非玩家角色。 在本系列文章的第二部分中,我们将看看Massive Entertainment如何解决这个问题并进行在线整合,确保游戏尽可能顺利运行而制定的设计决策及对AI系统提出的问题与限制。 此外,我们还将介绍为在线实例中测试AI行为而构建的工具,以及如何使用AI工具在测试服务器上验证故事任务的一致性与稳定性。 在上一个部分中,我们研究了游戏的整体结构和它的核心敌人AI。当玩家们在纽约的街道上漫步时,他们面临着各种各样的人工智能单位,无论是敌对的还是友善的。全境封锁采用庞大的行为树去实现并处理决策,其中包括属性管理系统、监督角色派别以及技能档案和敌人级别等。 ![]() 但是这些都无法解决这个游戏面临的更大更根本的问题:与我迄今为止讨论的人工智能方面的游戏问题不同,全境封锁是一款在线游戏,需要玩家连接游戏服务器才能够游玩。 这就要求人工智能的执行方式必须使所有的在线玩家拥有相同的游戏体验:在一个与其它玩家共享的世界中,使用自己的设备与相同的敌人作战。 因此,在这第二部分中,我们将探讨如何建立非玩家角色的在线基础架构、如何创建和管理这些角色,以使所有玩家获得相同的体验。同时也会讲一讲如何利用人工智能角色在开发期间帮助测试并完善游戏中的新内容。 part 2 AI如何在线工作 如果你不熟悉在线游戏是如何运行的,这个运作机制我们称之为客户端-服务器模式。每个玩家他们从他们自己的游戏副本(PC或者主机,即客户端)登陆到托管游戏的服务器。 这个服务器承载这游戏发生的事件:每天或每周发生的种种挑战、正在发生的世界事件和游戏中的经济情况等。 这就是我们在执行游戏时需要考虑的:一个小队中的玩家和他的队友们的经历不该有任何差异。如果你被敌人近距离攻击,但你的朋友看到的并不是这样,这其实非常可怕。 为了解决这个问题,游戏中所有的人工个系统都将运行在服务器端。我在第1部分当中提到的行为树人工智能系统中没有一个是在客户端运行的,这一切都发生在服务器上。这确保了所有在线玩家的一致性。 行为执行 但这就带来了一个问题,行为树只代表了游戏中人工智能的决策,但玩家需要的是在游戏中看到这一切决策所带来的表现,因此需要游戏中的各种角色在服务器上去执行行为树所做的决策。 同时,为了减少玩家和服务器之间传递的数据量,使人工智能能够顺利执行,所有角色的动画都将全部在客户端进行处理,服务器上的人工智能系统对于指定角色的动画如何工作的理解十分有限,因此它只需要知道要执行的是哪个角色,而客户端会最终处理所有这些问题。 ![]() 这种做法解决了一个问题,使得客户端和服务器之间发送的数据保持在最小值,但却在NPC移动方面呈现出了一个新问题。 全境封锁中的所有非玩家角色的使用一种更为智能的角色动画移动过程,即以动画来驱动移动。这使得NPC能够更流畅地移动并且他们的动画将更符合运动学。 但是,如果服务器不去监视移动的执行,它如何知道这些角色是否移动到了正确的位置呢?为了解决这一问题,服务器上的运动系统会为要执行移动的角色计算一个运动计划,然后在客户端上,它必须在角色的动画中寻找与原始计划匹配的可用动画来创建一个运动路径。 这听起来好像很复杂,但它其实将运算与数据的消耗保持在一个非常小的范围内。 ![]() 这种做法也会产生一个问题,就是某些信息或事件将在客户端和服务器上同时执行,例如NPC部署炮塔、投掷手榴弹或者进行治疗行为等。 (编辑:二游网_173173游戏网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |