Skip to content

本文目前正在建设中,不过你或许已经能从中学到一些东西了! ​

简介 ​

安装 Lönn 和 Everest 并创建你的第一张地图后,你可能会在编辑较大地图、高效修改属性时遇到一些问题,并自问:难道真的没有更快的方法来解决这些问题吗?

答案是:当然有。所以这里是一份关于 Celeste 地图制作的有用但不太为人所知的工具清单(并非详尽无遗),尽量为你节省工作量。

Lönn 基础技巧 ​

虽然节点是核心功能,但许多 Lönn 技巧仍鲜为人知,本节旨在改变这一状况。

节点 ​

一些实体(entity)和触发器(trigger)在放置时会自动附带一个或两个节点,但在相当多的情况下,你可以用 N 键添加更多节点来影响触发器/实体的工作方式。例如,草莓(Strawberry) 实体可以通过添加节点变成带种子的草莓,每个节点就是一个种子。另一个常见用法是 FrostHelper 激活器(Activator),它可以与多个节点配合使用,一次性触发多个触发器。这意味着你无需叠加多个触发器来串联它们,从而提升了可读性。

翻转/旋转实体与贴花(decal) ​

虽然尖刺、贴花和其他一些物体可以朝不同方向摆放,但这些大多是可以使用属性对话框编辑的属性。不过,如果它们所属的模组支持,你也可以在放置前或选中时使用快捷键水平翻转(H)或垂直翻转(V),或以 90° 旋转(R)。这能极大提升你摆放贴花和其他装饰元素的速度。

开始使用复制/粘贴 ​

对于某些对象,比如自定义转针/尖刺或贴花,你在同一张地图中可能会以相同的属性频繁使用它们,即便这些属性并非默认值。与其使用 Placement 工具,不如把每种要用的对象在地图某个位置放一份,然后直接复制(Ctrl+C)粘贴(Ctrl+V)到目标位置,就像画画时使用调色板一样。

用文本文件作为粘贴转储 ​

根据 Lönn 的编码方式,每当你复制一个对象时,它实际上是以 JSON 对象的形式存储在剪贴板中的。这意味着你可以复制一个 Lönn 对象并将其粘贴到文本文件中。这样一来,你可以在继续工作的同时把对象保存在 Lönn 之外,甚至可以用文本编辑器修改对象的属性!

收藏工具 ​

每当你在 Placement 或任何图块集绘制工具等工具中翻阅可选项目时,都可以双击单个条目使它们排在列表顶部,这样可以节省时间,不必每次需要该实体时都重新搜索。

使用调试控制台 ​

如果你以 调试模式(Debug Mode)(可以在 Mod Options(模组选项) 中找到)运行 Everest(在地图制作时通常很有用),你就可以经常使用 调试控制台(Debug Console) 来辅助地图制作。你可以按 . 键打开它,这会打开一个文本提示符,并在屏幕上显示多个碰撞箱。

调试命令 ​

控制台打开后,你可以用键盘输入调试命令,按下 ENTER 即可执行。

基础游戏已经加入了相当多的基础调试命令,例如 give_golden、returntomap、mainmenu 和 exit(你可以使用 help 命令查看完整列表)。有些地图可能还会添加更多命令,最值得一提的是来自 Aurora's Helper 🔗 的 ah_flag 和 ah_flag_set 命令,它们可以让你在游戏内更改标志以便测试。

Lönn Scripts 🔗 ​

Lönn Scripts 是一个强大的 Lönn 插件,它会在 Lönn 工具栏中新增一个区块:Scripts(脚本)! 这些是带有参数的小段代码,可用于自动化编辑你的地图。 虽然该模组本身已经附带了一些有用的脚本,但还有很多其他模组会添加更多脚本来进一步扩充你的工具箱! 如有需要,你也可以编写自己的 Lönn Scripts,但本文将不讨论这一点。

⚠️ 由于 Lönn Scripts 可以更改地图中的任何内容,你只应使用你信任的模组作者提供的脚本,因为恶意脚本可能毁掉你的整张地图,而且脚本并不总能提供可用的撤销功能!如果你不确定某个脚本的效果,请先备份你的 bin 文件! ​

脚本的运行方式是:在右侧工具栏的 scripts 区块中选择脚本,然后在房间内点击。你可以让脚本只影响 Current Room(当前房间),或影响地图中的所有房间(All Rooms)。大多数脚本会在你点击后弹出一个窗口,要求更多参数,并且只有在你提交该对话框后才会继续修改你的地图。

标准脚本 ​

以下是使用 Lönn Scripts 自带的脚本可以做到的事情(非详尽列表):

一次性修改多个同类实体的属性 ​

使用 Change Attributes 脚本,你可以选择任意实体类型(使用其 Lönn 名称)并将其替换为其他任何类型,或者只修改实体属性(选择与目标相同的实体类型)。

