外观
本文目前正在建设中,不过你或许已经能从中学到一些东西了!
简介
安装 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,它会精确显示玩家碰撞箱的轨迹。