Veliri: Сессионные игры

Veliri: Сессионные игры

Привет дтф, в этом году я решил немного отпустить ММОРПГ и доделать сессионные бои дабы релизнуть хоть что-нибудь >_<.

Veliri: Сессионные игры

Пройти так сказать весь путь от начала до конца на более простом проекте. На разработку ушло примерно +-3 месяца после основной работы с использованием всех наработок из ММО.

Поиграть можно вот тут:

Veliri: Сессионные игры

О проекте

Игра представляет из себя классическую сессионную игру с несколькими режимами боя.

Игра полностью самостоятельная (то есть ММОРПГ и это 2 разных приложения, в разных репозиториях и разной структурой бд), но выросли из одной кодовой базы и все нововведения включая всю боевку с высокой долей вероятности перетечет в мморпг.

Вообще я даже думал сделать рескин на какие-нить танки второй мировой и выкатить как отдельный проект, но потом вспомнил что я нищий и ленивый :(

На текущий момент я запустил ее в вк маркете, протестировать на реальных пользователях и потом на другие соцсети покидать.

Veliri: Сессионные игры

Если в игре появится какая никакая аудитория то можно будет развивать дальше, дальнейшее развитие будет наверно двигаться в кооп-пве режимы (может даже сюжет) и рейтинговые бои. Ну а если игра умрет то будет неплохой проект что бы выпендриваться на собеседованиях и куча наработок :)

Основной геймплей

Ну тут в целом как и во всех сессионных играх:

  • человек конфигурирует свой транспорт
  • нажимает кнопку "в бой"

  • его кидает в очередь "Матчмекера"
  • "Матчмекер" формирует команды
  • "Матчмекер" генерирует карту и создает "сессию" боя.

  • игроки там успешно воюют (или нет)
  • получают очки опыта и ресурсы на которые он может сделать новое снаряжение или продать на рынке.
  • колесо дает новый оборот

Также в игре присутствует стандартный набор механик и доната.

  • покупка кредитов (хотя их можно и на рынке наторговать) для рынка и скины/аватарки

  • ежедневные задания
  • прем. акк. который кстати тоже можно купить/продать на рынке.

Ассортимент скинов и аватарок на текущий момент довольно скромный)

Veliri: Сессионные игры

Контент

На текущий момент в игре не очень много игрового контента, если в цифрах то: 12 видов оружия, 12 корпусов, 8 карт, 19 типов снаряжения, 2 режима.

Снаряжение

В игре есть боевое снаряжение разной степени полезности, вот самые интересные из них:

гранаты

боевые дроны

разведывательные дроны

турели

щиты

невидимость/невидимость на радаре

мины, ловушки

Вооружение

Переработал вооружение сейчас в игре 12 типов оружия с разными механиками.

Я не стал пока делать разные уровни одного и того же оружия, возможно время еще придет)

Баллистика:

  • пулемёт
  • дробовик
  • мортира (что то типо арты ¯\_(ツ)_/¯)
  • "просто пушка"

Лазерное оружие:

  • лазерное ружьё
  • лазерный дробовик
  • лучевой лазер
  • лазер с зарядом

Ракетное вооружение:

  • Прямолетящие ракеты
  • Управляемые мышкой ракеты
  • Ракеты с захватом цели
  • Ракеты которые сами находят цель если она недалеко.

Как можно заметить на гифках некоторые типы оружие теперь отталкивает корпуса при попадании или от взрывной волны.

Корпуса

В игре 3 разных типа корпуса которые различаются шасси и общим направлением характеристик.

Колёса - ну тут все стандартно), нельзя поворачиваться на месте, движение назад медленное.
Гусеницы - позволяют крутиться на месте и движение назад по всем характеристикам как и движение вперед.
Антиграв - особенность управления что он всегда поворачивается за мышкой и имеет боковой ход.

Рынок

Как и в ммо в игре есть свободный рынок, то есть заполнять его будут сами игроки. Обмен на рынке ведется за “кредиты”, их можно получить продавая на рынке другим игрокам предметы, ежедневными заданиями и донат.

За каждую продажу рынок взимает комиссию 10%

Veliri: Сессионные игры

Баланс

Баланс корпусов я рандомно накидал в гугл таблице, оружие/снаряжение вообще на глаз и через плейтесты балансировал :), но спустя N количество итераций там все +- прилично, хотя есть перекосы (перекосы баланса это вообще фишка сессионных игр, а не проблема)

Veliri: Сессионные игры

С экономикой все примерно так же только таблица немного побольше)

Veliri: Сессионные игры

Оптимизация клиента

Тут всё не так радужно хотя я добился чтобы игра была играбельной на слабых ноутбуках со встроенной видеокартой. Тестировал на “asus t101h” и на “lenovo ideapad s145-15ast на amd a6”.

Основная просадка производительности происходила из за использовании в клиенте callback’ов (включая setInterval(), setTimeout()) из за чего внутренний планировщик js не пойми куда сливал cpu time (я не являюсь специалистом js так что не до конца понимаю как тут все работает :)).

Veliri: Сессионные игры

Почти всё callback’и я перетащил на планировщик самого phaser, остались ток callback’и вебсокета и парсера бинарный данных. И стало получше:

Veliri: Сессионные игры

Правда игроки с разрешением экрана больше чем 1920x1080 сообщили о проблемах в фулскрине.

Оптимизация бекенда

На синтетических тестах (а реальных тестов нет) пк на основе ЦПУ ryzen 2700x, вытянет 300-400 игроков/ботов одновременного онлайна. Сейчас все крутиться в облаках на vds серверах, там число думаю будет побольше.

Veliri: Сессионные игры

Однако теперь это не монолит сервер, а состоит из 2 логических частей.

1) роутер, к нему подключаются игроки, он отвечает за очередь, создание боев и отправку сообщений из боевых нод. На нём ещё крутиться все сервисы лобби (инвентарь, магазин, крафт и тд) и работа с бд. Является узким местом как по трафику так и по цпу, но я верю что все будет хорошо)

2) нода для боев, тут и происходят бои (то есть коллизии, баллистика, движение, ии и все такое), на одной ноде может быть одновременно запущено несколько боёв. И этих нод может быть много.

Связь между роутером и нодами осуществляется по rpc.

В общем идея не нова, но я это не заложил изначально и мне было больно разделять. В упрощенном варианте это выглядит как то так:

Veliri: Сессионные игры

Таким образом если в мою игру внезапно кто то будет играть и я присяду смогу горизонтально масштабировать сервера, до тех пока будет хватать интернет канала и денях (но это совсем другая история).

Что в итоге

Ну сейчас в игре зарегистрировано 38 человек и сыграно 205 боев (150 боев наиграл 1 игрок), мне уже накидали кучу багов которые я исправил, нашел несколько багов о которых никто не знает, сервера не разу не упали по причине ошибок.

Буду благодарен если кто то поиграет и отпишет понравилось/не понравилось.

Veliri: Сессионные игры
1414
1 комментарий

Эффекты выстрелов хорошо смотрятся)

1
Ответить