在大多数情况下,你只想替换某些属性,例如房间内所有转针的转针类型,同时保留它们是否应该附着在实体上的设置;这种情况下,你应该使用 Allow Preserving 选项。这样你就能选择要修改哪些参数、保持哪些参数不变。

将某种类型的所有图块替换为其他图块 ​

使用 Replace Tiles 脚本,你可以选择任意图块类型(前景或背景),并将其改为另一个图块集。 如果你最初选择了原版图块集(例如 Summit 图块集),但后来决定地图的图块上不应有积雪,而应改用 SummitNoSnow 图块,这个功能会特别有用。

脚本会询问你要更改的图块的图块集 ID,以及要改为的图块集 ID,因此你需要找到这些 ID。 你可以查看 图块集 XML,也可以在 Lönn 中选择一个图块并复制粘贴到文本编辑器中。

从另一张地图复制房间 ​

使用 Copy Room From Map 脚本,你可以快速把任何其他 bin 文件中的某个房间副本放进当前地图,在处理较大的地图制作项目时非常有用。

其他有用的脚本 ​

⚠️ 本节所述为撰写本文时脚本的效果。模组作者可能随时修改脚本代码,请谨慎操作! ​

Kyfex Helper 🔗 ​

这个实用的辅助模组添加了一些脚本,用于在多张地图之间快速转移内容(如风格地面(styleground)或房间)。

它添加了 Copy Whole Map 脚本,用于从另一张地图复制所有房间,可选地为房间名添加前缀,这在合并 Heartsides 或类似的合作项目中极为有用。

另一个有用的脚本是 Copy Stylegrounds From Map,它可以把另一个 bin 文件中的所有风格地面添加到当前文件,可选地为 Room 和 Flag 过滤器添加前缀、自定义 Tags,还可以为所有位置型风格地面添加偏移,或将所有复制过来的风格地面包裹进一个新的风格地面组。

还有一个 Randomize Decal Colors 脚本,用于替换匹配列表中所有贴花的着色,将它们改为从另一个列表中随机选择的颜色。当你追求自然风格的装饰、想要更多样化的贴花时,这个功能特别有用。

Aurora's Lönn Plugin 🔗 ​

这个多功能的辅助模组添加了更多脚本,它们与 Change Attributes 脚本类似,用于编辑地图中对象的属性。不过,这些脚本允许更多精细的选项。你不仅可以覆盖实体的属性,还可以指定一个原始值,并只将该值替换为新值,这意味着你可以,例如,把某种类型的全部转针替换为新类型,而让其他类型的转针保持原样。

不过,这一选项的代价是每次只能编辑一个属性。

Bits & Bolts 🔗 ​

⚠️ 该模组提供的两个工具可能无法与所有触发器/控制器正常配合工作,因为其中一些可能并不期望被另一个模组移动/调整大小/加载,所以请不要因为 Bits & Bolts 模组没有实现适当的互操作性而责怪辅助模组! ​

除了大量其他内容外,该模组还添加了一些有用的工具,让你的触发器设置更整洁、可读性更强,将来可能会为你和你的合作者节省大量时间。

调整触发器大小(Resize Triggers) ​

一个简单却有效的触发器:它会选中其覆盖范围内所有其他触发器,并调整它们的大小,使其覆盖整个房间、整张地图,或仅覆盖其节点的区域。在每个房间放置一个并将其设置为覆盖整个房间,你就可以轻松地使用触发器来控制黑暗、泛光、色调分级和音乐,而不必用成堆不必要的触发器塞满所有房间。

全局房间加载(Global Room Loading) ​

你还可以(只要启用了该模组)添加一个以 _bb_global_ 前缀命名的房间,使该房间在地图加载期间始终被加载。这样你就可以把控制器之类的实体、或 Extended Variant 设置之类的触发器集中放在一个地方,同时让它们影响整张地图。

Celeste TAS 🔗 ​

虽然该模组是为辅助游戏的 TAS 通关而专门开发的,但它也附带了一些对地图制作很有用的工具。

调试光标(Debug Cursor) ​

作为该模组的功能之一,打开调试控制台会添加一个可以用鼠标移动的光标。在左上角你会看到光标所在位置的若干技术细节,有时这些细节可能很重要。左键点击屏幕上的任意位置会显示该处触发器/实体的详细信息。如果该处存在多个实体/触发器,多次点击会在堆叠的实体/触发器之间循环。这可以用来查找任意对象的 entity ID 和 entity class,某些高级模组实体可能会需要这些信息。需要特别注意的是,entity class 和 Lönn Entity Type 并不是同一回事!

Aurora's Lönn Plugin 🔗 ​

该模组的关键功能之一是在游戏运行时,为 Lönn 中的地图添加更多信息。

使用 View > Show Player Silhouette 可以激活玩家的轨迹,显示玩家移动过的路径并在死亡时重置,这样你可以先游玩地图中的一段,再放置必要的危险物来强制走位。如果剪影显示的位置不够具体,你可能更想使用 View > Show Player Hitbox Silhouette,它会精确显示玩家碰撞箱的轨迹。