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: книги, каналы, сообщества и курсы

  • 0 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 2020 / All rights reserved

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