7

Field of Enemies - игра созданная в одиночку

Всем привет, я разработчик игр на Unreal Engine 5, долгое время я занимался изучением игрового движка, созданием плагинов на FAB и теперь готов показать вам свой проект!

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


О игре:

Врывайтесь в хаотичный и веселый Low Poly мир «Field of Enemies»! Это казуальный экшен-рогалик с видом сверху, где вас ждут бесконечные орды врагов, от неповоротливых зомби до продвинутых роботов. Ваша цель проста — продержаться как можно дольше, окружив себя настоящим адом из монстров, и вписать своё имя в историю таблицы лидеров!

Сражайтесь в одиночку или объединяйтесь с друзьями — кооператив до 4 игроков превратит выживание в невероятно весёлое и сумасшедшее побоище!


Я — разработчик-одиночка, и «Field of Enemies» — это мой проект всей души, который я создаю полностью один. Как вы понимаете, привлечь внимание к инди-игре невероятно сложно.

Если вам нравится то, что вы видите, лучший способ поддержать меня на данном этапе — добавить игру в список желаний в Steam. Это невероятно сильно помогает с продвижением через алгоритмы платформы и позволяет большему количеству людей узнать об игре. Ваша поддержка для меня бесценна!

Добавить «Field of Enemies» в список желаний в Steam


Пока мой основной проект в разработке, хочу поделиться с вами другим своим творением! Это Farm Again — игра, которую я создал всего за 7 дней для EpicGames MegaJam. Это был безумный челлендж, и я горжусь результатом! Очень надеюсь на победу в джэме, но даже если не займу первое место, буду безумно рад, если вы просто оцените игру. Она полностью бесплатна — попробуйте прямо сейчас!

Сыграть в Farm Again (бесплатно)


Какие трудности были во время разработки и какими методами я их решал:

  1. Большое количество AI:
    Как многие разработчики уже знают, в Unreal Engine есть проблема с производительностью при большом количестве AI на сцене. Для своих проектов мне пришлось уйти дальше от обычных стандартных методов, поэтому я написал собственный плагин (XAI), который использует технологию MassEntity (или entity component system). Так же в совокупности с асинхронной физикой, которая относительно недавно появилась в Unreal Engine - у меня получился довольно таки хороший прирост производительности! Но и это не всё, я подумал, что можно уменьшать тикрейт анимаций, если AI находится вне поля зрения игрока, для этого я использовал Significance Manager и собственные математические расчёты. Теперь, чем дальше AI от игрока или если находится за камерой, то его тикрейт анимаций плавно уменьшается. Всё это вместе - даёт превосходный FPS, а так же решает проблему с репликацией, так как в Unreal Engine 5.6 починили репликацию асинхронной физики! Плюсом ко всему, мои AI используют физику - а значит их можно расталкивать игроком во время движения, что так же делает геймплей более приятным.


  2. Niagara Data Channel: Как умно экономить на эффектах:
    Представьте: ваш игрок отстреливается из пулемета. Каждая пуля — это частицы дыма, искры, вспышка. По старинке, на каждую пулю движок создавал бы новый, отдельный эффект при попадании. 100 пуль = 100 эффектов. Компьютер начинает плакать.

    А теперь смотрите, как это делает Niagara Data Channel! Он словно умный менеджер, который не создает новую "бумажку" на каждый выстрел, а просто добавляет новую строчку в общий список.

    Было: 10 попаданий = 10 отдельных эффектов с 10 частицами.
    Стало: 10 попаданий = 1 общий эффект, внутри которого летают все 10 частиц.

    Вместо сотен тяжелых эффектов у вас работает одна легкая система, но с кучей частиц. Производительность взлетает до небес!
    У этой системы есть свои недостатки, но если знать где и как её применять, то проблем не будет.


  3. Character? Не, не слышал. Как я сделал свой сетевой мультиплеер без лагов:
    Признаюсь, я давно в сложных отношениях с дефолтным Pawn и Character. Для своего проекта я решил сделать всё по-своему: выкинул это добро и собрал кастомную систему движения на асинхронной физике.

    Но главный фокус — в моём плагине MotionReplicator. Он не просто пересылает данные, а занимается настоящей магией — экстраполяцией. Вот как это работает:

    • Твой клиент сам решает, где ты находишься, и рассылает всем свои координаты.

    • Другие игроки получают эти данные, смотрят на свой пинг и твой, и не просто ставят твою копию в точку, а предсказывают, где ты будешь через мгновение.

    • Твоя копия на их экране плавно и незаметно подстраивается под это предсказанное положение.

    Результат? Персонажи двигаются так плавно, что кажется, будто игра идёт по LAN, даже если у кого-то не самый лучший интернет. Лаги просто растворяются в воздухе!


Конечно, это лишь верхушка айсберга проблем, с которыми я столкнулся. Но именно эти решения стали самыми значимыми для производительности и геймплея!

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


Спасибо за внимание! Я открыт для любой обратной связи, поэтому, пожалуйста, не стесняйтесь делиться своими мыслями или советами в комментариях.

Мой Discord сервер

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции

- Выдавать чужой труд за свой

Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.


О РАЗМЕЩЕНИИ ССЫЛОК:

Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"