搜索

地牢类型与程序化生成

Classic、Procedural、Continuous、房间、连接点、门与两种布局。

Classic:固定整图

classic 会把一张完整模板作为副本来源,适合剧情关卡、机关解谜、Boss 场和手工地图。

优点:

  • 设计方式直观;
  • 坐标固定,触发器容易理解;
  • 适合先完成流程闭环。

代价:

  • 模板越大,复制、保存和清理时间越长;
  • 多并发实例需要更多磁盘、区块处理和世界池容量;
  • 修改地形后应重新做完整实例测试。

Procedural:程序化房间

procedural 由房间模板、连接点、门、白名单和布局算法组合。编辑时使用:

/lidungeon roomtool

房间工具只在程序化编辑实例中可用。房间需要有清晰边界、连接点方向和可旋转结构;门名与房间触发器/功能引用必须一致。

布局模式

布局 行为
BRANCHING 先生成主干 TRUNK,再按深度和次数生成命名分支
MINECRAFTY 类似要塞/下界堡垒,从连接点不断尝试拼接房间

通用生成配置

maps/<地牢>/generator.yml 主要字段:

字段 用途
Layout BRANCHING 或 MINECRAFTY
General.SurroundingBlock 包围房间的 Bukkit 方块;AIR 表示不包围
General.MinRooms / MaxRooms MINECRAFTY 房间数范围
General.StrictRoomCount 是否必须达到最少房间数

生成计算受全局 Generator.Timeout 限制,默认 5 秒。超时不代表服务器崩溃,而是当前房间/连接规则无法在时间内得到有效布局。

BRANCHING 主干与分支

BranchSettings.TRUNK 必须存在且不能改名。每个分支支持:

  • Rooms:可用房间白名单,空列表表示全部;
  • EndRooms:可作为终点的房间;
  • Straightness:偏向直线的权重,范围 0 到 1;
  • MinRooms / MaxRooms:房间数范围;
  • StrictRoomCount:是否必须达到最少房间数;
  • Depth:分支允许出现的主干深度;
  • Occurrences:分支生成次数范围;
  • StrictBranchCount:是否强制达到出现次数。

房间生成失败时,先降低 MinRooms、关闭严格数量,再检查连接方向和包围盒冲突,不要一开始就无限调高超时。

Continuous:持续型实例

continuous 面向长期开启、玩家陆续进入的玩法。重点配置:

  • General.MaxPlayers:实例最大玩家数;
  • IgnoreParties: true:每名玩家独立进入,不把整个队伍带入;
  • General.MaxInstances:控制同一地牢并发实例上限;
  • CleanupDelay:无人后何时清理。

持续型副本应测试玩家在不同时刻加入、退出、断线重连以及满员后创建新实例的行为。

房间门与房间触发器

程序化模式额外提供:

  • “房间门控制器”功能:按门名开关门;
  • “房间门开关”触发器:监听门打开或关闭;
  • “进入/离开房间”触发器:按玩家进入、离开及原因筛选触发;
  • /lidungeon testdoor <门>:测试指定门;
  • /lidungeon testalldoors:测试当前房间全部有效门。

门名是逻辑引用,不是显示文本。改名后要同步检查所有触发器、功能和 MythicMobs 机制。

程序化地牢验收

至少连续生成 10 次,并记录:

  • 是否每次都达到最小房间数;
  • 是否有封死连接、悬空入口、重叠房间;
  • 起点和终点是否可达;
  • 房门是否关联正确;
  • 房间旋转后,功能坐标和朝向是否正确;
  • save force 后重启,房间模板是否保留;
  • Folia 下结构投放时是否出现跨区域告警或超时。