В мае мы показывали здесь ранний концепт своего браузерного сурвайвала ГИГАХРУЩ / GIGAH|RUSH. Тогда в комментариях многие советовали упаковать игру под HTML5-площадки, чтобы в неё можно было играть в один клик.
Мы прислушались к вашим отзывам. Спустя сотни коммитов, переписывание систем и прохождение кругов модерации, игра официально вышла на Пикабу Игры: https://games.pikabu.ru/game/gigakhrushch
Для нас как маленькой инди студии это был первый опыт вывода игры на платформу такого уровня. Хотим поделиться внутренней кухней: с какими неочевидными граблями пришлось столкнуться при интеграции и модерации.
Интеграция SDK в «чистый» проект без Unity/Godot
ГИГАХРУЩ написан полностью на чистом TypeScript/WebGL, без сторонних игровых движков. Текстуры, звуки и спрайты генерируются процедурно прямо на лету (поэтому весь билд весит менее 10 мегабайт и грузится мгновенно).
### Что представляет собой игра сейчас:
* **Вылазки в бетонной структуру:** Собираем снаряжение, берем контракт в жилом секторе и выходим в процедурные коридоры. Цель — выполнить задачу и вернуться живым.
* **Экология и A-Life:** NPC в игре живут своей жизнью, могут конфликтовать, спать, торговать и... погибать навсегда. Система не генерирует новых персонажей взамен убитых квестодателей.
* **САМОСБОР:** Случайное событие, которое превращает рядовую вылазку в ад. Гермодвери закрываются, коридоры заполняются едким туманом, а монстры лезут изо всех щелей.
* **Облачные сохранения:** Работают прямо через ваш аккаунт Пикабу. Можно начать играть на ПК на работе, а продолжить дома с телефона.
### Что по технологиям:
TypeScript, WebGL-рейкастер для отрисовки псевдо-трехмерного пространства, процедурная генерация звука и графики. Никаких гигабайтных библиотек.
Сегодня мы представляем новую миссию немецкой кампании — «Наступление 2-го танкового корпуса СС», которая заменяет устаревший сценарий «Пантеры под Курском» и открывает главу, посвящённую операции «Цитадель». Автор сценария и игрового дизайна — ведущий разработчик Александр Жиляев (Tyrion).
Миссия воссоздаёт события первого дня наступления на южном фасе Курской дуги — 5 июля 1943 года. В рамках операции 4-я танковая армия под командованием генерал-полковника Германа Гота наносила удар вдоль шоссе Белгород — Обоянь — Курск. На этом направлении ей противостояла 6-я гвардейская армия под командованием генерал-лейтенанта И. М. Чистякова.
1/6
Правофланговой ударной группировкой выступал 2-й танковый корпус СС под командованием обергруппенфюрера СС Пауля Хауссера, задачей которого было прорваться к излучине реки Псёл и району Прохоровки. Корпус состоял из трёх элитных дивизий: — 1-я моторизованная дивизия СС «Лейбштандарт Адольф Гитлер» (бригадефюрер Теодор Виш) — главный удар на левом фланге; — 2-я моторизованная дивизия СС «Рейх» (группенфюрер Вальтер Крюгер) — наступление справа; — 3-я моторизованная дивизия СС «Мёртвая голова» (группенфюрер Макс Симон) — находилась в резерве.
Поддержку с воздуха осуществлял 8-й авиакорпус люфтваффе.
На участке наступления корпуса СС отсутствовали значительные возвышенности, что облегчило продвижение по сравнению с соседним 48-м танковым корпусом генерала Отто фон Кнобельсдорфа. Уже в предрассветные часы сапёры проделали проходы в минных полях и подорвали стенки противотанковых рвов. В 05:15 началась артиллерийская подготовка по позициям 52-й гвардейской стрелковой дивизии генерал-майора И. М. Некрасова на рубеже Стрелецкое — хутор Березов, постепенно перенося огонь вглубь обороны. Дополнительно 88 пикирующих бомбардировщиков нанесли удар по району Березова.
1/9
К полудню эсэсовские части прорвали передний край советской обороны. Около 14:00 боевые группы «Лейбштандарта» и «Рейха» столкнулись с контратакой 230-го отдельного танкового полка (32 средних танка М3Ср «Ли» и 7 лёгких М3Л «Стюарт»), которую успешно отразили. К 16:00 части 151-го гвардейского стрелкового полка оказались в окружении, а 153-й гвардейский стрелковый полк начал отход на второй оборонительный рубеж и к западному берегу реки Ворскла. В 17:50, после упорных боёв, подразделения «Лейбштандарта» овладели Быковкой, преодолев первый армейский рубеж обороны. К наступлению ночи эсэсовцы достигли Яковлево, где располагались позиции 51-й гвардейской стрелковой дивизии — второй армейский рубеж.
Одновременно боевая группа «Мёртвой головы» нанесла фланговый удар на восток против 375-й стрелковой дивизии. Однако командование 23-го гвардейского стрелкового корпуса (генерал-майор П. П. Вахрамеев) своевременно ввело в бой 96-ю отдельную танковую бригаду, сорвав планы немцев по охвату правого фланга.
Хотя войска Хауссера продвигались быстрее, чем 48-й танковый корпус, они не уложились в первоначальные сроки оперативного плана: к концу дня требовалось выйти к переправам у излучины Псёла, чего достичь не удалось. Прорыв первого армейского рубежа занял около 17 часов.
В рамках игрового процесса миссия служит тактическим введением в операцию «Цитадель»: игрок управляет теми же подразделениями, которые будут задействованы в следующей миссии главы — «Прохоровка». Это позволяет сохранить преемственность повествования и обеспечить исторически последовательное развитие кампании.
Мы продолжаем уверенно двигаться к релизу игры, но специалистов по 2д и 3д-графике по прежнему не хватает. Поэтому мы ищем помощи у тех, кто владеет навыками работы в фотошопе и 3д-редакторах. Если вы обладаете необходимыми навыками или знаете того, кто обладает, то свяжитесь с нами любым способом, можете сразу писать в личку руководителю сообщества (https://vk.com/gzm_game).
Полностью переделано начало игры и добавлено полчаса геймплея!
- Убран сон-бой с Ржавилами, который вызывал путаницу и неоднозначные впечатления у игроков
- Теперь игра начинается с новой сюжетной сессии в стиле D&D (а точнее в стиле “Летадлы и Бункеры”), воображаемого приключения, совмещённого с обучением. После этого игра возвращается к привычному формату.
Содержит: - Новые спутники (священница, монстры и рейдеры) - Новые карты из их колод - Новые события - Новые враги (включая мерзкого босса и его “дракона”) - Новый формат истории — комикс перед началом боя
Краткий апдейт по Silent Throne. На этой неделе в основном занимался меню паузы и сохранениями. Плюс поправил ESC — раньше пауза открывалась, но не всегда закрывалась из‑за порядка проверок в коде.
Пауза (ESC):
закрывает открытые окна (карта, инвентарь, журнал, навыки), потом ставит паузу;
на паузе стоят мобы, ГГ и торговцы, остальной UI работает.
Сохранения:
быстрые (F5) и ручные — отдельно;
в списке: комната, кратко по квесту, дата и время;
F9 — загрузка быстрого сейва;
автосохранение раз в 10 минут (можно выключить в настройках).
Настройки — в паузе и в главном меню: управление (переназначение клавиш, кроме 1–9 на хотбар) и автосохранение.
UI — заменил подложку для всех окон (инвентарь, журнал, навыки, диалог, карта, пауза, настройки).
Правил мелкие баги и упущенные моменты со скилами было много лишнего, где то вообще не инициализирован скрипт скилла ГГ, раздул миникарту теперь она может проектировать мир.
Добавил мобов все что были, осталось только протестить их баланс.
Дальше начну наполнять различным шмотьем да побрякушками.
Что уже есть в игре на данный момент:
2D-слэшер, ближний бой + магия, стамина, HP, мана, XP
Представьте: вы выходите из дома, обходите соседний квартал и возвращаетесь обратно. Телефон превращает пройденный маршрут в границу, а участок внутри неё становится вашей территорией.
Именно такую игру я начал делать в апреле.
Она называется GeoConquest. В ней реальная карта становится одним большим игровым полем, а вместо виртуальных армий по нему ходят сами игроки.
Так сейчас выглядит часть общей карты: территории принадлежат разным игрокам и кланам.
Начиналось всё несколько скромнее
11 апреля я впервые открыл работающую версию игры в браузере.
Выглядела она тогда так:
Первый работающий вариант. До нынешней карты ему предстояло пережить несколько больших переделок.
Основная идея уже существовала: игрок начинает с небольшого участка земли, выходит за его пределы и оставляет за собой временный след.
Если вернуться на свою территорию и замкнуть маршрут, след превращается в постоянную границу. Всё, что оказалось внутри петли, можно захватить.
Пока петля не замкнута, след уязвим. Другой игрок может наступить на него и сорвать незавершённый захват. Поэтому чем большую территорию пытаешься окружить, тем больше рискуешь.
В плане механики захвата я изначально рефался на paper.io, хотя дальше система претерпела множество изменений.
Базовый захват: игрок выходит со своей земли, прокладывает след и возвращается обратно. Отрезанная область становится территорией.
Но сначала нужно было выйти на улицу
Поначалу я проверял перемещение кнопками разработчика.
Это удобно: сидишь за компьютером, передвигаешь игрока по карте и смотришь, правильно ли создаётся след и закрашивается территория.
Но игра про ходьбу, которую тестируют кнопками, всё-таки остаётся немного теоретической.
26 апреля я наконец нормально запустил её на телефоне и пошёл гулять. Вышел со стартовой территории, прошёл небольшой круг и вернулся обратно. Маршрут замкнулся, а участок действительно закрасился.
Технически на экране появилось всего несколько маленьких многоугольников. Но впервые они возникли не из-за отладочных кнопок, а потому, что я физически прошёл этот маршрут.
Игра внезапно стала настоящей.
Так выглядел один из ранних экранов с результатами захвата. Саму первую прогулку я, увы, нормальным скриншотом не задокументировал.
Как неправильно поделить Землю
Вся карта GeoConquest состоит из шестиугольных ячеек — гексов. Но нынешняя система появилась не сразу.
Первую сетку я сделал самостоятельно. В Москве всё выглядело нормально, пока я не поехал в отпуск в Петербург и не обнаружил, что там играть становится проще и выгоднее.
Из-за широты размер ячеек менялся. Чем севернее находился игрок, тем меньше становились гексы (метров на диаметр). За одно и то же пройденное расстояние в Петербурге можно было захватить больше гексов, чем в Москве.
География неожиданно вмешалась в игровой баланс. Я же изначально задумывал worldwide-игру!
Я довольно долго пытался решить проблему внутри собственной системы. Нужно было выбрать правильную форму сетки, сохранить понятный размер клеток, научиться работать с разными масштабами и при этом не сломать уже существующие механики.
В итоге мучения закончились одним из самых больших и страшных рефакторингов проекта. Я перевёл игру на географическую систему H3 и фактически заново поделил на гексы весь игровой мир.
Внешне поменялись только шестиугольники (они стали... едва заметно искривлёнными). Внутри пришлось переделывать координаты, движение, маршруты, захваты, хранение территорий и отображение карты на разных масштабах.
После перехода я включил тестовых ботов. Машка и Alex долго ходили по карте, захватывали территории и пересекались, а я наблюдал, как новая сетка ведёт себя без ручного передвижения каждого игрока.
Машка и Alex — тестовые боты. Я оставлял их ходить по карте и смотрел, как они захватывают землю и взаимодействуют друг с другом.
История с Петербургом и переходом на H3 заслуживает отдельного поста. Несколько недель работы над фундаментом игры сложно честно уместить в пару абзацев, поэтому подробно расскажу об этом в следующей части.
Когда появились живые игроки
Постепенно в игре появились уровни и характеристики, задания, колонии, столкновения, недельные события и кланы.
Карта при этом остаётся общей и постоянной. Захваченный двор не исчезает после закрытия браузера. Другой игрок может увидеть его, атаковать или постепенно отрезать часть.
Самое интересное началось именно с появлением настоящих людей.
Один игрок захватил столько земли, что пришлось менять экономику опыта. Клан построил настолько длинную и тонкую территорию, что один из алгоритмов мог подвесить весь сервер больше чем на 20 секунд.
А когда участники кланов получили действительно общие территории и маршруты, пришлось решать, что произойдёт, если игроки из одного клана одновременно гуляют в разных городах или странах.
Простое правило «обошёл участок и замкнул петлю» осталось простым только для игрока. Серверу приходится разбираться в разветвлённых маршрутах, внутренних карманах, атаках, GPS-скачках и коллективной собственности.
Об этих историях я тоже постепенно расскажу.
GeoConquest уже работает в браузере и устанавливается на телефон как PWA:
В нашей вселенной будет целая линейка уникальных роботов!
Одни прибыли на Проксиму с первыми людьми (~800 лет назад) и требовались для обслуживания и обеспечения безопасности Бункеров. Другие же производились уже под поверхностью Проксимы ИИ убийцей, что увидело в человечестве угрозу 👀
Центурион (именно такое название носит этот замечательный робот), имеет единую ходовую, но разные модули на борту.
Макс(наш 3D-работяга) постепенно доводит до нужного вида базу, после чего возьмётся за новые модули. А после, еще и в разном стиле всё сделает!!! Да-да, это пугающе много работы, но Макса не пугают сложности и испытания. Настоящий авантюрист!
А вот про сам Центурион, его роль и лор расскажем уже когда модель будет полностью готова