August 2

Мы делаем ГИГАХРУЩ: браузерный survival horror без движка, ассетов и спокойной жизни

Канал проекта: @gigah_rush | Формат: Статья Teletype / Обзор проекта

Привет! Мы делаем ГИГАХРУЩ — браузерный survival horror / ARPG shooter про вылазки внутри безграничной 1024x1024 бетонной структуры.

Звучит как питч из папки «после этого нас точно забанят», поэтому сразу перейдём к технической части. Это не Unity WebGL, не Phaser, не Godot export, не React-обвязка вокруг canvas и не набор купленных ассетов с Unity Asset Store.

Игра собрана как один чистый браузерный билд на TypeScript/Vite, WebGL/canvas, с процедурными текстурами, процедурными спрайтами, процедурным звуком и плоскими структурами данных. Zero runtime dependencies.

Знакомство с Ольгой Дмитриевной и первые минуты

Игровой цикл: Зачем всё это?

Идея была простая и неприятная: сделать не красивую демку на три комнаты, а живой survival loop:

  1. Игрок готовится в жилой зоне (еда, вода, патроны, медицина, пропуска и документы).
  2. Выходит в вылазку на опасные и процедурные этажи.
  3. Встречает NPC, монстров, фракции, торговлю, квесты и САМОСБОР.
  4. Возвращается не в абстрактный хаб, а в мир, который помнит все последствия его поступков.

Это статья о том, как маленькая браузерная игра постепенно превратилась в инженерный мешок с WebGL-рейкастером, A-Life, процедурной генерацией, локальными сохранениями, самодельным HUD и тысячами проверок и правок.


Почему именно браузер?

Потому что необходимость установки убивает импульс. Человек увидел странную гифку или пост про САМОСБОР, нажал ссылку в Telegram, за секунду загрузил страницу — и уже через 10 секунд умер от твари в темном коридоре. Идеальный сценарий.

Инвентарь игрока

Но браузер сразу ставит жесткие рамки:

  • ❌ Нельзя рассчитывать на тяжелый движковый runtime.
  • ❌ Нельзя прятать долгую загрузку за лаунчером.
  • ❌ Нельзя раздать 500 МБ ассетов и надеяться, что игрок терпелив.
  • ❌ Нельзя забыть про Pointer Lock, Fullscreen, мобильные экраны и localStorage.

Базовое правило проекта: 0 сторонних runtime-библиотек, 1 браузерный билд, максимум данных и поведения из кода.


Мир как данные, а не сцена

Главная ошибка, которую хотелось не повторять — делать уровень как коллекцию "красивых 3D-объектов". Для линейного хоррора это приятно, но для системного выживача быстро превращается в мертвый декор.

В ГИГАХРУЩЕ мир описывается как клеточная поверхность (тороидальная матрица 1024x1024) с комнатами, коридорами, дверями, текстурами, контейнерами, сущностями и событиями.

Миникарта Жилого Этажа

Архитектурные слои:

  • core — хранит примитивные формы, математику тора и World.
  • data — реестры предметов, оружия, фракций, квестов, монстров.
  • gen — генераторы этажей, POI, комнат и расстановка содержимого.
  • systems — логика AI, боя, квестов, экономики, Самосбора и сохранений.
  • renderтолько рисует (не принимает никаких геймплейных решений).

WebGL-Рейкастинг вместо тяжелого 3D

Честный 3D-движок был бы красивее, но тяжелее и медленнее. Для ГИГАХРУЩА важнее не количество полигонов, а быстрота и четкость игрового решения:

  • Вижу ли я угрозу в коридоре?
  • Понимаю ли я, где укрытие?
  • Успеваю ли заблокировать гермодверь до входа тумана?
Стычка с Теневиком

Наш псевдо-3D рендер на WebGL с процедурными текстурами и спрайтами справляется с главным: передает атмосферу бесконечного бетонного лабиринта, дистанцию, туман, вспышки и опасность.


A-Life: Живой мир без "театра одного игрока"

Мы не хотели делать мир, где NPC спавнятся из воздуха за спиной игрока и исчезают, когда он отворачивается.

В ГИГАХРУЩЕ работает слой A-Life:

  • При старте генерируется пул персонажей с именами, характерами и фракциями.
  • На активном этаже материализуются живые NPC: их инвентарь, торговцы, ликвидаторы, отношения к игроку.
  • Смерть NPC перманентна. Если торговца задрала тварь во время Самосбора — его больше нет, а его труп останется лежать в том же коридоре.
  • Игрок подчиняется тем же правилам и социальной математике (карма, статус, отношения фракций), что и NPC.
Меню торговли

САМОСБОР — мутация пространства, а не просто "красный экран"

Самосбор — главная стихийная угроза ГИГАХРУЩА. Мы не стали делать его простой заставкой с красным фильтром.

При наступлении Самосбора происходит реальная мутация этажа:

  1. Звучит сирена, включается система оповещения.
  2. Игроку и NPC нужно успеть в герметичные блоки и задраить гермодвери.
  3. Происходит давление тумана, спавн аномальных сущностей.
  4. После окончания — мир перестраивается: меняются некоторые проходы, выбиваются двери, а не успевшие укрыться NPC погибают.
Начинается Самосбор

Что уже есть в игре и что дальше?

В текущей версии уже доступно:

  • 🛠️ Полная система подготовка/выживания (голод, жажда, патроны, аптечки, документы).
  • 🔫 Разнообразное оружие, аномальные PSI-способности и монстры.
  • 🏢 Процедурные этажи + авторские сюжетные зоны.
  • 🤝 Фракции, торговля, экономика и караваны.
  • ☣️ Полноценный Самосбор с укрытиями и перестройкой пространства.
  • 💾 Локальные сохранения в localStorage.
Лифт на следующий этаж

👥 Присоединяйтесь к разработке и следите за обновлениями:

Напишите в комментариях: как вам концепт чистокровного браузерного survival-horror без внешних движков?