Статус: Draft
Принцип
Весь рандом идёт через инъектируемый seeded-сервис IRngService (на базе System.Random / xorshift), а не через глобальный UnityEngine.Random. Забег детерминирован стартовым сидом: один сид → одинаковая генерация.
Зачем это критично (не только ради «начать по сиду»):
- Реплеи — бой переигрывается по логу команд + сиду;
- Сравнение AI-профилей — один и тот же бой честно прогоняется с разными профилями на одном сиде;
- Мультиплеер — синхронизация результатов между клиентами (host-authoritative).
Боевая симуляция при этом детерминирована (фиксированный тик, без Unity-физики, без UnityEngine.Random, детерминированный порядок итерации) — см. 5. Технологический стек и архитектура.
Возможность начинать забег по заданному сиду (ручной ввод / шаринг) сохраняется как фича.
Темы для описания
- Генерация карты акта (структура, узлы, развилки)
- Генерация наград после боя
- Генерация пула магазина
- Рандомизация ивентов
- Система сидов: ввод вручную, отображение, шаринг
- Воспроизводимость в мультиплеере (синхронизация рандома между клиентами)