"Хочешь Ловушку?" — мой студенческий опыт создания сетевого платформера
Играть всегда веселее с друзьями, особенно когда можно немного поиздеваться над ними. Именно такой была идея моей игры — сетевого платформера, где каждый ставит ловушки, платформы и модификаторы, чтобы усложнить победу другим и облегчить себе. А ещё вы можете вселяться в эти ловушки — например, в мину, чтобы неожиданно напрыгнуть на соперника. Звучит весело, правда?
Откуда взялась идея
Эта игра — учебный проект и нужно было быстро определяться с концепцией, чтобы успеть хоть что-то сделать за 2 месяца.
Вдохновением для меня стала игра Ultimate Chicken Horse. Я хотел сделать что-то более динамичное и добавить возможность вселяться в ловушки — это должно было добавить весёлый хаос в игровой процесс. Так родилась «Хочешь Ловушку?».
Как всё начиналось
Разработка велась на Unreal Engine — я уже был знаком с этим движком, поэтому решил использовать его. Основная часть кода писалась на Blueprints, иногда подключал C++. Сетевой код строился по системе peer-to-peer, потому что у меня не было бюджета на аренду серверов. Мне помогали девочки-художницы — они сделали модели главного героя, ассеты для карты и ловушки.
Где я столкнулся с проблемами
Первый раз работая с сетевым кодом, я понял, что это настоящее испытание. Я бы не сказал, что это прям сложно, но требует понимать как данные передаются и быть очень последовательным в написании кода.
Первое время у меня постоянно были баги — то, у одного игрока пропадает предмет, то игроку начнут падать очки с множителем в 2 раза, то хост станет невидимым...
Я стал логировать каждую мелочь, запускать игру на пару секунд и читать страницы логов, вникая почему в этот раз что-то не получилось.
Для меня как инди-разраба и геймдизайнера, который в основном пишет в блюпринтах, это был совершенно новый опыт, хаха.
Как и написаниие статей нейронкой, но это требование ВУЗа, что поделать.
Игра работает, но peer-to-peer соединение (ожидаемо) оказалось нестабильным, часто происходят фризы, из-за которых играть становится некомфортно.
Причем даже в пустом анриловском проекте, при стандартных настройках репликации, персонажи будут дергаться и ловить рассинхроны.
Я понял, что многие игры, где ты хостишь лобби и играешь с друзьями, на самом деле используют свои серверы, имитируя процесс хостинга. Без них стабильность обеспечить сложно, а у меня не было ресурсов на это.
Геймдизайн и что хотелось бы улучшить
Я уделял очен мало времени геймдизайну — ловушки получилсь скучные, лвл-дизайн примитивный, а времени тестить это всё не было.
Реально, из всех ловушек действительно интересной получилась только мина — когда соперник вселяется в неё и пытается прыгнуть на тебя, это страшно и весело одновременно. Ещё игре не хватило взаимодействия между игроками — например, возможности толкаться или как-то влиять друг на друга.
Что я вынес из этого опыта
Сетевой код писать утомительно долго и сложно, особенно без опыта. Теперь я лучше понимаю, как устроены сетевые игры и почему так важна инфраструктура серверов. Этот проект научил меня планировать реалистичные сроки и не бояться признавать свои ограничения.
Что дальше?
«Хочешь Ловушку?» уже год лежит на полке. Иногда хочется вернуться, но объём работы пугает. В следующем учебном году мне предстоит защищать диплом, и, возможно, этот проект станет моей дипломной работой. Посмотрим, что из этого выйдет.
При желании можете бесплатно скачать её на итче.
Если тебе понравится такой стиль и структура, могу помочь дополнить статью деталями, сделать её более живой и читабельной. Как думаешь?