Skip to content

汉化标题:赛道 – 条件
原文页面:Tracks-–-Conditions
原文锚点:dce83dd
汉化时间:2026-09-12T00:00:00+08:00

赛道配置可以定义条件,并将其用作动态灯光的强度、材质变量不同值之间的混合、自定义音频事件的参数等的输入。

语法

ini
[CONDITION_...]
NAME = CONDITION_NAME    ; 供引用的条件名称
INPUT = SUN              ; 条件输入的键
LUT = (|0=0|90=1|)       ; 设定输入与输出值关系的 LUT
LAG = 0.8                ; 用于平滑过渡的滞后
LAG_DELAY_ON = 1800      ; 开启所需的时间(秒);若缺失,将改用 LAG
LAG_DELAY_OFF = 0        ; 同上,但用于关闭;设为 0 时将使用 LAG
LAG_DELAY_FUNC = SQRT    ; 非零 LAG_DELAY_… 的插值方式,可用值:SQR、POW3、SQRT、LINEAR
SIMULATE_HEATING = 0.7   ; 若大于零,过渡会模拟发热效果,在关闭时变得越来越红
BOUND_TO_SPECTATORS = 0  ; 设为 1 时,输入会乘以观众数量。我不知道它为什么
                         ; 会以这种奇怪的形式存在,反正现在有更好的办法了

; 闪烁参数:
FLASHING_FREQUENCY = 0             ; 闪烁频率
FLASHING_MIN_VALUE = 0             ; 闪烁会应用一个从该最小值到 1 的乘数
FLASHING_SKIP_OFF_STATE = 0        ; 基础闪烁以正弦波方式工作,有一半时间处于关闭状态,
                                   ; 将此设为 1 可跳过那些关闭阶段
FLASHING_SKIP_DOWNHILL_STATE = 0   ; 设为 1 可跳过正弦波变小的阶段
FLASHING_SMOOTHNESS = 1            ; 闪烁值的指数(或者设为 LINEAR,将正弦波变为
                                   ; 线性过渡)
FLASHING_NOISE_AMPLITUDE = 0       ; 增大可添加一些随机噪声
FLASHING_NOISE_BOUND = 1           ; 随机噪声变化的最大速度
FLASHING_NOISE_SPEED = 10          ; 随机噪声的变化速率
FLASHING_LUT = 0                   ; 可选的噪声 LUT
FLASHING_SYNCED = 0                ; 设为 1 时,所有使用该条件的东西的噪声都会同步

LUT 也可以指向文件而不必内联,格式与原版 AC 的 LUT 相同。此外,这些 LUT 还可以提供 RGB 值,从而实现彩色的过渡。

更多示例请查看 “config/tracks/common/conditions.ini”。

复杂表达式

在引用条件或设置条件的 INPUT 值时,现在可以用表达式形式引用之前定义的其他条件:

ini
[CONDITION_...]
NAME = condition_my_1
INPUT = 'SUN * 2 + TIME'

[CONDITION_...]
NAME = condition_my_2
INPUT = 'condition_my_1 * 4 - 100'

[LIGHT_...]
CONDITION = 'saturate( condition_my_2 * 0.01 + condition_my_1 + TIME )'

可用函数:

  • 无参数(常量):
    • e:欧拉数;
    • pi:圆周率。
  • 单参数:
    • abs(x):返回 x 的绝对值;
    • acos(x):返回弧度角;
    • asin(x):返回弧度角;
    • atan(x):返回弧度角;
    • ceil(x):向上取整;
    • cos(x):接受弧度角;
    • cosh(x):接受弧度角;
    • exp(x):返回 e^x
    • floor(x):向下取整;
    • ln(x):自然对数;
    • log(x):以 10 为底的对数;
    • log10(x):以 10 为底的对数;
    • saturate(x):若 x 在 0 与 1 之间则返回 x,否则返回 0 或 1 中更接近的那个;
    • sign(x):若 x 不为 0 则返回其符号,否则返回 0;
    • sin(x):接受弧度角;
    • sinh(x):接受弧度角;
    • smoothstep(x):smoothstep 适合用于渐变;
    • smootherstep(x):类似 smoothstep,但更平滑;
    • sqrt(x):返回平方根;
    • tan(x):接受弧度角;
    • tanh(x):接受弧度角。
  • 双参数:
    • atan2(x, y):将 xy 转换为弧度角;
    • max(x, y):返回 xy 中较大的一个;
    • min(x, y):返回 xy 中较小的一个;
    • pow(x, y):求 xy 次幂;
    • step(x, y):若 y 大于或等于 x 则返回 1,否则返回 0。
  • 多参数:
    • clamp(x, min, max):若 xminmax 之间则返回 x,否则返回 minmax 中更接近的那个;
    • remap(x, a, b, c, d):若 x 等于 a 则返回 c,等于 b 则返回 d,否则在 cd 之间线性插值(不做钳制)。

