# Time Engine — 游戏时钟、昼夜与灯光 Time Engine 驱动游戏内时钟,并让场景随之变化:同一个地方在清晨、正午、傍晚和深夜看起来都不一样。它还用灯和窗户为场景打光,天黑之后还给你一盏便携提灯。这是一个引擎模组:Cthangover 和图块 RPG 等游戏都包含它,它的成果体现在每一幕场景中,而不是某个独立界面上。 ## 时钟 时间显示在屏幕左上角。现实中的一秒是游戏里的一分钟,因此游戏里的一小时在现实中只需一分钟。有些动作会立刻消耗游戏时间——例如烹饪或制作会按配方所需时间把时钟往前拨。 日历做了简化:每月 30 天,一年 12 个月。 ## 白昼与黑夜 每个场景的背景都绘有四种状态——**清晨**、**白天**、**傍晚**和**深夜**——画面会在它们之间平滑过渡: ```text 00 ─ 夜晚 ─ 04 ⇢ 06 ─ 清晨 ─ 09 ⇢ 11 ─── 白天 ─── 17 ⇢ 19 ─ 傍晚 ─ 21 ⇢ 22 ── 夜晚 ── 24 (⇢ = 两种状态之间两小时的渐变过渡) ``` ![同一场景——Cthangover 中别墅外的磨坊——在 07:00、13:00、18:00 和 23:30:温暖的清晨、明亮的正午、傍晚的暮色,以及亮起窗户的深夜。](assets/day-cycle.jpg) ## 灯光 夜晚的场景除灯光外一片漆黑。窗户、蜡烛和灯在场景作者安放的位置发光,每盏灯都有自己的颜色、半径和强度。 ![23:33 的别墅外:只有窗户亮着;屏幕顶部的提灯图标就是便携提灯。](assets/night.jpg) **便携提灯。** 从 22:00 到 06:00,屏幕上方会出现一盏提灯。把它拖到场景上,就能照亮你想细看的地方。 ![Cthangover 的厨房,被烛光和灯光照亮。](assets/kitchen-lights.jpg) ## 给作者 **在场景里布灯**通过该场景剧本中的 `light_set` 和一串灯光参数完成。位置用屏幕比例表示(0 到 1),因此适配任何窗口大小;每幕场景最多 10 盏灯,外加便携提灯: ```scenario light_set [{"x":0.673,"y":0.461,"radius":500,"influence":1,"color":"#ffff00"},{"x":0.135,"y":0.315,"radius":500,"influence":1,"color":"#ffff00"}] ``` - `x`、`y` — 相对宽度和高度的位置比例; - `radius` — 灯光照多远,以像素计; - `influence` — 强度,从 0 到 1; - `color` — 十六进制颜色。 空的 `light_set` 会移除场景的灯。Editor Tools 的灯光编辑器用鼠标布灯,并替你写好这行命令。当你切换到不使用深度光照的场景时,`lighting.clear_map` 场景动作会把上一幕的深度光照关掉。 **适配夜色的背景。** 背景要正确受光,需要旁边有一张深度图,命名方式是在图片名后加 `_depth`(例如 `bar.png` 和 `bar_depth.png`)。背景还可以带一张 `_albedo` 伴生图。没有这些图,场景灯光就没有可以附着的外形。 **其他模组**也读同一座时钟:RPG 图块地图与背景共用同一天,时间变化每游戏分钟向所有模组广播一次。 ## 出现问题时 1. **场景在深夜依然明亮。** 它的背景没有深度图,或者场景没有使用随时间变化的色调。 2. **夜里没有提灯。** 它只在 22:00 到 06:00 出现,而且只在界面包含它的游戏里出现。