Я сделал игру, в которой можно захватить собственный двор
Представьте: вы выходите из дома, обходите соседний квартал и возвращаетесь обратно. Телефон превращает пройденный маршрут в границу, а участок внутри неё становится вашей территорией.
Именно такую игру я начал делать в апреле.
Она называется GeoConquest. В ней реальная карта становится одним большим игровым полем, а вместо виртуальных армий по нему ходят сами игроки.
Начиналось всё несколько скромнее
11 апреля я впервые открыл работающую версию игры в браузере.
Выглядела она тогда так:
Основная идея уже существовала: игрок начинает с небольшого участка земли, выходит за его пределы и оставляет за собой временный след.
Если вернуться на свою территорию и замкнуть маршрут, след превращается в постоянную границу. Всё, что оказалось внутри петли, можно захватить.
Пока петля не замкнута, след уязвим. Другой игрок может наступить на него и сорвать незавершённый захват. Поэтому чем большую территорию пытаешься окружить, тем больше рискуешь.
В плане механики захвата я изначально рефался на paper.io, хотя дальше система претерпела множество изменений.
Базовый захват: игрок выходит со своей земли, прокладывает след и возвращается обратно. Отрезанная область становится территорией.
Но сначала нужно было выйти на улицу
Поначалу я проверял перемещение кнопками разработчика.
Это удобно: сидишь за компьютером, передвигаешь игрока по карте и смотришь, правильно ли создаётся след и закрашивается территория.
Но игра про ходьбу, которую тестируют кнопками, всё-таки остаётся немного теоретической.
26 апреля я наконец нормально запустил её на телефоне и пошёл гулять. Вышел со стартовой территории, прошёл небольшой круг и вернулся обратно. Маршрут замкнулся, а участок действительно закрасился.
Технически на экране появилось всего несколько маленьких многоугольников. Но впервые они возникли не из-за отладочных кнопок, а потому, что я физически прошёл этот маршрут.
Игра внезапно стала настоящей.
Так выглядел один из ранних экранов с результатами захвата. Саму первую прогулку я, увы, нормальным скриншотом не задокументировал.
Как неправильно поделить Землю
Вся карта GeoConquest состоит из шестиугольных ячеек — гексов. Но нынешняя система появилась не сразу.
Первую сетку я сделал самостоятельно. В Москве всё выглядело нормально, пока я не поехал в отпуск в Петербург и не обнаружил, что там играть становится проще и выгоднее.
Из-за широты размер ячеек менялся. Чем севернее находился игрок, тем меньше становились гексы (метров на диаметр). За одно и то же пройденное расстояние в Петербурге можно было захватить больше гексов, чем в Москве.
География неожиданно вмешалась в игровой баланс. Я же изначально задумывал worldwide-игру!
Я довольно долго пытался решить проблему внутри собственной системы. Нужно было выбрать правильную форму сетки, сохранить понятный размер клеток, научиться работать с разными масштабами и при этом не сломать уже существующие механики.
В итоге мучения закончились одним из самых больших и страшных рефакторингов проекта. Я перевёл игру на географическую систему H3 и фактически заново поделил на гексы весь игровой мир.
Внешне поменялись только шестиугольники (они стали... едва заметно искривлёнными). Внутри пришлось переделывать координаты, движение, маршруты, захваты, хранение территорий и отображение карты на разных масштабах.
После перехода я включил тестовых ботов. Машка и Alex долго ходили по карте, захватывали территории и пересекались, а я наблюдал, как новая сетка ведёт себя без ручного передвижения каждого игрока.
Машка и Alex — тестовые боты. Я оставлял их ходить по карте и смотрел, как они захватывают землю и взаимодействуют друг с другом.
История с Петербургом и переходом на H3 заслуживает отдельного поста. Несколько недель работы над фундаментом игры сложно честно уместить в пару абзацев, поэтому подробно расскажу об этом в следующей части.
Когда появились живые игроки
Постепенно в игре появились уровни и характеристики, задания, колонии, столкновения, недельные события и кланы.
Карта при этом остаётся общей и постоянной. Захваченный двор не исчезает после закрытия браузера. Другой игрок может увидеть его, атаковать или постепенно отрезать часть.
Самое интересное началось именно с появлением настоящих людей.
Один игрок захватил столько земли, что пришлось менять экономику опыта. Клан построил настолько длинную и тонкую территорию, что один из алгоритмов мог подвесить весь сервер больше чем на 20 секунд.
А когда участники кланов получили действительно общие территории и маршруты, пришлось решать, что произойдёт, если игроки из одного клана одновременно гуляют в разных городах или странах.
Простое правило «обошёл участок и замкнул петлю» осталось простым только для игрока. Серверу приходится разбираться в разветвлённых маршрутах, внутренних карманах, атаках, GPS-скачках и коллективной собственности.
Об этих историях я тоже постепенно расскажу.
GeoConquest уже работает в браузере и устанавливается на телефон как PWA:
Играть: https://geo.juju.ru
Патчноуты и короткие заметки разработки:
Telegram: https://t.me/GeoConquest
Буду рад посмотреть, какие территории построят пикабушники. Особенно те, к которым мой сервер пока морально не готов.




