[2026-02-11 官方博客] NPC 技术概述

  • 购买游戏时,在支付界面使用创作者代码 HytaleCN 以表示对中文社区的支持,这对我们来说十分重要,感谢您的支持!(点击查看示意图
原文链接
https://hytale.com/news/2026/2/npc-technical-rundown
作者
Joe
译者
ETW_Zero
转载许可
允许规范转载。转载须注明原文链接、作者、译者、所属平台(HytaleCN)。
blog_cover_3d990bbfdf6759d3efb601928e781c8f_cover.png

大家好!本文将简要介绍 Hytale 的 NPC 框架、其当前状态、表现形式以及我们未来的发展方向。部分内容可能涉及较多技术细节,因此您可以根据兴趣选择性阅读或快速浏览不感兴趣的部分。与 NPC 相关的系统内容庞杂,所以不要期望本文会面面俱到地介绍!

当前进展


目前,NPC 框架已支持跨多个系统的广泛行为,所有行为均可通过数据驱动的资产文件进行配置。您无需掌握任何编程语言即可完成配置——即便最复杂的 NPC 也几乎完全由数据驱动。

我们通过多个行为相关系统实现这一点,但本文将重点介绍两个核心系统:"角色(Role)"(NPC 行为核心)与"战斗行为评估器"。

文档与教程


若您希望深入了解 NPC,我们的合作伙伴 hytalemodding 已提供大量优质文档,包括我们提供的 生成式 NPC 文档 及书面 教程

配合此教程,我们制作了六集系列视频,详细解析部分内容;建议结合使用以获得最佳体验:


角色


每个 NPC 都拥有一个角色,它定义了 NPC 的通用行为及其对世界内不同刺激的响应方式。只需更改角色即可完全改变 NPC 的行为集。我们提供大量预设模板,支持自定义数值,可快速高效地创建新 NPC。

除行为本身外,角色还规定了 NPC 的移动方式、携带物品、外观等等。

在技术层面,该行为通过"指令列表"概念实现。这与决策树或行为树差异不大,但简化了部分语义。每条指令由"传感器"(查询游戏状态以决定该指令是否可执行的组件)以及该指令被选中时 NPC 需执行的动作或移动构成。此外,动作与移动可替换为嵌套指令列表,从而构建更复杂的行为模式。

若您熟悉行为树,可能会疑问其实际差异——传感器类似于装饰节点,且整体仍呈树状结构。关键区别在于我们遍历指令列表的语义规则。行为树可能因节点类型不同而遵循不同语义,而我们始终采用 fallback selector node (回退选择节点)的语义。每条指令按顺序评估,一旦匹配即执行。除非指令包含特定标志,否则列表中的后续指令将不再被评估。这确保了无论树结构多大、多深,NPC 的逻辑流始终清晰可循。

尽管所有独立元素类型(传感器、动作、移动等)均以 Java 编写,但指令列表完全由 JSON 构建。目前我们已拥有超过150种可组合构建行为的元素类型,并建立了框架,便于模组制作者通过 Java 添加更多类型。部分元素尚未完善,但我们正积极迭代并尽可能增加新元素!

至于核心设计理念,则是让玩家能在多个层级与 NPC 框架交互。无论您是初次接触模组与 NPC 设计的新手,还是能构建复杂行为的资深开发者,我们都希望确保每个人都能实现自己的创意。

以下示例展示了如何将“绵羊”角色从"Template_Animal_Neutral"启用的家畜行为,通过"Template_Predator"转变为具有攻击性的行为。

1.png

2.png


它从对你友好变为主动攻击。

<这里有两个视频尚未搬运>

通过我们创建的基础模板,您甚至可以为其配备随机武器,随时打造"虎胆羊威"模组。

3.png

战斗行为评估器



尽管指令列表已赋予设计者极大的 NPC 配置与战斗行为实现灵活性,但若需塑造一个不仅限于基础攻击、且需智能决策何时使用特定技能的角色,配置过程仍会迅速变得繁琐。

战斗行为评估器正是为解决此需求而生。它作为 NPC 核心行为的辅助框架,能基于 NPC 自身状态、周围世界状态及敌友状态,做出实时智能决策。每个可能的攻击(或其他战斗行为)均被赋予一组条件,以指定其最佳使用时机——例如:生命值过低时、敌人靠近时、玩家试图绕后时。系统评估这些条件后,对各行为进行权重对比,最终确定 NPC 的行动方针。

这种决策方式为 NPC 引入了"模糊性",使战斗交互更富趣味性,且配置更为精简。其劣势在于学习曲线较陡峭,且 NPC 的行为未必总是符合预期!此外,该方案的性能表现亦不占优,但我们希望后续迭代能对此加以优化。

例如,Skeleton Praetorian(骷髅禁卫军)能智能抉择不同技能:格挡、低生命值时召唤、冲锋,以及基础攻击。

以下为召唤技能条件配置的部分代码片段:

4.png

此为上述决策过程的视频示例:

<这里有一个视频尚未搬运>

实际检验


上面的内容听起来是否已相当成熟?或许,读者们甚至会认为这已达到可发布水平?

嗯……并非如此。目前仍存在大量粗糙之处、功能缺失及亟需大幅改进的领域。正如我们阐述了系统的现有能力,同样有必要坦诚讨论尚未达标的重大缺陷。

能力越大,对配套工具的需求也越大。我们在此方面远未达标。尽管已有可视化编辑与调试的计划,但目前多数 NPC 配置仍需直接通过文本编辑器操作 JSON 文件。此法虽可行,但体验欠佳。尽管我们提供了多种 NPC 异常行为调试途径,但它们均不直观,多数情况下仍需翻阅冗长的日志文件。

我们曾提及战斗行为评估器的学习曲线,但这一挑战几乎贯穿 NPC 开发的每个环节。我们期望为 NPC 模组制作提供更简易流畅的入门体验,但目前仅能提供有限数量的模板作为范例,辅以现有元素文档与基础教程。

同时,大量关键功能仍待完善。NPC 在战斗中的站位并不理想;缺乏规避障碍或集群移动的能力;飞行 NPC 虽能起飞与降落,但游泳的 NPC 无法离水,反之亦然。要实现我们构想的游戏品质,需要添加的功能清单远不止于此。

性能隐患同样不容忽视。尽管我们已能承载较大规模的 NPC 数量,但在性能优化方面仍有大量工作,尤其是寻路系统。我们尽可能避免持续启用寻路器,否则性能将显著下降!

技术债务亦亟待解决:受限于非 NPC 系统的约束需重构,NPC 无法主动破坏除抛射物爆炸外的方块(尽管它们能够放置方块!);NPC 物理系统需彻底重制,以实现与玩家系统的统一规范。要将一切调整至理想状态,前路漫漫——这还未涉及生成机制!

漏洞,漏洞无处不在



许多社区成员指出已发布的实机演示中存在大量漏洞。以我们当前的开发速度,多数演示内容已过时,其中最严重的漏洞已被修复!然而,我仍希望花些篇幅深入探讨寻路问题、寻路问题的挑战,及其对正式发布的潜在影响。

寻路是一个庞大而复杂的课题——其复杂度足以令常规游戏开发者举步维艰。当加入一个可完全修改的、程序生成的方块化世界后,挑战进一步升级,因为我们无法再依赖传统游戏利用已知地形优化性能的技巧。

这导致我们的寻路系统目前效率低下。虽未引发显著性能问题,但其效率不足以支持所有 NPC 持续启用寻路功能,且其现有能力受到严格限制。例如,cave raptors(洞穴迅猛龙,暂译)无法跨越地面的间隙来追击玩家,正是此因。我们无法预先生成世界中的"跳跃点",因为世界可能随时变化,而 NPC 每增加一段跳跃距离,都将使每次搜索的成本大幅攀升。

我们预期在抢先体验发布前难以解决此问题,但我们致力于全面升级寻路系统,并已着手研发新方案——若验证可行,有望攻克多数难题。

所以,下一步计划?



工具开发是我们的首要任务。若想为模组制作者提供有力支持,必须赋予他们能真正享受 NPC 创作过程的工具!初期虽无法提供全套调试工具,但我们会尽可能整合现有资源。

同时,我们需在解决技术债务的同时,攻克寻路与移动系统的缺陷,避免玩家在复杂环境中对抗多个 NPC 时出现性能瓶颈。即便是当前阶段,我们仍有大量优化空间,以确保战斗体验的流畅性。

添加更多模板也将为世界注入生机,为 Orbis(奥比斯)众多物种的文化量身定制专属行为。这些模板不仅旨在丰富世界,更将为寻求创作复杂 NPC 的模组制作者提供灵感与范例——如果行为适配,就可以直接使用!

所有这些努力,最终将指向合适的 BOSS 战——这类战斗将把我们的所有 PvE 系统推向极限。要实现这一目标,尚需大量工作,远超本文所列范围。但我们正步步为营,逐一攻克。假以时日,必能完成!

抢先预览:调试指令



本文原计划于抢先体验发布前发表。此后,我们已投入大量精力,为模组制作者提供更加便于入门的 NPC 自定义功能。尽管可视化编辑器与深度调试功能尚未就绪,但我们已新增多项可视化功能,助您更直观地理解 NPC 行为机制(我们也借此修复了自身大量漏洞!)。部分功能仍在开发中,以下为开发中内容的抢先预览,即将在未来版本中推出。

这些可视化功能可通过为单个 NPC 设置特定调试标志启用。操作方式为:在游戏内聊天控制台输入 /npc debug set flag,或在 NPC 角色的 Debug 属性中以逗号分隔列表形式添加标志。运行 /npc debug presets 可查看所有可用标志及预设标志组,以下为最实用的可视化标志详解。

/npc debug set VisAiming

5.png

用于确定 NPC 的实际瞄准目标。适用于逻辑中包含瞄准指令的 NPC。

/npc debug set VisMarkedTargets

6.png

可视化 NPC 当前锁定的所有标记目标。在我们的大多数标准模板中,NPC 拥有单一 LockedTarget,通常是其当前交战实体。此功能有助于理解 NPC 如何及何时转移焦点,以及在群体中精确识别其当前关注目标。

/npc debug set VisSensorRanges

7.png

8.png

将所有当前启用的生物传感器范围以环形和扇形可视化,同时显示范围内哪些实体被哪些传感器匹配。基于传感器在我们 NPC 中的常规用法,此功能可快速呈现 NPC 的"感知能力"概览。请注意,尽管显示为扇形与环形,技术实现上它们是受高度条件约束的球体与锥体。

第一张截图显示睡眠状态下的熊,仅有一个传感器激活。第二张截图中,熊启用了听觉、视觉及绝对探测范围。尽管绵羊处于视觉半径探测范围内(带有目标标记),但它们位于视野锥体之外。绵羊族群仍安然无恙!

/npc debug set VisLeashPosition

9.png

可视化 NPC 当前的拴绳位置。

/npc debug set VisFlock

10.png

可视化与此 NPC 关联的集群(NPC 群体)。此显示内容包括标记集群首领及当前所有集群成员。