Интерактивная браузерная игра в стиле Transport Tycoon / SimCity для моделирования строительства, запуска и выхода на самоподдерживаемость замкнутой ИИ-экосистемы Фонда Изобилия.
Игра моделирует полный цикл: выбор участка → закупка оборудования → строительство → запуск → выход на самоподдерживаемость → экспансия. Игрок выступает в роли основателя Фонда Изобилия. Каждое здание имеет стоимость, энергопотребление/генерацию, износ и требует обслуживания.
Экономическая стратегия / Tycoon в реальном времени. Вид сверху на сеточной карте. Пиксельная эстетика в духе Transport Tycoon Deluxe.
Карта 30×20 клеток. 1 клетка = 1 гектар. 1 игровой день = ~1 секунда реального времени (на скорости 1×). Ускорение до 60×.
Построить самоподдерживающуюся экосистему: R ≥ 0.90, энергобаланс положительный, ≥2 роботов, контур замкнут. Получить Вердикт-отчёт.
Игрок размещает здания на сетке. Каждое занимает N×M клеток, имеет стоимость постройки, срок строительства, потребление/генерацию ресурсов, износ и срок службы.
| Здание | Размер | Стоимость | Строительство | Энергия | Срок службы | Рабочих |
|---|---|---|---|---|---|---|
| ☀️ Солнечное поле | 2×2 | ₽120M / 4 га | 6 мес | +1 МВт | 25 лет | 2 чел (стр.), 0 (экспл.) |
| 🌬️ Ветротурбина | 1×1 | ₽45M | 3 мес | +0.5 МВт | 20 лет | 1 чел (стр.) |
| 🔋 Накопитель (Li-ion) | 1×1 | ₽80M | 3 мес | ±5 МВт·ч ёмкость | 10 лет | 1 чел (стр.) |
| ⛏️ Добывающий комплекс | 2×2 | ₽200M | 9 мес | −2 МВт | 15 лет | 8 чел (стр.), 4 (экспл.) |
| 🏭 Завод-репликатор | 3×2 | ₽500M | 12 мес | −5 МВт | 20 лет | 15 чел (стр.), 6 (экспл.) |
| ♻️ Рециклинг-центр | 2×2 | ₽350M | 9 мес | −3 МВт | 15 лет | 10 чел (стр.), 3 (экспл.) |
| 🤖 Робо-депо | 1×1 | ₽150M | 4 мес | −0.5 МВт | 15 лет | 5 чел (стр.), 1 (экспл.) |
| 📦 Распределительный центр | 1×1 | ₽60M | 3 мес | −0.3 МВт | 20 лет | 3 чел (стр.) |
| 🏗️ Строительная база | 1×1 | ₽30M | 2 мес | −0.2 МВт | 30 лет | — |
| 🔌 ЛЭП (линия) | 1×1 | ₽5M | 1 мес | — | 40 лет | 2 чел |
| 🛣️ Дорога | 1×1 | ₽3M | 1 мес | — | 25 лет | 2 чел |
Генерируется солнцем/ветром. Потребляется всеми зданиями. Избыток → в накопители. Дефицит → отключение потребителей по приоритету. Сезонность: зима −40% генерации.
6 типов: Fe, Al, Cu, полимеры, керамика, электроника. Добывается комплексом или возвращается рециклингом. Склад неограничен (условно).
Завод производит: детали роботов, потребительские товары. Измеряется в условных единицах. Распределяется через центр.
Производственный брак + износ + потреблённые товары. Направляются в рециклинг. Непереработанное → потеря массы системы.
Стартовый капитал. Расходы: стройка, зарплаты, обслуживание. Доходы (фаза 2+): продажа избытка энергии в сеть.
Строители — временные бригады. Операторы — постоянный штат. С фазой 2+ персонал сокращается (замена роботами).
| Приоритет | Потребитель | Действие при дефиците |
|---|---|---|
| P0 | 🤖 Робо-депо (зарядка) | Не отключается никогда |
| P1 | 🏭 Завод (активное производство) | Снижение мощности до 50% |
| P2 | ♻️ Рециклинг | Снижение мощности до 30% |
| P3 | ⛏️ Добыча | Полная остановка |
| P4 | 📦 Распределение | Полная остановка |
Каждое здание имеет срок службы. Каждый месяц — +1 к счётчику износа. При 80% срока — эффективность падает на 20%. При 100% — здание выходит из строя. Ремонт роботами продлевает срок на +10%.
Производятся заводом (1 робот = 50 ед. продукции + 0.15 т сырья). Базируются в депо. Каждый робот: обслуживает ≤3 здания, имеет MTBF (5 000 ч по умолчанию). Может ремонтировать других роботов. Минимальный парк для замыкания — 2.
Размещение здания на карте → spent из бюджета → прогресс-бар (месяцы) → готово. Строительная база ускоряет стройку на 30% в радиусе 5 клеток. Дороги нужны для связи.
R не параметр, R — результат. Вычисляется каждый месяц: R = recovered / input. Зависит от: мощности рециклинг-центра, его износа, числа циклов для каждого материала, доступной энергии. Деградация: R_mat = sepEff × exp(−λ × cycles).
Всё строят люди. Роботов нет. Энергия только от станции. Персонал максимальный. Цель: построить завод + депо.
Завод произвёл ≥2 роботов. Часть обслуживания автоматизирована. Персонал сокращается. Цель: R > 0.85, энергобаланс +.
≥2 здоровых робота, R ≥ 0.90, энергия избыточна. Человек — только наблюдатель. Завод может копировать себя.
По достижении Фазы 2 (или банкротства/коллапса) генерируется отчёт:
| Метрика | Описание |
|---|---|
| ⏱️ Общее время | Сколько месяцев заняло строительство до замыкания контура |
| 💰 Общий бюджет | Потрачено ₽ всего (стройка + зарплаты + обслуживание) |
| 👷 Человеко-часы | Суммарно: строители × месяцы + операторы × месяцы |
| ⚡ Пиковая мощность | Максимальная генерация (МВт) |
| ♻️ R финальный | КПД переработки на момент замыкания |
| 🤖 Роботов произведено | Сколько всего роботов выпустил завод |
| 📦 Продукции роздано | Сколько единиц товаров ушло населению |
| 💀 Причина останова | Успех / банкротство / коллапс энергии / гибель роботов |
| 🏆 Итоговый вердикт | «Система жизнеспособна» / «Требует доработок» / «Провал» |
┌─────────────────────────────────────────────────────────┐ │ 💰 ₽2 450M │ ⚡ +3.2 / −2.8 МВт │ ♻️ R=0.93 │ 🤖 4/3 │ ⏱️ Март 2028 │ ├───────────────┬─────────────────────────────────────────┤ │ 🏗️ АРСЕНАЛ │ │ │ │ 🗺️ КАРТА 30×20 │ │ ☀️ Поле │ ☀️☀️ 🏭🏭🏭 ♻️♻️ │ │ 🌬️ Турбина │ ☀️☀️ 🏭🏭🏭 ♻️♻️ │ │ 🔋 Накоп. │ 🛣️🛣️🛣️🛣️🛣️ │ │ ⛏️ Добыча │ 🔋 🤖 │ │ 🏭 Завод │ ⛏️⛏️ │ │ ♻️ Рециклинг │ ⛏️⛏️ 📦 │ │ 🤖 Депо │ │ │ 📦 Центр │ │ │ 🏗️ Стройбаза │ │ │ 🛣️ Дорога │ │ │ 🔌 ЛЭП │ │ ├───────────────┴─────────────────────────────────────────┤ │ 📋 ЛОГ: [Март 2028] Завод произвёл робота #3 │ │ [Апр 2028] Робот #1 отремонтировал солнечное поле │ │ [Май 2028] ⚠️ R упал до 0.87 — проверьте рециклинг! │ └─────────────────────────────────────────────────────────┘
Один HTML-файл. Canvas 2D для карты. DOM для UI-панелей. Чистый JavaScript. Никаких фреймворков. Шрифт: Press Start 2P (CDN) для ретро-стиля.
Game loop: 60 FPS рендер + 1 игровой тик/сек. ECS-подход (Entity-Component): здания = entities, ресурсы = global state. Событийная система для лога.
Tile-based: 30×20 клеток × 32px = 960×640 px. Слои: земля → дороги/ЛЭП → здания → анимации. Перетаскивание (drag) и зум колёсиком.
localStorage: текущее состояние игры. Экспорт/импорт JSON. Автосохранение каждые 60 игровых дней.
index.html
├── <style> — все стили (тёмная тема, Transport Tycoon palette)
├── <canvas id="map"> — игровая карта
├── <div id="hud"> — статус-бар
├── <div id="arsenal"> — панель зданий
├── <div id="log"> — событийный лог
├── <div id="report"> — модалка финального отчёта
└── <script>
├── CONSTANTS — все таблицы (здания, ресурсы, цены)
├── GameState — глобальное состояние
├── Map — рендер карты (Canvas 2D)
├── Buildings — логика зданий
├── Resources — учёт ресурсов
├── Simulation — игровой цикл (тик)
├── UI — панели, логи, отчёты
└── main() — инициализация и game loop
Цель: 60 FPS на среднем ноутбуке. Максимум 200 зданий на карте. Оптимизация: рендер только видимых тайлов, dirty-флаги для перерисовки.
Разбито на 4 фазы разработки. Каждая задача — атомарна и тестируема.
| Фаза | Задач | Часов | Содержание |
|---|---|---|---|
| Фаза 1: Ядро и карта | 3 | ~4.5 | HTML-структура, canvas-рендер, game loop, время |
| Фаза 2: Здания и ресурсы | 3 | ~6 | Арсенал, размещение, логика зданий, ресурсы |
| Фаза 3: Роботы и bootstrap | 3 | ~4.5 | Роботы (производство/отказы/ремонт), фазы |
| Фаза 4: Отчёт и полировка | 5 | ~7 | HUD, лог, вердикт-отчёт, графика, баланс |
| ИТОГО | 14 | ~22 ч | Один HTML-файл, ~3000 строк кода |