Files
whale-town-end/config/zulip

Zulip配置目录

本目录包含Zulip集成系统的配置文件。

文件说明

map-config.json

地图映射配置文件定义游戏地图到Zulip Stream/Topic的映射关系。

配置结构

{
  "version": "1.0.0",
  "lastModified": "2025-12-25T00:00:00.000Z",
  "description": "配置描述",
  "maps": [
    {
      "mapId": "地图唯一标识",
      "mapName": "地图显示名称",
      "zulipStream": "对应的Zulip Stream名称",
      "interactionObjects": [
        {
          "objectId": "交互对象唯一标识",
          "objectName": "交互对象显示名称",
          "zulipTopic": "对应的Zulip Topic名称",
          "position": { "x": 100, "y": 150 }
        }
      ]
    }
  ]
}

字段说明

字段 类型 必填 说明
version string 配置版本号
lastModified string 最后修改时间ISO 8601格式
description string 配置描述
maps array 地图配置数组
地图配置 (MapConfig)
字段 类型 必填 说明
mapId string 地图唯一标识,如 "novice_village"
mapName string 地图显示名称,如 "新手村"
zulipStream string 对应的Zulip Stream名称
interactionObjects array 交互对象配置数组
交互对象配置 (InteractionObject)
字段 类型 必填 说明
objectId string 交互对象唯一标识
objectName string 交互对象显示名称
zulipTopic string 对应的Zulip Topic名称
position object 对象在地图中的位置
position.x number X坐标
position.y number Y坐标

配置示例

新手村配置

{
  "mapId": "novice_village",
  "mapName": "新手村",
  "zulipStream": "Novice Village",
  "interactionObjects": [
    {
      "objectId": "notice_board",
      "objectName": "公告板",
      "zulipTopic": "Notice Board",
      "position": { "x": 100, "y": 150 }
    },
    {
      "objectId": "village_well",
      "objectName": "村井",
      "zulipTopic": "Village Well",
      "position": { "x": 200, "y": 200 }
    }
  ]
}

酒馆配置

{
  "mapId": "tavern",
  "mapName": "酒馆",
  "zulipStream": "Tavern",
  "interactionObjects": [
    {
      "objectId": "bar_counter",
      "objectName": "吧台",
      "zulipTopic": "Bar Counter",
      "position": { "x": 150, "y": 100 }
    },
    {
      "objectId": "fireplace",
      "objectName": "壁炉",
      "zulipTopic": "Fireplace Chat",
      "position": { "x": 300, "y": 200 }
    }
  ]
}

热重载

配置文件支持热重载,修改后无需重启服务即可生效。

启用配置监听

在代码中调用:

configManagerService.enableConfigWatcher();

手动重载配置

await configManagerService.reloadConfig();

验证配置

系统启动时会自动验证配置文件的有效性。验证规则包括:

  1. mapId必须是非空字符串
  2. mapName必须是非空字符串
  3. zulipStream必须是非空字符串
  4. interactionObjects必须是数组
  5. 每个交互对象必须有有效的objectId、objectName、zulipTopic和position
  6. position.x和position.y必须是有效数字

注意事项

  1. Stream名称: Zulip Stream名称区分大小写请确保与Zulip服务器上的Stream名称完全匹配
  2. Topic名称: Topic名称同样区分大小写
  3. 位置坐标: 位置坐标用于空间过滤,确保与游戏客户端的坐标系统一致
  4. 唯一性: mapId和objectId在各自范围内必须唯一