Share This
Связаться со мной
Крути в низ
Categories
//🎮 С++ или Blueprint: на чем лучше писать игры с использованием Unreal Engine 4?

🎮 С++ или Blueprint: на чем лучше писать игры с использованием Unreal Engine 4?

Создание игр всегда захватывает, но требует от программиста хорошего знания матчасти. Какой язык программирования стоит выбрать для движка Unreal Engine 4? С++ или Blueprint? Попробуем разобраться.

s ili blueprint na chem luchshe pisat igry s ispolzovaniem unreal engine 4 cc5f432 - 🎮 С++ или Blueprint: на чем лучше писать игры с использованием Unreal Engine 4?

Преимущества использования С++ для разработки игр Самая главная причина выбора «плюсов» – Unreal Engine 4 (UE4) написан на них. Знание его фундамента позволит максимально эффективно использовать возможности движка. Помимо этого у С++ есть немало возможностей для геймдева. Это компилируемый язык с кучей всевозможных настроек, поддержкой ООП и управлением мельчайшими деталями кода.

Одно из основных преимуществ С++ кроме гибкости – управление памятью. Для новичка это достаточно сложно, но позже самоличное управление сборщиками мусора покажет великолепные результаты и позволит повысить производительность игры.

s ili blueprint na chem luchshe pisat igry s ispolzovaniem unreal engine 4 235f82b - 🎮 С++ или Blueprint: на чем лучше писать игры с использованием Unreal Engine 4?

Преимущества UE4

Именно движок определяет максимальные возможности игры. UE4 – весьма привлекательный выбор:

  • UE4 бесплатен для коммерческого использования с условием: когда доход от игры превысит $1 000 0000, потребуется отдать 5% в качестве роялти.
  • Огромная библиотека моделей, как в магазине EGS, так и на сторонних сайтах. Не все они бесплатны.
  • Возможность создать действительно красивую игру. Например, Assetto Corsa Competizione (ACC) использует оригинальный движок UE4, виды там красивые, особенно ночные гонки.
  • Хорошая работа с фотореалистичной и прочей next-gen графикой. Та же ACC в качестве примера.
  • Поддержка кроссплатформенности (Fortnite в качестве примера).
  • Лёгкость входа в разработку. Сначала интерфейс может показаться сложным, но в нём разобраться несложно.
  • Куча всевозможных обучающих материалов (в том числе бесплатных).
  • Blueprint. «Чертежи» позволяют очень быстро набросать прототип или даже создать полноценную игру. Использовать С++, Blueprints или всё вместе – вопрос, который будет долго занимать мысли программиста до наработки солидного опыта.

Технические особенности движка

  • Если в С++ (ConstructorHelpers) что-то загружается, то оно грузится при старте модуля. Даже если объект не используется, память он будет потреблять.
  • Работа с искусственным интеллектом. Дерево поведения, сбор данных окружающей среды для моделирования поведения – отличные инструменты для полноценной разработки ботов.
  • Материал зависит от текстур, а итоговый меш зависит от материала. Поэтому можно загрузить кирпич из 8 вершин, которые притянут за собой 4К текстуры (если они есть).
  • Из-за этих же зависимостей вызов функции Blueprint повлечёт за собой загрузку всего Blueprint.

Бонусы от совмещения С++ и Blueprint

В сравнении с Blueprint, С++ имеет несколько особых преимуществ. С помощью этого языка программирования можно менять исходный код движка, базовые классы проекта и менять производительность сложных математических расчётов. Всё остальное можно так или иначе реализовать с помощью Blueprint.

  • С++ предлагает возможность прописывания каждого действия игры в любой ситуации, что увеличивает ваши возможности, но иногда приводит к ошибкам. Blueprint же позволит упростить разработку (например, создать кнопку для открытия двери) или поможет в создании полноценной игры далёким от программирования людям.
  • В движок встроен «помогающий» С++, как его называют разработчики. Эта вариация представляет собой упрощённый вариант, направленный на максимально быстрое вхождение в геймдев. Несмотря на возможность писать классический код на С++, разработчики утверждают, что максимальный результат будет достигнут с использованием встроенной вариации. Даже с учётом помощника, потребуются минимальные знания программирования.
  • Благодаря отличному взаимодействию Blueprint и С++ можно использовать оба языка. На С++ программист будет создавать системы и/или строительные блоки из которых позже не умеющий программировать товарищ по команде соберет нужную часть игры. Однако лучше всего создавать проект С++, даже если планируются только Blueprint. Связано это с тем, что проект на Blueprint тяжело переконвертировать в проект на С++. Одна из проблем – перенос переменных.
  • Всегда есть реальные примеры кода на С++ с их реализацией на UE4.

