Files

3.3 KiB
Raw Permalink Blame History

Time Engine — 游戏时钟、昼夜与灯光

Time Engine 驱动游戏内时钟,并让场景随之变化:同一个地方在清晨、正午、傍晚和深夜看起来都不一样。它还用灯和窗户为场景打光,天黑之后还给你一盏便携提灯。这是一个引擎模组:Cthangover 和图块 RPG 等游戏都包含它,它的成果体现在每一幕场景中,而不是某个独立界面上。

时钟

时间显示在屏幕左上角。现实中的一秒是游戏里的一分钟,因此游戏里的一小时在现实中只需一分钟。有些动作会立刻消耗游戏时间——例如烹饪或制作会按配方所需时间把时钟往前拨。

日历做了简化:每月 30 天,一年 12 个月。

白昼与黑夜

每个场景的背景都绘有四种状态——清晨、白天、傍晚和深夜——画面会在它们之间平滑过渡:

00 ─ 夜晚 ─ 04 ⇢ 06 ─ 清晨 ─ 09 ⇢ 11 ─── 白天 ─── 17 ⇢ 19 ─ 傍晚 ─ 21 ⇢ 22 ── 夜晚 ── 24
                  (⇢ = 两种状态之间两小时的渐变过渡)

同一场景——Cthangover 中别墅外的磨坊——在 07:00、13:00、18:00 和 23:30:温暖的清晨、明亮的正午、傍晚的暮色,以及亮起窗户的深夜。

灯光

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

23:33 的别墅外:只有窗户亮着;屏幕顶部的提灯图标就是便携提灯。

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

Cthangover 的厨房,被烛光和灯光照亮。

给作者

在场景里布灯通过该场景剧本中的 light_set 和一串灯光参数完成。位置用屏幕比例表示(0 到 1),因此适配任何窗口大小;每幕场景最多 10 盏灯,外加便携提灯:

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 出现,而且只在界面包含它的游戏里出现。