55 lines
3.3 KiB
Markdown
55 lines
3.3 KiB
Markdown
# Time Engine — 游戏时钟、昼夜与灯光
|
||
|
||
Time Engine 驱动游戏内时钟,并让场景随之变化:同一个地方在清晨、正午、傍晚和深夜看起来都不一样。它还用灯和窗户为场景打光,天黑之后还给你一盏便携提灯。这是一个引擎模组:Cthangover 和图块 RPG 等游戏都包含它,它的成果体现在每一幕场景中,而不是某个独立界面上。
|
||
|
||
## 时钟
|
||
|
||
时间显示在屏幕左上角。现实中的一秒是游戏里的一分钟,因此游戏里的一小时在现实中只需一分钟。有些动作会立刻消耗游戏时间——例如烹饪或制作会按配方所需时间把时钟往前拨。
|
||
|
||
日历做了简化:每月 30 天,一年 12 个月。
|
||
|
||
## 白昼与黑夜
|
||
|
||
每个场景的背景都绘有四种状态——**清晨**、**白天**、**傍晚**和**深夜**——画面会在它们之间平滑过渡:
|
||
|
||
```text
|
||
00 ─ 夜晚 ─ 04 ⇢ 06 ─ 清晨 ─ 09 ⇢ 11 ─── 白天 ─── 17 ⇢ 19 ─ 傍晚 ─ 21 ⇢ 22 ── 夜晚 ── 24
|
||
(⇢ = 两种状态之间两小时的渐变过渡)
|
||
```
|
||
|
||

|
||
|
||
## 灯光
|
||
|
||
夜晚的场景除灯光外一片漆黑。窗户、蜡烛和灯在场景作者安放的位置发光,每盏灯都有自己的颜色、半径和强度。
|
||
|
||

|
||
|
||
**便携提灯。** 从 22:00 到 06:00,屏幕上方会出现一盏提灯。把它拖到场景上,就能照亮你想细看的地方。
|
||
|
||

|
||
|
||
## 给作者
|
||
|
||
**在场景里布灯**通过该场景剧本中的 `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 出现,而且只在界面包含它的游戏里出现。
|