Files
aego/engine/res/docs/time.ru.md
sanspie f22242e5aa
ci / release (push) Successful in 5m5s
ci-platforms / build (amd64, windows, windows-2022) (push) Skipped
ci-platforms / build (arm64, darwin, macos-15) (push) Skipped
ci-platforms / build (amd64, darwin, macos-15-intel) (push) Skipped
ci / checks (push) Successful in 4m41s
ci / build (amd64, linux, ubuntu-24.04) (push) Successful in 7m14s
Stage 11g2–11g3: registry texts, CLI and the site in Russian (D348)
The remaining editor strings and undo step names; component, field, enum, setting, diagnostic and Script API texts under schema.*, enum.*, setting.*, diag.* and api.*; the launcher, the in-game Settings View with a Language setting, the CLI and aego schema show --lang. Every documentation page has a .ru.md translation; the site has a full Russian tree with hreflang, a language switch and ru/llms.txt; aego docs check --lang ru. New doc.tutorial and doc.recipe icons. Fix: an animator restored by a rewind prepares its controller before the replayed step.
2026-10-25 15:31:22 +03:00

59 lines
4.5 KiB
Markdown

---
id: time
title: Время
---
# Время
![Режим игры: пауза, шаг, масштаб времени и временная шкала под панелью «Игра»](shots/play.png)
У каждой запущенной игры свои часы. Пауза, шаги и масштаб времени меняют их скорость, а каждый вид кода читает подходящее ему время.
| Время | Что это |
|---|---|
| Реальное | время по часам между кадрами, урезанное до `maxFrameDelta` (по умолчанию 0,1 с), чтобы зависший кадр или свёрнутое окно не дали огромного шага |
| Игровое | реальное × масштаб времени; 0 на паузе. Его читают `time.Delta()` и `time.Elapsed()`. |
| Фиксированное | постоянный шаг, `fixedHz` (по умолчанию 60). Каждый полный шаг запускает FixedUpdate и физику. За кадр выполняется не больше `maxFixedSteps` (4) шагов; остальные отбрасываются, и профилировщик считает их отброшенными тиками. |
| Редактора | собственное время редактора; оно не встаёт на паузу вместе с игрой |
Каждый мир считает свои кадры и фиксированные шаги. `time.Frame()` и `time.Tick()` возвращают те же числа, что показывают профилировщик и «Монитор событий».
## Пауза, шаг и масштаб
- **Пауза** останавливает игровое и фиксированное время. Отрисовка, оверлеи и редактор продолжают работать.
- **Шаг на кадр** выполняет один Update и те фиксированные шаги, что накопились для этого кадра: ноль или один.
- **Шаг на фиксированный тик** выполняет ровно один фиксированный шаг (FixedUpdate, физику, события столкновений) без Update.
- **Масштаб времени** от 0 до 8 задаёт, сколько игрового времени проходит за реальную секунду. Длина фиксированного шага не меняется, поэтому при 0,25 физика ведёт себя так же, как при 1, только медленнее.
Время на паузе не накапливается: после долгой паузы игра продолжается одним обычным кадром.
## Настройки проекта
Блок `engine` в `project.aego` задаёт пределы. Отсутствующее поле сохраняет значение по умолчанию.
engine {
fixedHz=60.0
maxFrameDelta=0.1
maxFixedSteps=4
}
## Системы
Система на Go выбирает, что делать на паузе, полем `Pause` в своём `SystemDesc`: `PauseNormal` (останавливается), `PauseAlways` (работает каждый кадр) или `PauseWhenPaused` (работает только на паузе). Режим паузы действует на фазы fixed и update; ввод и отрисовка работают всегда.
## Скрипты
@pause("always")
script PauseMenu {
func Update(dt float) {
if input.KeyPressed(input.KeyEscape) {
time.SetPaused(!time.IsPaused())
}
}
}
- `@pause("normal")` (по умолчанию): Update останавливается на паузе.
- `@pause("always")`: Update выполняется каждый кадр, на паузе и без неё, а `dt` — реальное время. Используйте это для меню и HUD.
- `@pause("whenPaused")`: Update выполняется только на паузе.
FixedUpdate всегда идёт по фиксированным шагам. `yield wait(s)` считает игровые секунды и стоит на паузе; `yield waitUnscaled(s)` считает реальные секунды и продолжает идти на паузе. `frames(n)` считает игровые кадры, `fixed(n)` — фиксированные шаги.