Unreal Engine: можно ли это сделать в первую очередь с помощью C++/скриптов вместо Blueprints?

Я рассматриваю свои варианты игрового движка. Я прошел руководство по Twin Stick Shooter. Что меня больше всего разочаровало, так это то, что большая часть программирования выполняется в Blueprints, а это уродливое (здесь субъективно, но ненадолго) графическое программирование. Вся логика игры была сделана с помощью ящиков... и я нахожу это ужасным! Я даже убегаю от Qt Designer и разрабатываю свои графические интерфейсы с помощью чистого кода и макетов.

Возвращаясь к объективности, проблема в том, что «Twin Stick Shooter» — очень, очень простая игра. Тем не менее, диаграммы были очень сложными и большими в конце. Я не нахожу это очень удобным в обслуживании без проблем, таких как отслеживание изменений с течением времени с помощью git или любого другого инструмента управления версиями. В отличие от C++, где поддержка большого кода — очень старая проблема, которая решается многими способами, и системы управления версиями очень хорошо с ней справляются.

Мой вопрос: можно ли эту же игру в руководстве (или любую игру в целом) сделать со всей логикой, развернутой на C++ (или, может быть, с менее чем 5% чертежей), вместо того, чтобы развертывать все это в Диаграммы чертежей (например, Twin Stick Shooter)? Учитывая, что я не эксперт в Unreal Engine, я думаю, что есть хороший ответ на этот вопрос от эксперта, который может объяснить, что можно и что нельзя сделать чисто на C++, и почему это было бы хорошо или плохо сделать тот.


person The Quantum Physicist    schedule 07.04.2017    source источник
comment
все, что делает работу и приносит деньги. Это печальная правда и реальность.   -  person user1095108    schedule 07.04.2017
comment
@ user1095108 Абсолютно. Это одна печальная вещь, которую я усвоил на собственном горьком опыте!   -  person The Quantum Physicist    schedule 07.04.2017


Ответы (2)


Основываясь на своем опыте работы с UE4, я отвечу: да.

Узлы и объекты основных чертежей создаются с помощью C++ и обычно доступны через API движка C++. На самом деле версии узлов BP на C++ обычно более сложны в использовании (т.е. имеют больше возможных параметров).

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

(...) и почему это было бы хорошо или плохо.

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

Благодаря гибкости Blueprints и времени создания многие разработчики (включая меня) решают использовать смешанный подход, когда вы создаете низкоуровневый, сложный или дорогой код на C++ и предоставляете его API системе Blueprint. Это помогает отделить основной код от высокоуровневых функций, которые подвергаются многочисленным изменениям и корректировкам (преимущество: BP легче отлаживать и время его компиляции намного быстрее).

Одна из трудностей, с которой я столкнулся при смешивании BP и C++, — это проблема с использованием классов BP в коде C++, которая более подробно обсуждалась здесь.

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

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

person JKovalsky    schedule 07.04.2017
comment
Спасибо за ценную информацию! +1! - person The Quantum Physicist; 08.04.2017

С точки зрения программиста с 20-летним опытом работы на C++, но всего несколькими месяцами практики в UE4... Я бы сказал да, но не надо.

Я согласен с вами насчет Blueprints — простые операции, которые занимают одну или две строки кода, требуют пяти или шести узлов Blueprint, и программисту их гораздо труднее читать. Вы МОЖЕТЕ делать что угодно на C++ с помощью Unreal. Но вам нужно учиться и работать с существующим корпусом кода движка, а Unreal — сложный и мощный зверь. Даже имея многолетний опыт работы с C++, мне действительно сложно делать простые вещи, потому что движок требует, чтобы они выполнялись определенным образом.

Честно говоря, для чего-то вроде шутера с двумя джойстиками я бы полностью рекомендовал Unity.

person Chris Payne    schedule 14.02.2018