原文链接:https://github.com/EverestAPI/CelesteTAS-EverestInterop
https://github.com/EverestAPI/CelesteTAS-EverestInterop/blob/master/Docs/Studio.md
https://github.com/EverestAPI/CelesteTAS-EverestInterop/blob/master/Docs/Commands.md
-
Everest请先安装。
-
(推荐)使用一键安装器(https://gamebanana.com/tools/6715)或点击这里下载(https://0x0a.de/twoclick/?nightly.link/EverestAPI/CelesteTAS-EverestInterop/workflows/NetFramework.Legacy.CI/master/CelesteTAS.zip)然后把它放到游戏路径中的mods文件夹。
-
在游戏内的Mod选项里开启该模组。
-
打开 Celeste Studio.exe——我们的输入编辑器。它应当被放在你蔚蓝的主目录下,如果不是,请自行从Mods/CelesteTAS.zip中解压它。(备注:Studio只能在Windows环境下工作)Studio文档说明可以在这里找到:(后面会附)
-
如果系统环境为Linux或macOS,在游戏菜单选项Mod 选项->开关检查TAS工程文件的路径,用你喜欢的文本编辑器编辑,并启用信息面板以显示辅助信息。
-
你可以在这里找到大多数最新的输入文件:
https://github.com/EuniverseCat/CelesteTAS
输入文件
-
输入文件是一个以tas为后缀的文本文件,例如:1A – Forsaken City.tas
-
输入文件的格式为(按下的帧数),(输入的动作)
-
举例: 123,R,J(在这123帧里按住向右和跳)
可用操作
-
R=向右
-
L=向左
-
U=向上
-
D=向下
-
J=跳跃/确认
-
K=跳跃绑定键2
-
X=冲刺/交谈/取消
-
C=冲刺绑定键2/取消绑定键2
-
Z=下蹲冲刺(仅限在1.4版本以上的蔚蓝上使用)
-
V=下蹲冲刺绑定键2(仅限在1.4版本以上的蔚蓝上使用)
-
G=抓住
-
S=暂停
-
Q=重玩本关
-
F=羽毛瞄准角度
-
格式:F,角度[角度制,垂直向上为0度,顺时针方向为正],可选择单轴数值精度上限(默认值为1,范围0.5到1,仅在Analogmode调到precise时生效)
-
O=确认绑定键2
-
N=打开日志(仅用于开启作弊模式的代码)
控制
在游戏中或Studio中:
-
运行/停止:右Ctrl
-
重新运行:=
-
快进/帧连续步进:右Shift
-
快进到下一条指令:右Alt+右Shift
-
暂停/帧步进:[(左中括号键)
-
暂停/继续:](右中括号键)
-
碰撞箱开关:左Ctrl+B
-
简化图形开关:左Ctrl+N
-
镜头居中开关:左Ctrl+M
-
保存状态:右Alt+ -(减号下划线键)
-
清除状态:右Alt+ Backspace
信息面板:
-
按住信息面板快捷键和鼠标左键可以拖放移动信息面板
-
双击信息面板快捷键可以开关信息面板
-
按住信息面板快捷键然后用单击鼠标左键点击可以监视实体
这些可以在Mod选项里调整:
-
如果你使用的是非美式键盘布局,那么你必须重新绑定一些按键
-
绑定多个按键表示组合键,你需要同时按下才能触发相应操作
特殊输入
断点(Breakpoints)
-
你可以通过在单独的一行输入***让输入文件创建一个断点。
-
开始播放时,程序将快进直至到达该行,然后进入帧步进模式。
-
***s将创造一个保存状态,可以减少TAS回放时间。
-
你可以使用***X来指定播放速度,其中X是加速倍率,举例:***10表示以上代码将以10倍速播放。
指令(Commands)
-
该工具存在各种指令以便于TAS回放。点击这里查看:(后面会附)
保存状态(Savestate)
-
保存状态功能需要SpeedrunTool这个Mod。
-
在官图中是可靠的。
-
在使用各种代码mod的自定义地图中可能不能正确地工作。在离开房间之前设置一个保存状态可能对此有所帮助。
-
目前不能在暂停时保存状态。
-
内存不足可能导致游戏崩溃,尽管这不常见。
其他
实体监视
打开信息面板,按住信息面板快捷键然后单击鼠标左键添加被监视的实体,按住触发区域快捷键来监视触发区域,单击鼠标右键清除监视实体。支持通过StartExportGameInfo导出监视实体信息。
自定义信息
大括号中的内容可以用实际数据替代,以下是一些例子:
-
{EntityName.field…}找到第一个实体,举例:{Strawberry.Position}。
-
{EntityName[entityId].field…}通过特定的实体id找到实体。举例:{Strawberry[1:12].Position}表示1A的金草莓的坐标。你可以通过打开控制台并在实体上单击左键来获取实体id。
-
{[email protected]…}如果单名存在于复数个helper中,请把配置名称也加上去。举例:{[email protected]}和{[email protected]}。你可以通过打开控制台并在实体上单击左键来获取配置名称。
-
{Level.field…}获得某个字段数量的值。举例:Wind: {Level.Wind}
-
{ClassName.staticField.field…}可以获取一个非实体类和非数量类静态字段的值。
-
{Player.AutoJumpTimer.toFrame()} 在末尾加上toFrame()可以将单位从小数点变为帧。
-
{Player.Speed.toPixelPerFrame()}在末尾加上toPixelPerFrame()可以将速度单位从小数点/矢量2变成像素/帧。
-
AutoJump:{Player.AutoJump} ({Player.AutoJumpTimer.toFrame()})【监视自动跳跃】
-
ForceMoveX:{Player.forceMoveX} ({Player.forceMoveXTimer.toFrame()})【监视水平方向强制位移】
-
Theo:{TheoCrystal.Position}【监视Theo坐标】
-
TheoCantGrab:{TheoCrystal.Hold.cannotHoldTimer.toFrame()}【监视抓Theo的CD】
-
CustomSpinner:{CustomSpinner.Position} or
-
{CustomSpinner: {[email protected]}【监视自定义圆刺】
Celeste Studio使用说明
可以代替记事本或类似用途的工具使用,以便编辑TAS文件。它与TAS工具绑定,完成配置后会自动出现在Celeste主目录中。
控制
-
Ctrl+Z:撤销输入
-
Ctrl+Shift+Z:恢复输入
-
Ctrl+O:打开文件
-
Alt+←:打开上一个文件
-
Ctrl+Shift+S:另存为
-
Ctrl+F:查找文本
-
Ctrl+G:转到某行/某标签
-
Ctrl+D:向蔚蓝输入操作开关
-
Ctrl+Shift+D:刷新Studio和蔚蓝的连接
-
Ctrl+Shift+C:复制玩家数据至剪切板
-
Ctrl+K:注释/取消注释选中块(逐行处理)
-
Ctrl+Shift+K:注释/取消注释选中块
-
Ctrl+P:清除所有未注释断点
-
Ctrl+Shift+P:清除所有断点
-
Ctrl+.(句号和大于号键):插入/清除断点
-
Ctrl+Shift+.(句号和大于号键):插入/清除保存状态断点
-
Ctrl+R:插入房间名称
-
Ctrl+Shift+R:在当前位置和速度插入Console Load命令
-
Ctrl+Alt+R:在当前位置插入Console Load命令
-
Ctrl+T:插入当前游戏内时间
-
Ctrl+L:合并相同的连续输入
-
Ctrl+Shift+L:强制合并输入帧
-
Ctrl+↓/↑:跳到下一条/上一条注释或断点
-
Ctrl+左键单击Read/Play后面的文件名:打开读取文件/跳转到播放的那一行
-
右键单击输入区域:展示输入快捷菜单
-
右键单击信息区域:展示信息快捷菜单
-
Shift+鼠标滚轮:在选中输入和鼠标指针间调整帧
-
Ctrl+Shift+↑/↓:在选中输入间调整帧
高级指令说明
Read
-
格式:Read, File Name, Starting Line, (Optional Ending Line)
-
用于从指定文件中读取输入信息。
-
如果一个读取文件的自定义路径已被指定,它将尝试在那里寻找文件。否则,它将在整个蔚蓝主目录中寻找文件。
-
举例:Read, 1A – Forsaken City.tas, 6将读取1A – Forsaken City.tas文件中第六行后的所有输入。
-
简化文件名同样有效,即Read, 1A, 6可以达到相同效果。
-
建议使用标签替代所在行的数字,所以Read, 1A, lvl_1是本示例的首选格式。
Play
-
格式:Play, Starting Line, (Optional Frames to Wait)
-
一个简化的Read指令,它能直接跳到指定文件的起始行。
-
用于将巨大的代码文件拆分成较小的组块。
Labels
-
在一行的前缀加上#将该行的内容转变为注释。
-
以#开头的行也可作为Read指令的起始行和结束行。
-
你可以在Celeste Studio中按下Ctrl+K对需要突出显示的文本进行注释。
Console
-
格式:Console (command)
-
用于在蔚蓝控制台中输入命令
-
可用命令如下:
-
p_dreamdash (开启果冻冲刺)
-
p_twodashes (开启双冲)
-
core (int) (将核心块的模式设置为 none(0), fire(1) or ice(2))
-
givekey (获得一把钥匙)
-
giveberry (获得一颗草莓)
-
hearts (int default all) (string default current level set) (将指定位置的水晶之心数量设置为给定值)
-
summitgem (string) (获得山顶的宝石,0-6个或所有)
-
sd_clearflags (清除所有存档数据旗)
-
unlock_doors (解锁所有需要钥匙打开的门)
-
flag (string) (设置/移除一节标志性物件)
举例:flag oshiro_clutter_cleared_0/1/2 (清除3a的毛巾/书本/箱子)
Console load
-
load(对于A面而言)的使用例子如下,但是这些例子同样适用于hard(对于B面而言)和rmx2(对于C面而言)。
-
load可用于代替重新开始当前章节。但是,load可以在游戏的任何位置启动回放而不会有失去同步的风险。
-
请使用以下的格式:
-
console load (ID or SID)
-
console load (ID or SID) screen
-
console load (ID or SID) screen spawnpoint
-
console load (ID or SID) positionX positionY speedX speedY
-
ID表示关卡的ID(举例:旧址=2)
-
SID表示蔚蓝中地图的路径或者Mod图的文件夹(举例:Celeste/2-OldSite)。可以打开调试控制台找到。
-
Screen表示你想要加载的地图屏幕名称(备注:如果屏幕名称是数字,你必须提前加上“lvl_”,所以写成lvl_00而不是00).
-
spawnpoint表示你想要加载的#开头房间重生点,大多数房间都有复数个重生点(从0开始)。
-
还有一种选择,positionX和positionY表示你想加载的坐标点,speedX和speedY表示加载后的速度。
-
以下示例拥有相同的效果:
-
console load 2 3x
-
console load 2 lvl_3x
-
console load Celeste/2-OldSite 3x
-
console load 2 3x 0
-
console load 2 376 -176
-
console load 2 376 -176 0 0
Set
-
格式1:Set, (Optional Mod).Setting, Values
-
格式2:Set, Entity.Field…, Values
-
格式3:Set, Level.Field…, Values
-
格式4:Set, Session.Field…, Values
-
用于在设置栏中设置特定值。
-
如果没有加载mod那么默认为蔚蓝原装环境。
-
Everest设置使用名称为Everest的mod。
-
备注:设置名称/值可能不是那么直观。
-
要寻找mod和设置栏的名称,请打开蔚蓝目录下的saves文件夹。mod名称应该是像modsettings-(name).celeste这样的文件名。
-
打开在编辑器里打开设置文件来查看各项设置的名称。
-
名称需要区分大小写。
-
确保输入值跟设置类型匹配(如果设置文件里有一个boolean类数据,确保同时在Set命令里输入boolean数据)。
-
举例:
-
Set, VariantMode, false
-
Set, CheatMode, true
-
Set, DashMode, Infinite or Set, DashMode, 2
-
Set, Player.Position, 123.123, -1028
-
Set, Player.Position.X, 123.123
-
Set, Player.Speed, 325, -52.5
-
Set, Player.Ducking, true
-
Set, Everest.ShowModOptionsInGame, false
-
Set, ExtendedVariantMode.Dashcount, 3
-
Set, CelesteTAS.CenterCamera, true
Unsafe
-
TAS通常只在指定位置运行。
-
Console load通常强制TAS加载调试存档。
-
Unsafe允许TAS在任何地方或任何存档运行。
EnforceLegal
-
通常用于全收集类型文件的开头。
-
它可以避免使用指令而有损速通流程的公平。
StartExportGameInfo and FinishExportGameInfo
-
格式1:StartExportGameInfo (Optional File Path) (Optional Entities Names)
-
格式2:FinishExportGameInfo
-
转储一个文件的数据,用于分析无法同步的原因。
-
默认文件路径为dump.txt。
-
可以持续监视指定的任何其他实体,举例:StartExportGameInfo additional.txt TheoCrystal Glider CustomSpinner@FrostTempleHelper将持续监视来自FrostHelper mod中的Theo、水母和自定义圆刺。
-
你可以通过打开控制台然后点击实体来获得实体的名称,实体名称将会展示在左上角并以log.txt的形式输出。
StartExportRoomInfo and FinishExportRoomInfo
-
格式1:StartExportRoomInfo (Optional File Path)
-
格式2:FinishExportRoomInfo
-
将每个房间的实际消耗时间转储到一个文件,可用于比较改进之处。
-
默认文件路径为dump_room_info.txt。
RecordCount
-
举例:RecordCount: 1
-
每当你修改完当前的输入文件后运行tas文件,运行次数会自动加一。
FileTime
-
举例:FileTime: 0:51.170(3010)
-
当TAS完成流程时会自动更新文件时间,文件时间等于TAS正常播放所用的时间。
ChapterTime
-
举例:ChapterTime: 0:49.334(2902)
-
当从开头完成整个关卡时,会自动更新章节时间
AnalogueMod
-
格式:AnalogueMode, (Mode), (Optional upper limit of single axis, default value is 1, range is 0.5 to 1, only works in precise mode)
-
AnalogMode, (Mode)同样也能运行。
-
模式分为Ignore(不检查),Circle,Square和Precise。
-
Circle,Square和Precise确保发送给游戏的模拟输入尽可能的精确,将羽毛最大变化幅度锁定在圆形或方形死区内,或计算基于控制器控制下可能变化幅度的最近坐标。
-
大部分情况下你不需要担心这些东西。
StartExportLibTAS and FinishExportLibTAS
-
格式:StartExportLibTAS, (Optional File Path)
-
将TAS文件转化成一个LibTAS放映文件的输入部分。
-
默认文件路径是libTAS_inputs.txt。
-
大部分情况下你不需要担心这些东西。
Add and Skip
-
这条命令出现在选关菜单,游戏里不需要做任何事情。
-
相当于,它们扮演了libTAS转化者的指示。
-
Add, (input line)表示在libTAS输出中新增了一行。
-
Skip, (frames)表示强制跳到下一部分,无论当前有多少帧。
-
大部分情况下你不需要担心这些东西。