可用输入

  • TIME:一天中的时间,以秒计,从 00:00 到 23:59,经过四舍五入。

  • TIME_SMOOTH:一天中的时间,以秒计,从 00:00 到 23:59,未取整。

  • SUN:太阳角度(度)(0 为太阳位于天顶,90 为太阳位于地平线)。

  • YEAR_PROGRESS:年度进度,从 0 到 1。

  • YEAR_DAY:一年中的第几天,从 1 到 365(2 月 29 日被跳过,因此可以把位于其后的特定日期绑定上去而无须担心)。

    如果需要绑定某一天,请使用 lut:

    ini
    [CONDITION_...]
    INPUT = YEAR_DAY     ; 第 184 天是 7 月 4 日
    LUT = (| 1=0 | 184=0 | 185=1 | 186=0 | 356=0 |)
    ini
    [CONDITION_...]
    INPUT = YEAR_DAY     ; 按日期硬切换的寒冬
    LUT = (|1=1|40=1|41=0|332=0|333=1|365=1|)
    ini
    [CONDITION_...]
    INPUT = YEAR_PROGRESS    ; 颇有些冬季渐隐的意味
    LUT = (| 0=0.5 | 0.1=1 | 0.2=0 | 0.8=0 | 0.9=0.35 | 1=0.5 |)
  • WEEK_DAY:星期几,从 1 到 7。

  • AMBIENT:环境亮度乘数,夜间为 1.0,晴朗天空的正午则非常低(≈0.01)(Python 函数:ac.ext_getAmbientMult())。

  • FOG:雾强度。

  • FLAG_TYPE:比赛旗帜的类型。

    该输入还有 INPUT_CHANGE_DELAY 参数(以秒为单位延迟变化)和 INPUT_STAY_FOR 参数(以秒为单位保持变化)。

    可能的取值:

    • 0:没有显示旗帜,非比赛状态;
    • 1:比赛开始,一切正常;
    • 2:注意,黄旗;
    • 3:赛道表面湿滑¹²;
    • 4:维修区通道关闭¹²;
    • 5:黑旗;
    • 6:赛道上有慢速车辆²;
    • 7:救护车驶入赛道/最后一圈¹²;
    • 8:返回维修区(通过维修区处罚);
    • 9:因机械故障返回维修区¹²³;
    • 10:违反体育道德的行为¹²;
    • 11:无视黑旗¹²;
    • 12:快车逼近(蓝旗);
    • 13:阶段结束;
    • 14:还剩一圈;
    • 15:阶段暂停²;
    • 16:code 60¹²。

    ¹ 需要某种图形;

    ² 默认情况下不会被 AC 触发,但自定义赛道或线上脚本可以设置该旗帜;

    ³ 需要在板上标出车号。

  • CAR_ACTIVE_X:若维修区 #X(从 0 开始的索引)处有车则返回 1,否则返回 0。

  • CAR_DAMAGE_X:返回维修区 #X(从 0 开始的索引)处车辆的最大损伤等级;损伤值为最大撞击速度。

  • CAR_DAMAGE:返回任意车辆的最大损伤等级;损伤值为最大撞击速度。

  • SPECTATORS:赛道上观众的比例,从 0 到 1。

  • RAIN:雨强度,从 0 到 1。

  • RAIN_WETNESS:返回赛道湿度(降雨开始后迅速升至 1)。

  • RAIN_WATER:返回赛道上的水量(缓慢升到降雨强度后保持,决定水坑)。

  • ONLINE_RACE:若是线上比赛则返回 1。

  • ONE:始终返回 1。

  • ZERO:始终返回 0。

  • HOLIDAY:当前节日的类型,用于烟花和其他节庆效果。

    主要有三种类型:

    • 全局(Global):由系统时间触发,随处生效;
    • 区域(Regional):按 Windows 设置中的区域由系统时间触发,在某些区域可能完全不触发;
    • 基于赛道(Track-based):若赛道被设定为位于某一区域,则由游戏内时间触发。

    目前支持的节日:

    • 0:无;
    • 1:新年(全局);
    • 2:圣诞节¹;
    • 3:胜利日¹;
    • 4:独立日²;
    • 5:万圣节²;
    • 6:日本烟花节²;
    • 7:中国新年²;
    • 8:宰牲节²;
    • 9:盖伊·福克斯之夜²;
    • 10:圣伊什特万节²;
    • 11:加拿大日²;
    • 12:维多利亚日²;

    ¹:区域型(依据 Windows 设置中的系统区域触发);

    ²:区域型或基于赛道型(依据系统区域触发,或当赛道位于符合区域的国家时触发)。

    日本烟花节在 8 月举行,默认从 8 月 1 日到 3 日。要根据赛道所在的都道府县更改日期,请使用 [PARTICLES_FX] JAPAN_AUGUST_FESTIVALS_INTERVAL = 1, 3(默认值)。

    如果你还想看到其他节日,请告诉我。