World Maps:搭建地图、编写内容与移动
当前兼容性: 本指南对应 World Maps 1.3.1,它支持 Marinara Engine 2.3.5 到 3.x,适用于 Roleplay 和 Game 聊天。Engine 2.4.1 增加了移动流清理,便携导入后也会立即刷新 Lorebooks。Engine 2.3.5 到 2.4.0 仍然可用,但导入后需要手动刷新 Lorebooks。
World Maps 给你的故事提供一张地图,上面的地点可以层层嵌套,比如一段海岸、一座城镇、一个城区和一家旅店。Marinara 始终知道队伍在哪里,AI 会据此保持前后一致。想试试的话:在 Agent Organizer(智能体管理器) 里安装 World Maps,重启,然后按快速上手操作。
世界不再只是一段自由文本的位置,而是一组层层嵌套的地点:
The Shattered Coast
└── Brinewatch
├── Harbor District
│ ├── Tideglass Inn
│ └── Quest Hall
└── Old SewersMarinara 会在这套层级结构里维护一个权威的当前位置。当前的面包屑路径、精确地点的详细信息、附近的可去之处,以及符合条件的关联世界设定,都可以为下一条回复提供依据。地图也能跟随最新一条用户消息里明确写出的移动或发现。可见的 AI 叙述可以描写结果,但它自己不能移动地图,也不能凭空造出地点。
地图可以每个聊天各自独立,也可以关联到一个账号名下的共享世界。模板生成的是干净的副本,之后各走各的。共享世界则保留一份权威的层级结构和配图,而每个关联的聊天仍然各自保有自己的当前位置、移动历史、快照和 Game 绑定。
功能总览
World Maps 1.3.1 为你提供:
- 嵌套的区域、聚落、地点、建筑、楼层和房间,并配有面包屑路径和一个权威的当前故事位置;
- 列表视图、坐标地图视图和有序图层视图,父子层级移动、直连通道,以及跨多个回合的路线;
- 对你最新一条消息中所写移动和发现的校验;
- 账号级的模板和共享世界,可以跨 Roleplay 和 Game 聊天关联,每个聊天各自的草稿都要经你过目;
- 由 AI 辅助生成的地图草稿和扩展、公开描述、仅模型可见的私密备注,以及精确地点绑定的世界设定;
- 便携的导入和导出,可选携带关联的世界设定和配图;
- 地点的参考图和背景图,缺失的配图可以在过目后批量生成;以及
- 用于 AI 建图和运行时地点插入的全局提示词库。
可去的目的地就在模型的上下文里。CYOA 选项开启时,模型可以把当前地点的子地点或相连地点作为下一步的选项提出来。具体给出哪些选项仍然由模型自己生成。
选对地图的关联方式
资源库里有两种可复用的账号级资源,而每个聊天都保有自己运行时的位置和历史。资源的显示名不代表身份;如果新保存的资源会和已有资源重名,World Maps 1.3.1 会加上 (copy) 或一个数字。
| 资源或状态 | 归谁所有 | 什么时候选它 | 之后的编辑会影响什么 |
| 独立聊天地图 | 某一个 Roleplay 或 Game 聊天 | 这个故事应该有自己的一套世界 | 只影响那个聊天 |
| 独立模板 | 你的账号 | 想要一个可以反复使用的起点 | 只影响新副本;已有聊天不会更新 |
| 权威共享世界 | 你的账号 | 多个聊天应该共用一套持续维护的层级结构 | 影响所有关联聊天读到的共享定义 |
| 关联聊天的草稿 | 发布之前归那个关联聊天 | 某个关联的故事里发现或改动了可能该进共享世界的内容 | 在你选择 Publish 之前不影响别的聊天 |
| 解除关联后的独立副本 | 原先关联过的那个聊天 | 这个故事想保留当前地图,但不再接收共享世界的改动 | 只影响这个已解除关联的聊天 |
复制不等于关联。Use template、Add to chat 和 Independent copy 生成的是各自独立的地图。Game 设置流程里的 Use shared world 和资源库里的 Link to chat 才是把聊天挂到权威共享世界上。
快速上手
- 打开 Agents(智能体),点击 Agent Organizer,安装 World Maps。出现提示时重启 Marinara,因为这个包包含服务器端代码。
- 打开一个 Roleplay 或 Game 聊天。
- 打开 Agents → World Maps,或者在你的 Engine 提供 World Maps 地球仪按钮时点它,然后为这个聊天启用它。也可以在 Chat Settings → Agents(聊天设置 → 智能体) 里启用。
- 用 Use template、Create with AI 或 Build manually 创建地图。已有的聊天也可以导入地图文件。
- 检查工作中的层级结构,选好起始地点,开启 Enabled,然后点击 Save(保存)。
- 聊天过程中打开 Story map。选一个能到达的目的地再发下一回合,或者直接在消息里写明队伍的移动,让 Maps 校验并落实这次抵达。
- 可选:给地点指定 Gallery 里的图片,或者用 Location artwork 集中查看并生成缺失的图片。
套用模板、AI 草稿或导入的文件,改动的只是编辑器里的工作副本。在层级结构启用并保存之前,回复不会受影响。
如果没有成功,请看 Chat Settings 里找不到 World Maps。
安装并启用这个包
World Maps 页面会显示已安装的版本和就绪状态、账号级的世界地图资源库、它当前指向的聊天,以及那个聊天的地图状态。装好这个包只是让它可用,并不会在每个聊天里都启用它。
Roleplay
- 打开 Roleplay 聊天,点击 Chat Settings。
- 开启 Enable Agents。
- 在 Tracker Agents 下面启用 World Maps。
- 打开 Edit world map 或 World map library。在支持的 Engine 上,桌面端顶栏的地球仪按钮打开的是同一个资源库。手机端则用 Chats 抽屉里的地球仪按钮。
不管从哪里打开,资源库的行为都一样。要一份独立的模板副本就用 Add to chat,要一个长期共享的世界就用 Link to chat。
Game
在 Game 设置流程中选择 World Maps,然后从它的几条搭建路线里挑一条:
- Create with AI 会先生成一份层级结构供你过目。
- Use template 会在 Game 创建之前打开世界资源库。
- Build manually 从一个可编辑的空层级结构开始。
- From the world(来自世界) 会在 Game 创建世界时出现(见创建世界)。它把那个世界铺成地图:世界的地区、聚落和地点,以及它们之间的通路和路程时间。保存之前你可以先审查一遍。它不需要 AI 生成,地图上的地点就是世界里的地点。游玩时两者保持同步。Game Master 和市场使用地图上队伍所在的地点。Game Master 说出某个世界地点时,地图会把队伍移到那里。World Maps 1.6.0 或更高版本会走最短路线。更早的版本只移动一步:移到里面的某个地点、外围的地点,或者有通路相连的地点。
选了 Use template 之后,选择器会先列 Shared worlds,再列 Independent templates:
- Use shared world 把新建的 Game 关联到那个账号名下的权威世界。这个 Game 依然保有自己的当前位置、历史、快照、绑定和尚未发布的发现。
- Use template 会创建一份归这个 Game 所有的工作副本供你过目,绝不会改动账号里的模板。
所选资源里的地点会成为层级化的起始世界。系统不会拿一张后备的普通 Game 地图顶上。
也可以之后从 Chat Settings → Agents 给已有的 Game 加上 World Maps。
创建和复用地图模板
打开 World Maps → Open world library。模板归你的账号所有,而不属于某一个聊天,所以适合做可复用的同人世界、战役设定、地下城和城市。
在资源库里,你可以手动创建模板,或者用 Create with AI 创建;导入 .hierarchical-map.json 文件;搜索、查看、编辑、导出或删除模板;在打开的 Roleplay 或 Game 聊天里使用 Add to chat;或者在 Game 设置流程中选择 Use template。
每次套用都会生成一份独立的工作副本。之后改模板不会影响已经复制过它的聊天,聊天里的改动也不会回传到模板。
模板保留的是账号级 Global Gallery 的配图引用。从聊天里使用 Save as template 时,Maps 会把引用到的聊天图片提升到 Global Gallery;如果已经存在一张完全相同的共享图片,就直接复用。共享的只有图片。每份套用出来的地图仍然是独立的副本。
把多个聊天关联到同一个共享世界
当多个 Roleplay 或 Game 聊天应该读同一套层级结构时,用 World map library 里的 Shared worlds。可以新建一个空的共享世界、导入一个、用 Make shared 把模板提升上来,也可以打开一份已保存的聊天地图再选 Make shared。最后这种做法会把它引用的聊天图片提升到 Global Gallery,创建共享世界,并把原来的聊天关联过去。
选择 Link to chat,挂上的是资源库目标聊天状态里写明的那个聊天。当前位置,以及战役历史里已经用到的所有地点 ID,都必须在共享世界里存在。否则就改用 Independent copy,或者先把这个聊天当前的地图迁移成一个新的共享世界。
关联的聊天之间只共享地图定义和 Global Gallery 配图。消息、当前位置、移动快照、Game 状态、Game 地图绑定、服务商连接和凭据都不共享。
在关联聊天内部做的编辑和发现,会作为那个聊天尚未发布的草稿保存下来。在你选择 Publish 之前,它们不会改动权威世界,也不会影响别的聊天。你也可以 Discard 掉这份草稿,或者用 Detach and keep copy 停止共享、同时保留这个聊天当前的版本。如果草稿还没处理,权威世界那边就先变了,Maps 会报冲突,要求你解除关联或者丢弃草稿,而不是悄悄覆盖掉任何一边。
发布时,当前浏览器标签页中已缓存、没有改动的关联聊天编辑器会刷新到新的权威修订。有未保存内容的编辑器会保留草稿并显示冲突,不会被覆盖。其他浏览器标签页或窗口中的关联聊天需要重新打开,才能载入新修订。
从资源库里编辑共享世界,改的是权威定义本身。共享世界编辑器不提供永久删除地点的功能;请改用归档,这样它们稳定的 ID 依然可用。关联的聊天同样无法永久删除任何地点,除非你先选择 Detach and keep copy。共享世界本身也要等所有关联聊天都解除关联或改挂别处之后才能删除。
共享世界和模板保留的是 Global Gallery 的配图引用,不会把图片文件复制进每个聊天。只要还有已保存的模板、共享世界、独立聊天地图或关联聊天草稿引用着某张 Global Gallery 图片,Marinara 就不允许删除它。确实想删掉图片本身时,请先解除这些引用。
解除关联、更换地图或者重来一次
这几个操作回答的是不同的问题:
- 想停止共享但保留关联聊天当前的层级结构:先保存或丢弃编辑器里未处理的改动,然后选择 Detach and keep copy。这个聊天会变成独立的,不再接收权威世界的更新。
- 想继续共享但换一个权威世界:为写明的那个目标聊天打开世界资源库,在要换成的世界上选择 Link to chat。历史兼容性检查照常执行。
- 想换掉一份独立聊天地图:打开它的编辑器,选择 Replace / start over。可以先存成模板或导出一份备份,然后再选 Create with AI、Use template or shared world、Import map file 或 Start blank。
- 想给某个聊天换一张完全无关的地图:走同样的替换流程。把智能体删掉再加回来并不能重置地图。
替换的结果在点击 Save 之前一直只是工作副本。保存替换会清掉所有排队中的目的地或路线。一旦消息历史引用了地点 ID,Maps 可能会拒绝一次毫不相干的替换,以保住历史面包屑路径;遇到这种情况,就保留一份独立副本,在现有地图上扩展或归档。
看懂地图编辑器
桌面端的编辑器分三栏。屏幕窄的时候,用 Hierarchy、Local 和 Details 三个选项卡来回切换。
- Hierarchy 显示完整的树。选中一个地点就能编辑它。Enter 只是切换正在查看的层级位置,不会移动故事。
- Local 把当前地点的直接子地点显示成列表、坐标地图或有序图层。
- Details 用来编辑地点文字、层级关系、世界设定、配图、通道、状态和 Game 地图绑定。
编辑器顶栏放着 AI 建图控制、Templates、Export、Import、Enabled 开关和 Save。有未保存的改动时会标出 Unsaved。带着未保存的内容离开时,会问你要不要丢弃。
一个地点可以包含什么
每个地点可以有:
- 一个父地点和任意多个子地点;
- Region、Settlement、Place、Building、Floor 或 Room 类型;
- 名称和图标;
- 一段公开描述和一段仅模型可见的私密备注;
- 一句简短的感知摘要;
- 精确地点绑定的世界书链接;
- 通往其他地点的单向或双向直连通道;
- List、Map 或 Layers 三种子地点呈现方式;
- 一张地点参考图,以及可选的图片使用开关;
- 使用 Map 呈现方式时,另有一张独立的子地图背景;以及
- 活跃或已归档的状态。
选 Map 呈现方式时,把子地点拖到位置上,或者直接填 0 到 100 之间的精确 X、Y 坐标。选中的父地点还可以在子地点后面放一张 Gallery 图片作为底图。选 Layers 时,要给每个子地点一个互不相同的图层序号。
直连通道可以连接层级结构里任意两个合法的地点:城镇之间的渡船、指定楼层之间的楼梯、世界之间的传送门,或者不同建筑房间之间的密道。
一座 25 层的塔,通常应该把各层建成同一座塔下面的兄弟地点,而不是排成 25 层深的父子链。Maps 最多支持 5000 个地点和 20 层层级。
用 AI 起草或扩展地图
地图还是空的时候,点击 Create with AI 或 Draft with AI。已有地图则点击 Expand with AI。
决定 AI 读什么
在 Build from 下面,从这些来源里选一个:
- Game setup 使用当前的设置内容和角色。在 Game 里,这包括世界概览和队伍角色。
- Selected lore 使用你选中的世界书。Strict canon 只创建有设定依据的地点。Canon + expansion 允许添加合适的新内容。
AI 不会读回合历史。设置内容或世界设定里缺什么,就补进 What should this world include? 或 What should be added?
选一个规模:
| 规模 | 大致产出 |
| Small | 8 个地点 |
| Medium | 16 个地点 |
| Large | 28 个地点 |
生成出来的是草稿,不是已保存的地图。你可以在完整预览里搜索或展开,选中地点,逐个看它们的路径、描述、私密备注和设定出处。继续之前还可以用 Edit prompt、Regenerate 或 Discard draft。
如果模型返回的 JSON 完整但格式有误,World Maps 会尝试一次仅修复格式的请求。修复请求会要求模型保留所有生成的地点和值,只纠正 JSON 语法。不完整的响应不会送去修复;Maps 会提示你提高连接的 Max Output Tokens(最大输出 Token 数),或选择更小的地图规模后再试。
新建地图点击 Continue to editor,扩展则点击 Add to working map。等战役历史引用了地点 ID 之后,Maps 会保护这些引用,只允许扩展,不允许毫不相干的整体替换。
手动搭建或编辑地图
地图还是空的时候,点击 Build manually。Maps 会先建一个范围很大的起始地点。在层级结构里选中它,然后使用:
- Add child 在选中地点内部加一个地点;
- Add sibling 在同一个父地点下面、和它并列加一个地点;
- Duplicate 复制一整棵地点子树再改;以及
- Archive 让一个地点退役,同时不抹掉历史引用。
用 Set as starting location 定下故事的初始地点。层级结构必须有一个活跃的起始地点才能启用。把编辑器提示的问题都解决掉,然后开启 Enabled 并点击 Save。
理解模型到底收到了什么
只要地图已启用且已保存,每次生成都会收到一个权威的空间上下文块,内容包括:
- 当前的面包屑路径;
- 精确的当前地点 ID 和公开描述;
- 精确当前地点的私密备注(如果写了的话);
- 当前一步之内能到达的目的地;以及
- 一份有数量上限的活跃已知地点索引,含它们的精确 ID。
有了已知地点索引,回复才能识别出角色抵达了已保存世界里的别处。附近的目的地也可以用来支撑普通叙述或 CYOA 选项。
父地点的名称提供方位感,但父地点的描述、私密备注、配图和它关联的世界设定都不会向下继承。如果当前位置是 Tower → Floor 7 → Alchemy Lab,那么生效的是实验室自己的详细信息,塔和楼层只为面包屑路径贡献名称。
Private model memory(私密备注) 是一段保存好的、只给 AI 看的说明,不是会自我更新的记忆功能。适合写秘密、氛围、长期存在的危险、当地规矩,或者只该在那个精确地点生效的事实。必须让模型知道的信息,请写进公开描述或私密备注,不要只靠那句感知摘要。
在故事进行中移动
Maps 支持排队移动、路线规划,以及经过校验的、由用户主导的抵达。移动会随回合一起保存,所以位置会跟着选中的消息历史和备选回复走。重启 Marinara 不会有意重置当前位置;切换到另一条消息分支或另一个备选回复时,会恢复随那段选中历史一起保存的空间快照。
排队一个明确的目的地
选中一个目的地只是把移动排进队列,并不会立刻移动。这次移动会在你发出下一条消息时提交,让位置和回合保持同步。
一步之内能到的目的地包括:
- 当前地点的父地点;
- 当前地点的活跃子地点;以及
- 通过可用直连通道相连的地点。
一个回合只能提交一步层级移动。想取消的话,点待处理目的地上的 X。如果在发送之前地图版本或当前位置变了,这个待处理的移动会变成 Needs review。
引导生成、重新生成和续写不会创建新的用户回合,因此不会消耗排队中的目的地或路线步骤。Impersonate(代写) 会创建用户消息,所以成功的代写回合只提交一次排队移动;服务商请求失败不会提交任何内容,过期移动则会返回待审查状态,不会改变位置。
规划一条跨多回合的路线
在世界地图上选一个较远的活跃地点。只要父子关系和可用通道构成的图里存在通路,Maps 就会显示最短路线并给出 Plan route。
一条路线会先排上它的第一步。之后你每发一条用户消息,就提交一步并排上下一步,直到抵达目标为止;没有单独的“前进”按钮。路线随时可以取消。如果地图或当前位置发生了意料之外的变化,路线会变成 Needs review,而不是自作主张猜一条新路。
举个例子,从 Floor 1 走到同层级的 Floor 25,通常要花一个回合退到塔里,再花一个回合进入 Floor 25。加一条直连通道就能把这趟路缩成一步。
跟随用户主导的移动,并发现新地点
自动改动地图时,最新一条用户消息说了算:
- 焦点队伍以现在时或祈使句直接写出的移动,可以确立抵达。“我们去 Kitchen”和“她走进户外区域,我们跟上去”都可以移动到匹配的已知地点。
- 明确抵达或发现了一个有名字、稳定存在、之后还能再来的重要地点,可以把它加进世界。“我们发现了一个暗室”就能创建并进入那个地点。
- 可见的回复可以叙述后果,但光凭 AI 叙述,永远不足以授权一次移动或新建一个地点。
- 未来的打算、失败或没走完的行程、随口提及、只有 NPC 在动、想象中的地方、临时营地、走廊、载具,以及其他一过性的细节,都不会创建或移动地点。
模型仍然要理解用户的措辞并发出一条隐藏的 Maps 指令,再由应用校验。碰上含糊的文字,不同语言模型的表现可能有出入。想要确定无疑地在下一回合移动,就用 Set destination;想修正已经保存的状态,就用 Set current story location。
在 Marinara Engine 2.4.1 或更高版本中,完整的 Maps 移动和发现指令会从流式文本及保存消息中移除,同时保留普通方括号文本及间距不变。如果消息中出现原始 Maps 指令,请同时更新 Marinara Engine 和 World Maps,按提示重启,并重新生成或删除受影响的消息,避免它在后续上下文中再次出现。
经过校验的、用户主导的抵达可以绕开“一步可达”的限制:必要时 Maps 会从当前位置记下一条可用直连通道。如果之前已经排了一个目的地,那个排队的移动会先随用户消息保存下来,然后用户主导的抵达成为 Assistant 回复上的最终位置;一次性的队列随之清空。在已规划的路线上,抵达的是下一个计划步骤时,路线正常推进。抵达别处(包括直接跳到路线上更靠后的一步)会让路线变成 Needs review,这样 Maps 就不会悄悄改写整个计划。此时请从当前所在位置取消或重新规划路线。
起始地点和当前故事位置的区别
起始地点是新故事开始时的默认位置。当前故事位置是这个具体聊天此刻所在的地方。改起始地点,修不好某个已有聊天的当前位置。
要修正已保存的状态,请在编辑器的 Details 栏里选中一个活跃地点,然后选择 Set current story location。这是一次管理性质的修正,不是叙述出来的移动。它在你点击 Save 时生效,会清掉排队的目的地或路线,也不会改写之前的消息。
Roleplay 里的移动
Story location 控件出现在消息输入框上方。
- 打开故事地图,查看层级结构和当前面包屑路径。
- 选中一个地点,读它的描述。
- 用 Explore inside、Browse up 或面包屑路径来回浏览,浏览本身不会移动。
- 对能到达的地点点击 Set destination,对能到达的远处目标点击 Plan route。
- 发出下一条消息,提交排队的那一步。
Game 里的移动
Game Mode 多出一张 Hierarchical world map。You are here 标出当前故事位置。浏览、居中和查看都不会移动队伍。先排好目的地或路线,再发下一个 Game 回合。
当最新一条用户消息确立了队伍的抵达时,生成出来的 Game 回复可以发出那条隐藏命令来更新层级位置。之后当前地点的详细信息会为 GM、队伍、场景配图和符合条件的分镜参考提供依据。
层级世界地图和普通 Game 地图的区别
Game 里可以同时存在两套地图系统:
- World Maps 负责权威的故事或世界位置,例如
The Shattered Coast → Brinewatch → Tideglass Inn。 - 普通的 Game 网格地图或节点地图,负责那个故事位置内部的局部或战术细节,并且参与 Game 的时间和天气。
当 Game 的启动流程交给 World Maps 时,它选中的模板或过目后的草稿会提供起始世界。普通 Game 地图既不会被拿去当提示词输入,也不会被顶上来充当后备的层级结构。
进阶玩法里,一个层级地点可以绑定到一整张 Game 地图、一个网格格子或一个节点上。选中一个已绑定的 Game 位置,会预备好对应的层级移动;未绑定的位置保持正常的战术行为。编辑绑定之前请先保存层级结构。清掉一条绑定不会删掉任何一张地图。
给地点加上视觉形象
地点参考图和子地图背景是两回事,哪怕它们用的是 Gallery 里同一张图片。
| 配图 | 用途 | 会发给图像生成吗? |
| Location reference image | 锚定精确当前地点的视觉形象。可以选聊天图库或共享 Global Gallery 里的图,也可以用 AI 生成。 | 会,前提是 Use for Roleplay illustrations and Game storyboards 已开启,且这次请求符合条件。 |
| Child map background | 对使用 Map 呈现方式的父地点,显示在可拖动的子地点后面。每个地图图层可以有自己的背景。 | 不会。它只用于显示。 |
角色参考图或用户角色参考图保住的是“画面里有谁”,地点参考图保住的是“场景发生在哪”。服务商支持的话,两者配合能让角色和背景在多张图之间都保持一致。
当一张符合条件的地点参考图被附上时,图像流程会加上这条指令:
Location handling: an attached location reference image is available. Use it to set the scene location.
各家服务商对参考图数量各有上限。请求里明确指定的参考图和角色参考图,都会挤占自动参考图的位置。
设置单个地点的参考图
在编辑器里选中一个地点,打开 Location reference image。
- Choose artwork 从当前聊天或共享的 Global Gallery 里指定一张已过目的图片。选择器会标出每张图的来源。
- Create with AI 会打开一段可编辑的定场图提示词,并在你决定用不用之前先把结果存进 Gallery。
- Use for Roleplay illustrations and Game storyboards 控制选中的图片要不要参与符合条件的生成。
对使用 Map 呈现方式的父地点,请另外打开 Child map background。选一张 Gallery 图片,然后把它摆在子地点标记后面。这张图不会仅仅因为显示在地图上就被发给服务商。请使用正方形图片,例如 1024 × 1024 px,以匹配 100 × 100 的坐标网格。编辑器和聊天中的地图使用相同的正方形画布。
当同一张 Gallery 图片承担两种配图角色时,Remove reference only(仅移除参考图) 会把它保留为子地图背景。两种用途都不合适时,使用 Reject both and create replacement(两者都弃用并生成替代图)。生成后,Use for both(两者都使用) 会一步把新图同时指定为地点参考图和子地图背景。
批量生成缺失的地点配图
编辑器的 Location artwork 区域会找出缺参考图或缺子地图背景的地点。
- 点击 Review requests。
- 在花掉服务商请求次数之前,先看清楚请求数量。
- 确认图像连接、模型、Engine 风格、战役画风状态、已保存的图像说明和输出尺寸。
- 需要的话,逐条修改正向和负向提示词。
- 取消这次审阅,或者点击 Generate N images 确认执行。
- 在工作地图里查看生成的配图,然后点击 Save。
每张缺失的图片都是一次单独的服务商请求。世界一大就可能又慢又贵,所以审阅界面可以滚动,并且一直显示请求数量。已有的配图在可能的情况下会直接复用,不再单独请求。新生成的图片会成为地点参考图;如果对应的地图正好还缺背景,它同时也会成为子地图背景。
已保存 Gallery 链接的图片不再存在时,也算缺失。在生成过程中编辑地点时,Maps 只会把结果应用到仍然缺图的配图角色上。新选的替代图片、参考图开关、背景位置、归档状态和其他草稿改动,都不会被完成的请求覆盖。
发给服务商的,就是审阅界面里显示的、你改过的正向和负向提示词。正向提示词的内容不会被复制到负向提示词里。
自定义自动配图提示词
打开 Settings → Generations → Prompt Overrides(设置 → 生成 → 提示词覆盖),选择 Maps location artwork。这是 Maps 预览和生成自动地点配图时使用的全局模板。变量写作 ${variableName} 的形式,可以从编辑器里插入。
| 变量 | 含义 |
${locationName} | 地点名称 |
${locationDescription} | 精确地点的公开描述 |
${locationType} | Region、Settlement、Place、Building、Floor 或 Room |
${locationPrompt} | Maps 备好的完整后备定场提示词 |
${parentLocationName} | 直接父地点的名称,在根节点为空 |
${parentLocationDescription} | 直接父地点的公开描述,没有则为空 |
${locationPath} | 从根到本地点的完整面包屑路径 |
${genre} / ${genreLine} | Game 题材的原始形式或带标点形式;Game 之外为空 |
${campaignArtStyle} / ${campaignArtStyleLine} | 仅当 Use campaign art style 开启时才是战役画风 |
${imageInstructions} / ${imageInstructionsLine} | Chat Settings 里保存的图像说明,原始形式或格式化形式 |
内置模板用的是精确地点的提示词,外加可选的题材、战役画风和已保存的图像说明。它默认有意不带父地点描述和完整路径,这样才不会把塔之类的父级地标硬塞进每一张子地点或楼层的图里。
常见的改法:
- 不希望 Game 题材出现在自动地图配图里,就删掉
${genreLine}。 - 只有当你想让每个聊天各自的 Use campaign art style 开关来控制这部分内容时,才保留
${campaignArtStyleLine}。开关关闭时,这个变量是空的。 - 只有当服务商确实需要更大范围的上下文时,才加上
${parentLocationName}、${parentLocationDescription}或${locationPath}。 - 用 Reset to default 恢复内置模板。
Engine 的风格配置以及全局的正向、负向图像设置,是在这个模板之后再叠加上去的。它们属于共享的 Illustrator 图像工作流,不算 Maps 专有的设置。如果负向提示词里还留着意料之外的文字,请检查全局负向图像设置和审阅界面里那个可编辑的字段。
把世界设定关联到地点
World Maps 用到世界设定的地方有两处:
- AI 起草或扩展地图时,可以读取选中的世界书。
- 已保存的地点在成为当前地点时,可以激活对应的条目。
要挂上运行时生效的世界设定,请选中地点,打开 Linked lore,搜索可用的条目,挂上想要的条目,然后保存。
选择关联条目上的 Open(打开),就会离开地图工作区并打开它的世界书。没有改动的工作区会直接关闭。如果地图有未保存的改动,请先保存,或明确确认可以丢弃草稿;World Maps 绝不会在地图编辑器仍然可见时,把世界书打开在它后面。
关联的条目不会从父地点传给子地点。挂在 Brinewatch 上的世界设定,在 Tideglass Inn 不会生效,除非在那里也挂一份。
当前地点的世界设定不需要关键词命中,但它并不绕过世界书本身的各项控制。被禁用或被这个聊天排除的世界书和条目照样不可用,条目的条件、时机、概率和 Token(模型切分文本的最小单位) 预算也照样生效。引用丢失的情况会一直显示在编辑器里,方便你修好或解除关联。
Maps 的进阶提示词设置
Agents → World Maps 主页面掌管着两套全局提示词系统:
- Generation prompt 是一个带名字的 Roleplay/Game 提示词库,供 AI 起草和扩展地图使用。每个聊天可以各自选一项。解析后的预览会用上实时的设置内容、角色、世界设定和地图上下文,而不会真的发起一次模型请求。
- Turn prompt insert 控制的是全局的 Roleplay/Game 系统文本,负责在普通回合里呈现当前位置。Marinara 会保留应用自己的
<spatial_context>外壳和它周围必需的权威变量。
同一页面上的 Connection Override 影响的是 AI 起草和扩展地图。留空就用当前聊天的连接。这些设置替代不了全局生成设置下面那个独立的 Maps location artwork 覆盖模板。
这些控件是给进阶自定义用的。必需的变量务必保留,保存之前先看一遍解析后的预览。
安全地导入、导出和归档
导出便携地图
在聊天、模板或共享世界的编辑器里使用 Export,可以把工作中的层级结构下载成 .world-map.json 文件。下载前请选择要携带多少关联世界设定:
| 世界设定选项 | 文件内容 |
| Map only | 层级结构,以及可读的地点与世界设定出处信息,但不含世界书内容。缺失的条目无法重建。 |
| Map + linked entries | 只有地图关联的条目,以及整理它们所需的文件夹路径。这是推荐的便携选项。 |
| Map + complete lorebooks | 每本关联世界书的全部条目和文件夹,包括与地图无关的内容。 |
分享文件之前,请检查列出的世界书、条目数、预计大小,以及可展开的地点与世界设定对应关系。完整的世界书可能含有私密或与地图无关的笔记。
保持 Include map artwork 开启,就会把引用到的地点图片和子地图背景一起打包进同一个文件。想要更小的备份时就关掉它。旧的 .hierarchical-map.json 文件依然可以导入。
导入地图并恢复便携世界设定
用 Import 把层级结构载入聊天的工作副本、独立模板或共享世界。文件里含有世界书内容时,Restore portable map lore 会预览四组结果:Exact IDs、Unique content、Need a choice 和 New entries。
精确的条目 ID 只有在属于目标世界书时才是权威的。来自其他来源的 ID 属于歧义项,不会自动算作匹配;请选择准确的目标 Lorebook → Entry (ID) 行,或者选 Import a new copy。除此之外,World Maps 只有在条目完整的便携内容和设置恰好有唯一一个匹配时才会复用它。光凭名称永远不够。
看过预期结果之后,再选择整体的导入策略:
- Import separate copies 不复用任何条目。它会创建带出处标注的独立世界书,比如
Original Lorebook - Map Name (World Map),并加上 (copy) 或 (copy N),避免和资源库里的名称冲突。 - Reuse matches & import the rest 保留精确匹配和唯一匹配,应用你对歧义行的选择,只为仍需导入的条目创建新世界书。
导入之后,Maps 会列出它具体复用了和新建了哪些世界书。即使以后删除了地图,新建的副本也会留在 Lorebooks 资源库里。在 Engine 2.4.1 或更高版本上,Lorebooks 主视图会立即刷新。在 Engine 2.3.5 到 2.4.0 上,恢复便携世界设定后请刷新一次 Marinara。
打包的配图也会一并恢复,它的图片链接会重新映射。归聊天所有的配图回到目标聊天的 Gallery。共享配图如果在 Global Gallery 里已有同一张图,就直接复用;如果模板或共享引用需要它,就往 Global Gallery 里添加一次。
检查导入的地图,然后点击 Save,它才会成为权威版本。导入本身不会立即保存。Map only 导出可以保留可读的世界设定出处和现有的精确 ID 关联,但无法重建已删除的世界书或条目,因为文件里没有它们的内容。
一旦战役历史引用了某张地图,导入的改动就必须保留已有的地点 ID。请在原有基础上添加或更新地点,不要拿一套毫不相干的 ID 把层级结构整个换掉。
归档或永久删除地点
归档能保住旧的引用。归档一个地点之前:
- 把它下面活跃的子地点移走或归档;
- 需要的话,另选一个活跃的起始地点;以及
- 如果它正是运行时的当前位置,另选一个活跃地点顶上。
已归档的地点可以从 Details 栏恢复。确认安全的前提下,World Maps 1.3.1 还为已归档的地点或整棵已归档的分支提供 Delete permanently。遇到下列任一情况,编辑器会禁用这个操作:该地点是已保存的起始地点或当前故事位置、出现在消息历史里、有 Game 地图绑定、参与了排队的目的地或路线,或者它所属的聊天仍然关联着某个共享世界。共享世界编辑器和模板编辑器都不提供永久删除地点的功能。请先处理掉提示里指名的依赖,必要时把关联的聊天解除关联,或者干脆让这个地点保持归档状态。
永久删除会把地点从工作草稿里移走,并在你点击 Save 时清理它的层级关系和直连通道引用。不保存就关闭的话,这次删除同样会被丢弃。被删掉的地点不会再出现在导出文件里;那些因受保护而留下的已归档地点仍会被导出,好让它们稳定的 ID 继续支撑历史和关联数据。不要为了绕开这些保护去手改导出的 JSON。
故障排查
Chat Settings 里找不到 World Maps
安装这个包,然后重启 Marinara。聊天必须是 Roleplay 或 Game。开启 Enable Agents,然后在 Tracker Agents 下面启用 World Maps。
世界资源库里没有 Add to chat 或 Link to chat
先打开一个 Roleplay 或 Game 聊天,再打开资源库。资源库会写明目标聊天,并对模板显示 Add to chat、对共享世界显示 Link to chat。在 Game 设置流程里,对应的操作是 Use template 和 Use shared world。如果列出了共享世界,却不显示 Use shared world,那么浏览器里跑的可能还是旧版的包客户端。先保存或丢弃打开着的地图编辑器并关闭它,存好其他标签页里无关的工作,把 Marinara 强制刷新一次,再重新打开 Game 设置。
Game 设置用错了地点,或者用了后备地点
选择 Use template,然后在完成设置之前,确认是用 Use template 得到独立副本,还是用 Use shared world 建立关联。检查并保存 Game 地图。
关联聊天仍显示旧版共享世界
在你执行发布的那个标签页里,编辑器会自动刷新。有未保存或未发布改动的聊天会保留草稿并显示冲突。其他标签页或窗口里的聊天需要重新打开,才能载入新修订。
地图启用不了
至少创建一个活跃地点,并设置一个活跃的起始地点。把编辑器顶部列出的问题逐条解决,然后重新启用并保存。
用不了 AI 生成地图,或者生成失败
- 确认聊天或 World Maps 页面上的 Connection Override 有一个可用的语言模型连接。
- 重新打开 AI 建图之前,先保存或丢弃编辑器里的改动。做扩展时,要选一个活跃的目标。要基于世界设定生成,至少选中一本已启用、且没被排除的世界书。
- 如果 Maps 提示响应在 JSON 完整之前就结束了,请提高连接的 Max Output Tokens,或选择更小的地图规模。Maps 不会修复不完整的响应。
- 如果 Maps 报告 JSON 格式错误,说明它已经尝试过一次仅修复语法的请求。再试一次。如果模型反复失败,就换一个连接或模型。
当前位置没有跟着消息走
自动移动需要两个条件:你最新一条消息直接确立了队伍的抵达,并且模型产出了一条有效的隐藏 Maps 指令。光有 AI 叙述,或者只是意图、讨论、失败的行程、只有 NPC 在动、临时的地方,都不会移动标记。试试直接一点的说法,比如“我们去 Kitchen。”想要确定无疑地在下一回合移动,就用 Set destination。
重新打开聊天后当前位置变了
检查选中的是哪条消息分支和哪个备选回复。位置跟随的是随那段历史一起保存的快照。如果历史没错但标记不对,请打开编辑器,选中正确的活跃地点,选择 Set current story location,然后点击 Save。
目的地或路线显示 Needs review
排队之后,地图版本或当前位置变了。打开故事地图,检查路径,重新选一次目的地或路线。如果显示的目的地还在,先取消它再重新选。
规划好的路线不往前走
每个用户回合都会提交显示中的那一步,并排上下一步。如果某个回合没有让路线推进,就取消它,从当前位置重新规划。如果保存的位置不对,请用 Set current story location 再 Save,这样会清掉过期的路线。
这个聊天该换一张完全不同的地图
打开编辑器,选择 Replace / start over。需要的话先存成模板或导出一份。如果这个聊天是关联状态、又想保住它的层级结构,请先用 Detach and keep copy。把 World Maps 删掉再加回来并不会抹掉它的地图。
选不了远处的地点
只要存在一条活跃的父地点、子地点或通道路径,就用 Plan route。否则就加一条直连通道,或者一回合一步地穿过能到达的地点走过去。浏览从来不会移动故事。
自动配图提示词里带上了不想要的内容
- 总是出现 Game 题材:打开 Settings → Generations → Prompt Overrides → Maps location artwork,删掉
${genreLine}并保存。 - 战役画风该关的时候却出现了:检查 Chat Settings → Illustrator → Use campaign art style。关闭时,
${campaignArtStyle}和${campaignArtStyleLine}为空。 - 每张子地点图里都冒出父级地标:除非确有必要,模板里别用
${parentLocationDescription}和${locationPath}。 - 负向提示词里有意料之外的文字:确认之前先修改负向字段,然后检查全局负向图像设置。Maps 模板只负责拼正向提示词。
地点参考图没有用在图片或分镜上
检查那张 Gallery 图片还在,并且精确当前地点上的 Use for Roleplay illustrations and Game storyboards 是开启的。子地图背景只用于显示,替代不了参考图,除非把同一张图片也设为地点参考图。
模型不理会地图
检查 World Maps 在这个聊天里处于活跃状态、层级结构是 Enabled、你的改动已保存,并且 Story location 控件里显示着一个当前位置。Turn prompt insert 解析后的预览有助于排查。
关联的世界设定不生效
检查条目挂在精确的当前地点上,并且条目和世界书都已启用、没有被这个聊天排除。父地点关联的世界设定不会被继承。对于导入的地图,请检查导入摘要。Map only 不携带世界书内容,所以要导入以 Map + linked entries 或 Map + complete lorebooks 导出的文件,然后选择精确匹配、歧义目标或独立副本。在 Engine 2.3.5 到 2.4.0 上,恢复世界设定后要刷新一次 Marinara。
相关指南
- 智能体:聊天里的 AI 帮手
- 可下载智能体参考
- 世界书
- Roleplay 模式:入门
- Game Mode:入门
- Game Mode:地图、时间与天气