Мы делаем ГИГАХРУЩ: браузерный 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:
- Игрок готовится в жилой зоне (еда, вода, патроны, медицина, пропуска и документы).
- Выходит в вылазку на опасные и процедурные этажи.
- Встречает NPC, монстров, фракции, торговлю, квесты и САМОСБОР.
- Возвращается не в абстрактный хаб, а в мир, который помнит все последствия его поступков.
Это статья о том, как маленькая браузерная игра постепенно превратилась в инженерный мешок с 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.
САМОСБОР — мутация пространства, а не просто "красный экран"
Самосбор — главная стихийная угроза ГИГАХРУЩА. Мы не стали делать его простой заставкой с красным фильтром.
При наступлении Самосбора происходит реальная мутация этажа:
- Звучит сирена, включается система оповещения.
- Игроку и NPC нужно успеть в герметичные блоки и задраить гермодвери.
- Происходит давление тумана, спавн аномальных сущностей.
- После окончания — мир перестраивается: меняются некоторые проходы, выбиваются двери, а не успевшие укрыться NPC погибают.
Что уже есть в игре и что дальше?
В текущей версии уже доступно:
- 🛠️ Полная система подготовка/выживания (голод, жажда, патроны, аптечки, документы).
- 🔫 Разнообразное оружие, аномальные PSI-способности и монстры.
- 🏢 Процедурные этажи + авторские сюжетные зоны.
- 🤝 Фракции, торговля, экономика и караваны.
- ☣️ Полноценный Самосбор с укрытиями и перестройкой пространства.
- 💾 Локальные сохранения в localStorage.
👥 Присоединяйтесь к разработке и следите за обновлениями:
- Telegram-канал: @gigah_rush — новости, чейнджлоги и гифки разработки.
- Играть в браузере: myindie.ru/games/game/gigahrush
Напишите в комментариях: как вам концепт чистокровного браузерного survival-horror без внешних движков?