创作者视角 7 · NPC 是一种讲故事的方式
这一篇写在第七部之前。
NPC 在多人游戏里通常被当作「自动玩家」:占据一个角色位,让玩家有打的目标,让世界看起来不空。
往上抬一层看,NPC 在 VRChat 世界里同时承担四类工作:
- 空间感:一个空房间和一个有 NPC 在角落看书的房间,给人的感觉完全不同。NPC 是空间的「家具」之一。
- 存在感:单人进入世界时,NPC 让玩家不孤独。多人进入时,NPC 让世界有第三方的存在。
- 节奏感:合作防守里的敌人波次决定了游戏的节奏。先来一波小怪让玩家热身,再来一波精英给压力,最后 boss 战。这种节奏由 NPC 的出场决定。
- 叙事感:会说话的 NPC、会触发剧情的 NPC、会指引下一步的 NPC,给世界提供故事线索。玩家不需要看长篇文字也能理解发生了什么。
第七部讲 NPC 的三种架构(Local-only 装饰、Owner 驱动、分片 Owner),讲行为树在 UdonSharp 里的替代写法,讲对象池和迟入恢复。这些是技术实现。
技术决定之前,先回到 NPC 的功能:
设计 NPC 之前先问:这个 NPC 是为空间感来的,还是为节奏感来的,还是为叙事感来的?不同目的,实现方式完全不同。
为空间感的 NPC 适合 Local-only:每个客户端各自播放,不用同步。 为节奏感的 NPC 适合 Owner 驱动:所有玩家看到同一波怪在同一时刻出现。 为叙事感的 NPC 可能需要 GameState 触发:剧情节点在所有玩家身上同时发生。
挑实现之前先挑功能。挑功能之前先挑这个 NPC 在世界里的角色。