37 lines
4.2 KiB
Markdown
37 lines
4.2 KiB
Markdown
|
|
# Проверки поэтапного переноса из Owniverse.U
|
||
|
|
|
||
|
|
## Время: шаг 0,1 игрового года
|
||
|
|
|
||
|
|
```sh
|
||
|
|
godot --headless --path Owniverse.GI --script res://tests/test_time.gd
|
||
|
|
```
|
||
|
|
|
||
|
|
Команда выполняется из общей папки проектов. Тесты используют искусственные состояния; сохранение игрока не читается и не перезаписывается.
|
||
|
|
|
||
|
|
Проверяются границы десятых долей года, производство ресурсов на этих границах, накопление дробного остатка, скорости 1–10 000 лет/сек, продолжение после загрузки, недопустимые интервалы и миграция сохранений.
|
||
|
|
|
||
|
|
Схема состояния `0.1.1` хранит:
|
||
|
|
|
||
|
|
- `time.datetime` — накопленный возраст, включая необработанную дробную часть;
|
||
|
|
- `time.year` — последний рассчитанный возраст с точностью до десятой доли года.
|
||
|
|
|
||
|
|
Сохранения `0.1.0` проходят старую проверку целого года. При загрузке стадией игры оставшийся промежуток до последней десятой рассчитывается ровно один раз, после чего применяется версия `0.1.1`. Оставшаяся часть меньше 0,1 года сохраняется.
|
||
|
|
|
||
|
|
## Согласованные правила эволюции
|
||
|
|
|
||
|
|
Сохраняются постепенные интервальные окна GI: начало преобразования — через `lifespan`, длительность окна — `lifespan / 40` при `lifespan > 10`, иначе `lifespan`.
|
||
|
|
|
||
|
|
Вероятностные исходы используют накопление дробного остатка GI, без случайного округления. Этот же подход выбран для будущего создания планет. Шансы планет записаны долями (`0.01` = 1%), а альтернативные исходы звёзд — процентами (`%0.1` = 0.1%). Парсер планет сохраняет дроби и поддерживает один элемент без `&`.
|
||
|
|
|
||
|
|
Уязвимость к бластам читается из `blastability` таблицы GI: HP, EON и цивилизации до C1.2 включительно; C1.3 и выше неуязвимы. Это ограничение относится к бластам уровня 1; локальное уничтожение планет уровня 2 в Unity охватывает все планеты.
|
||
|
|
|
||
|
|
```sh
|
||
|
|
godot --headless --path Owniverse.GI --script res://tests/test_stellar_rules.gd
|
||
|
|
```
|
||
|
|
|
||
|
|
Проверяются парсер планет, граница уязвимости, накопление редких исходов, сериализация остатков и постепенное преобразование реальной партии RD в TWD.
|
||
|
|
|
||
|
|
Создание планет подключено к ручному и автоматическому производству звёзд. Бласты обрабатываются как события, а не ресурс. Выжившие планеты переходят преемнику звезды пропорционально числу реально полученных преемников; при отсутствии преемника освобождаются. Локальное разрушение выполняется перед передачей.
|
||
|
|
|
||
|
|
Дополнительно проверяются частичная передача, альтернативные преемники, уровни разрушения 1/2, накопление слабых бластов, сохранения, ручное/автоматическое создание планет и несколько поколений за длинный шаг. Правила и формулы описаны в `../simulation_rules.md`.
|