s ili blueprint na chem luchshe pisat igry s ispolzovaniem unreal engine 4 292f05b - 🎮 С++ или Blueprint: на чем лучше писать игры с использованием Unreal Engine 4?

Проблемные места при разработке игр

Если убрать логические ошибки и прочие копания внутри программного кода, то проблемы в геймдеве общие:

  • Первоначально следует описать свою игру, хотя бы в собственной голове. При рабочем плане писать код значительно проще.
  • Каждую новую идею следует фиксировать и анализировать.
  • Правильные приоритеты. Вопреки распространенному заблуждению новичков, сначала проще разработать что-то большое (например, игровой мир), а только потом уделять внимание мелочам (персонажам и самым маленьким игровым объектам).
  • Логичный и понятный баланс. При этом, он должен быть понятным не только разработчикам, но и игрокам.

Есть также несколько специфичных для UE4 проблем:

  • Оптимизацию следует проводить в начале разработки. Как минимум для того, чтобы позже её не пришлось начинать с нуля.
  • Количество объектов, включая травинки, листочки и прочее, следует определять заранее – это позволит сразу выбрать нужный инструмент. Например, для драки на 10 человек Blueprints нужно использовать с осторожностью и не пренебрегать оптимизацией анимации. Начиная со 100 объектов, Blueprint лучше использовать точечно, а если количество единиц перевалило за 1000, от Blueprint стоит отказаться полностью и пользоваться только оптимизированным С++.
  • Анимация часто становится проблемой, замедляющей игру. Чтобы ее избежать, нужно использовать оптимизацию fast-path (у таких объектов появляется иконка молнии).
  • В С++ нет зависимостей. Если нужно вызвать метод класса, он вызывается без проблем. Однако в конструкторе не стоит загружать ассеты, потому что для каждого AActor создаётся и default-версия, для которой тоже вызывается конструктор. Лучше всего логику писать на С++, а всякие настройки, материалы и эффекты – в Blueprint. Это сохранит много ресурсов.
  • Отдельная проблема в разнице тика Blueprint и таймере С++. Есть timer manager (содержащий массив таймеров), который триггерит таймеры подходящее время. При этом если таймер не меньше 0,016, то он будет дешевле по ресурсам, поскольку тикающий актор обрабатывается особым образом. К тому же пока не тикнут все тикающие акторы, общий тик не произойдёт.
  • Таймер отрабатывает не каждый свой тик, за этим следит менеджер таймеров.
  • Из-за пула FTickableGameObject, во время тика программа проходит по всем функциям, проверяет их состояние и формирует стек вызова. Если ещё и в акторе добавить tick, то он автоматически добавит оверхед, даже если ничего не происходит. Это усложняет код.

Заключение

На UE4 есть 2 варианта создания приложения: Blueprint и С++. Если взять чистую реализацию без смешивания языков, то С++, ценой удорожания разработки, предлагает гибкость, прирост производительности, создание сложных ИИ (например, для RTS) и онлайн-возможности игры. Использование Blueprint в чистом виде едва ли возможно для создания сложных ресурсоемких игр, зато он хорош для новичков. Оптимальный вариант, как всегда, лежит где-то посередине – наилучшего результата можно достигнуть, если команда использует и Blueprint и С++. Каждый инструмент хорош для своих задач.

***

На Unreal Engine 4 сделаны многие современные игры, поэтому движок однозначно рекомендован к изучению всем интересующимся геймдевом. На самостоятельное освоение всех его возможностей потребуются не один год, но есть и более короткий путь. Обратите внимание на курс факультета разработки игр на Unreal Engine 4 образовательной онлайн-платформы GeekBrains. Вы освоите сам движок, научитесь программировать на Blueprints и C++ и сможете самостоятельно создавать игры с нуля. Занятия ведут эксперты-разработчики российских технологических компаний, а успешно окончившие курс студенты получат диплом о профессиональной переподготовке, несколько проектов в портфолио и помощь в трудоустройстве.

Интересно хочу попробовать

Дополнительные материалы:

  • Разработка игр Unreal Engine 4: 10 советов начинающим
  • 30 ресурсов для изучения Unreal Engine 4: книги, каналы, сообщества и курсы

  • 2 views
  • 0 Comment

Leave a Reply

Ваш адрес email не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Свежие комментарии

    Рубрики

    About Author 01.

    blank
    Roman Spiridonov

    Моя специальность - Back-end Developer, Software Engineer Python. Мне 39 лет, я работаю в области информационных технологий более 5 лет. Опыт программирования на Python более 3 лет. На Django более 2 лет.

    Categories 05.

    © Speccy 2022 / All rights reserved

    Связаться со мной
    Close