创建自定义关卡

0 点赞
You Are The Code
转载

《You Are The Code》自定义关卡包制作官方指南 可选工具 建议使用VSCode,你可以在其中使用我的VSCode扩展【You Are The Code Shortcuts】来简化关卡创建并获得语法高亮。你可以直接在VSCode内安装该扩展。

入门指南 在游戏中,切换到一个未使用的存档槽(这样可以使用全局变量而不会干扰基础游戏)。未来可能无需此操作。 在游戏中,进入home/custom_levels/文件夹,运行“打开文件夹”。你可以在此处放置自定义关卡包。如果使用VSCode:在文件资源管理器中右键点击 -> 用Code打开。 如果你想通过示例学习,可以参考“example_level_pack”文件夹(该文件夹是custom_levels文件夹中的默认文件夹),直接复制或编辑它。如果这样做,请跳至语法部分。如果你想从头开始制作,请继续阅读。 在custom_levels文件夹中新建一个文件夹。使用全小写字母或数字命名,且不含空格。例如test123。进入你新建的文件夹。你创建的每个文件夹都需要一个名为display_order的关卡,该关卡应位于一个名为display_order.yatc的文件中。要命名关卡,请在文件顶部写下@,后跟关卡名称。在这种情况下,你必须将关卡命名为display_order,因此display_order.yatc文件的第一行应为@display_order 仍在你的test123文件夹(或你给它取的任何名称)中,创建一个同名文件,并添加.yatc扩展名。因此,由于我们在名为test123的文件夹中,我们会在该文件夹内创建test123.yatc。你可以在此文件中编写关卡内容。 语法 你可以查看游戏初始自带的example_level_pack,其中包含了大部分(如果不是全部)关卡语法的示例。YATC文件格式如下(尖括号< >内的部分是对该处内容的描述): 第一关内容 <一行或多行空行> <第一关目标(如有)> <一行等号===== > <第二关内容> <第二关目标(如有)> <一行等号===== > 以此类推。即使文件中只有一关,末尾也需要有一行等号。 例如,"start_demo/area2/area2.yatc"文件夹中的单个文件内容如下(左侧是带语法高亮的图片,右侧是可复制的原始文本)。

如你所见,游戏中许多“常规”代码,例如“output”,在.yatc文件中就是“output”这个单词。 简单语法:同样,你可以查看游戏初始自带的example_level_pack,其中包含了大部分(如果不是全部的话)关卡语法示例。 部分行末尾的“->”是会吃掉你代码的虫子(“-”是空白字符)。 使用“#”不会在游戏中显示(为你这个关卡制作者添加注释)。所有以单个“#”开头的行都会被移除,但下一点中有一个例外情况。 如果你想在关卡中添加空行,请使用“#empty”。在游戏中,输入“## hello”会显示为“# hello”。 如前所述,输入“@abc”会将关卡命名为“abc”。 在一行开头输入“broken”会使该行变为不可通行状态(无法通过正常移动进入)。 脆弱行以“~”开头标记(若要同时设置为破碎和脆弱状态,可使用“~broken”)。 高级语法:同样,你可以查看游戏初始自带的example_level_pack,其中包含了大部分(如果不是全部)关卡语法的示例。 你可以通过在一行开头使用“!”来添加“序幕”行(基本为关卡设置)。这些行必须位于关卡内容的顶部,在关卡名称(如有)之后。例如,以下是一个文件示例(两者内容相同,左侧有语法高亮,右侧是可供复制的原始文本)。

@dog !line2 !{ "$a" : 5, "$b" : 7} ## 此关卡有两行前奏文本和一个关卡名称 复制上方1 存储 $b = $b + 1 输出 1 1 =================== !line4 ## 此关卡有一行前奏文本且无关卡名称 交换 $a $b 输出 2 222 =================== @cat 输出 3 输出 4 ## 此关卡无前奏文本,但有一个关卡名称 输出 4 343 =================== !{ "$a": 1, "$b" : 5, "$c" : "cat" } 该关卡的默认变量值。在这种情况下,"$a"默认值为1,"$b"默认值为5,"$c"默认值为"cat",其中cat在游戏中显示时不带引号。非数字值需使用引号。 ![4, 7, -1, -1, -1, -1, -1] 指定代码吞噬bug位置的另一种方式(索引0为4表示第一行有一个bug,会生成在第5个位置,即索引4) !runner[-1, -1, 0, -1, -1, -1, -1] 这表示游戏中第3行存在一个奔跑者bug。在应该有奔跑者bug的索引处放置0。 !broken[] 另一种指定损坏线路的方式(这种方式在与通过---->放置吞噬者bug结合使用时不会出错)。放入损坏的线路索引,例如!broken[3]会使游戏中的第4行损坏。 !fragile[] 语法与损坏线路相同,但用于指定脆弱线路。 !line1 玩家的起始线路索引(!line3会使玩家从游戏中的第3行开始)。 与他人分享(使用Steam创意工坊)