Files
owniverse/tests
Kirill cc2700d507 Add item description and testing framework for Owniverse
- Introduced `item_description.gd` to handle item descriptions with localization support.
- Implemented a testing script `test_descriptions.gd` to validate item description rendering and localization.
- Added a new template file for Russian localization.
- Included a large package file `owniverse.0.6.29-145.pck` for game assets.
- Ensured proper memory management in tests with fixture and dispose functions.
2026-09-15 22:01:45 +03:00
..

Проверки поэтапного переноса из Owniverse.U

Время: шаг 0,1 игрового года

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 охватывает все планеты.

godot --headless --path Owniverse.GI --script res://tests/test_stellar_rules.gd

Проверяются парсер планет, граница уязвимости, накопление редких исходов, сериализация остатков и постепенное преобразование реальной партии RD в TWD.

Создание планет подключено к ручному и автоматическому производству звёзд. Бласты обрабатываются как события, а не ресурс. Выжившие планеты переходят преемнику звезды пропорционально числу реально полученных преемников; при отсутствии преемника освобождаются. Локальное разрушение выполняется перед передачей.

Дополнительно проверяются частичная передача, альтернативные преемники, уровни разрушения 1/2, накопление слабых бластов, сохранения, ручное/автоматическое создание планет и несколько поколений за длинный шаг. Правила и формулы описаны в ../simulation_rules.md.

Описания выбранных объектов

godot --headless --path Owniverse.GI --script res://tests/test_descriptions.gd

Источник текста — Global.Templates[Global.Locale]. Заголовок берётся из Name, основной текст — из Description. Поддерживаются ключи с классом (RD.Entity.Description) и старые ключи без класса (RD.Description).

%valueN% заменяется значением переменной, имя которой записано в поле valueN этой строки. Поддерживаются amount, colored costs, lifespan, voids, he / h, metallicity, показатели энергии, плотности и скорости времени. amount1–amount4 сил пока отображаются как —; неизвестные непустые обозначения тоже дают —, пустые поля — пустую строку. [p] превращается в разделение абзацев, цветовые BBCode-теги сохраняются.

Доступные требования зелёные, недоступные красные. Для объектов со связанными экземплярами выводится доступное количество и серым общее; для планет — общее количество. Скорость изменения вычисляется по реальному времени и обновляется раз в 0,25 секунды. Доли He/H вычисляются из текущих свободных запасов; при пустой смеси показывается —. Металличность и плотность используют расчёт среды GI. Счётчики исходной материи и этики Unity в текущей GI отсутствуют и здесь не добавляются.