《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创意工坊)