"Хочешь Ловушку?" — мой студенческий опыт создания сетевого платформера

Играть всегда веселее с друзьями, особенно когда можно немного поиздеваться над ними. Именно такой была идея моей игры — сетевого платформера, где каждый ставит ловушки, платформы и модификаторы, чтобы усложнить победу другим и облегчить себе. А ещё вы можете вселяться в эти ловушки — например, в мину, чтобы неожиданно напрыгнуть на соперника. Звучит весело, правда?

Трейлер для ВУЗа.

Откуда взялась идея

Эта игра — учебный проект и нужно было быстро определяться с концепцией, чтобы успеть хоть что-то сделать за 2 месяца.
Вдохновением для меня стала игра Ultimate Chicken Horse. Я хотел сделать что-то более динамичное и добавить возможность вселяться в ловушки — это должно было добавить весёлый хаос в игровой процесс. Так родилась «Хочешь Ловушку?».

Как всё начиналось

Разработка велась на Unreal Engine — я уже был знаком с этим движком, поэтому решил использовать его. Основная часть кода писалась на Blueprints, иногда подключал C++. Сетевой код строился по системе peer-to-peer, потому что у меня не было бюджета на аренду серверов. Мне помогали девочки-художницы — они сделали модели главного героя, ассеты для карты и ловушки.

Вот они, слева направо.
Вот они, слева направо.

Где я столкнулся с проблемами

Первый раз работая с сетевым кодом, я понял, что это настоящее испытание. Я бы не сказал, что это прям сложно, но требует понимать как данные передаются и быть очень последовательным в написании кода.
Первое время у меня постоянно были баги — то, у одного игрока пропадает предмет, то игроку начнут падать очки с множителем в 2 раза, то хост станет невидимым...
Я стал логировать каждую мелочь, запускать игру на пару секунд и читать страницы логов, вникая почему в этот раз что-то не получилось.
Для меня как инди-разраба и геймдизайнера, который в основном пишет в блюпринтах, это был совершенно новый опыт, хаха.
Как и написаниие статей нейронкой, но это требование ВУЗа, что поделать.
Игра работает, но peer-to-peer соединение (ожидаемо) оказалось нестабильным, часто происходят фризы, из-за которых играть становится некомфортно.
Причем даже в пустом анриловском проекте, при стандартных настройках репликации, персонажи будут дергаться и ловить рассинхроны.

Я понял, что многие игры, где ты хостишь лобби и играешь с друзьями, на самом деле используют свои серверы, имитируя процесс хостинга. Без них стабильность обеспечить сложно, а у меня не было ресурсов на это.

Когда сидишь все майские праздники и пытаешься настроить репликацию построек.

Геймдизайн и что хотелось бы улучшить

Я уделял очен мало времени геймдизайну — ловушки получилсь скучные, лвл-дизайн примитивный, а времени тестить это всё не было.
Реально, из всех ловушек действительно интересной получилась только мина — когда соперник вселяется в неё и пытается прыгнуть на тебя, это страшно и весело одновременно. Ещё игре не хватило взаимодействия между игроками — например, возможности толкаться или как-то влиять друг на друга.

Что я вынес из этого опыта

Сетевой код писать утомительно долго и сложно, особенно без опыта. Теперь я лучше понимаю, как устроены сетевые игры и почему так важна инфраструктура серверов. Этот проект научил меня планировать реалистичные сроки и не бояться признавать свои ограничения.

Что дальше?

«Хочешь Ловушку?» уже год лежит на полке. Иногда хочется вернуться, но объём работы пугает. В следующем учебном году мне предстоит защищать диплом, и, возможно, этот проект станет моей дипломной работой. Посмотрим, что из этого выйдет.
При желании можете бесплатно скачать её на итче.

"Хочешь Ловушку?" — мой студенческий опыт создания сетевого платформера

Если тебе понравится такой стиль и структура, могу помочь дополнить статью деталями, сделать её более живой и читабельной. Как думаешь?

1
1
3 комментария