Войти
Unreal EngineФорумПрограммирование

Unreal Engine 4. Совместная работа. Что нужно?

Страницы: 1 2 Следующая »
#0
17:19, 1 июня 2018

Всем доброго дня!

Изучаю Unreal Engine 4. Поставил себе последнюю версию (4.19.2). Установил Visual Studio 2017 и необходимый Windows 8.1 SDK (или какой-то там для него нужен, я уже не помню). Создаю новый проект и сразу же подключаю к нему Git (прямо из под самого Unreal Engine). Там он уже создаёт, я надеюсь правильный, gitignore. Добавляю C++ класс и в самой Visual Studio вношу все изменения в Git. После этого в Unreal Engine делаю компиляцию C++ кода. Далее создаю Blueprint класс от C++ класса. В общем всё пустое, стандартное. Вношу ещё один commit, на этот раз уже из под Unreal Engine. Всё закрываю. Связываю локальный репозиторий с удалённым и закачиваю всё на сервер (он был пустой).

Всё удаляю и клонирую себе удалённый репозиторий. При запуске проекта он видит разные версии чего-то там и просит выполнить сборку. Я соглашаюсь. Сборка проходит успешно и я получаю всё то, что и имел.

Моделлер/аниматор клонирует себе репозиторий и запускает. Но сборка у него не выполняется (то есть она нужна, она предлагается, но завершается с ошибкой).

Отсюда вопросы:

  1. Любому члену команды (будь ты программистом или музыкантом) нужно иметь установленным какого-то инструмента для программистов (Visual Studio, Visual Studio Code, Windows SDK)?
  2. Ну или как-то по другому мне нужно было делать?

С Blueprint'ами не особо хочу возиться. Понимаю что на них можно всё сделать, но мне не удобно.


#1
17:44, 1 июня 2018

s3dworld
> Моделлер/аниматор клонирует себе репозиторий и запускает. Но сборка у него не выполняется
клади готовые dll, зачем моделлеру собирать чего-то? : )

git для бинарников не подходит, насколько я знаю, лучший способ это му..аться с перфорсом, сейчас хеликс или как-то так

#2
17:51, 1 июня 2018

Sh.Tac.
> клади готовые dll, зачем моделлеру собирать чего-то? : )
Интересно почему он сам их не положил. Ведь gitignore от самих Epic'ов (Unreal Engine его сгенерировал). Ну и как делать?

#3
18:56, 1 июня 2018

Просто интересно, если для совместной разработки важен файл Binaries/Win64/UE4Editor-ProjectName.dll, то почему самой первой строчкой в gitignore является это?

Binaries

#4
22:56, 1 июня 2018

s3dworld
> почему самой первой строчкой в gitignore является это?
Sh.Tac.
> git для бинарников не подходит

#5
9:01, 2 июня 2018

Sh.Tac.
И как поступают?

#6
9:21, 2 июня 2018

Блин. Я убрал Binaries из gitignore и всё это залил на сервер. Удаляю у себя локальный репозиторий и клонирую удалённый. Binaries присутствует. Запускаю проект и он снова ругается что разная сборка и предлагает пересобрать. Что ещё докинуть нужно чтобы всё было одинаковым?

#7
9:38, 2 июня 2018

Ладно, вроде получилось. Тут главное правильная последовательность. Что-то творим в Unreal Engine, потом в Visual Studio делаем commit. Только раз я убрал из gitignore строчку Binaries, то я поступил как-то против задумки разработчиков. Как же принято делать?

#8
13:35, 2 июня 2018

UE4 поддерживает перфорс
https://docs.unrealengine.com/en-us/Engine/Basics/SourceControl/Perforce

возможно Эпики и сами сидят на нём, а раздают исходники через гит используя git-fusion

ещё есть расширение для гита позволяющее смело лить бинарники git-annex, но я с ним не работал, так что пробуй

З.Ы. наверное стоит добавить что все ассеты которые создают художники и конвертят в формат UE4 это тоже бинарники

#9
13:46, 2 июня 2018

Sh.Tac.
> возможно Эпики и сами сидят на нём,

мы сидели на p4 - нормально так

#10
13:54, 2 июня 2018

innuendo
> нормально так
работать с кодом в p4 просто ад : )

уж лучше гибрид, ассеты в какой-нибудь VCS/RCS, а код в гите

#11
14:04, 2 июня 2018

Ладно, раз тут парочку программистов собралось и чтобы не создавать новую тему, спрошу тут по поводу обработки ошибок во время выполнения. Например я создаю класс от APlayerController и разрешаю чтобы от него можно было наследоваться для создания Blueprint класса. Ну и в классе объявляю такое:

UPROPERTY(BlueprintReadWrite,EditAnywhere)
TSubclassOf<UUserWidget> widget;

То есть позволяю уже в Blueprint'е задать необходимый класс Widget. Далее создаю всё это:

void ATestPlayerController::BeginPlay(void)
{
    pCreatedWidget=CreateWidget<UUserWidget>(this,widget.Get());
    pCreatedWidget->AddToViewport();
}

И удаляю:

void ATestPlayerController::EndPlay(const EEndPlayReason::Type EndPlayReason)
{
    if(pCreatedWidget)
    {
        pCreatedWidget->Destruct();
        pCreatedWidget=nullptr;
    }
}

И теперь мне бы хотелось включить проверку на ошибки. Например, до создания Widget'а проверить есть ли значение в widget и если Widget не был назначен, то выводить сообщение (например в лог) и что-то делать (например остановку воспроизведения симуляции в редакторе). Однако всё что я нашёл, так это вывести информацию в лог:

if(!widget) UE_LOG(LogTemp,Error,TEXT("Widget is not set!"));

К сожалению это никак не останавливает выполнение (а использовать Fatal очень уж сурово). В общем как делать проверку на правильность данных во время разработки?

#12
14:11, 2 июня 2018

s3dworld
> К сожалению это никак не останавливает выполнение (а использовать Fatal очень
> уж сурово)
ты уж определись нужно прерывать исполнение или это слишком сурово : )

#13
14:16, 2 июня 2018

Sh.Tac.
> ты уж определись нужно прерывать исполнение или это слишком сурово : )
Ну вот к примеру если моделлер забудет где-то указать что-то, то очень сурово будет, когда UE4 закроется и высветится сообщение с ошибкой. Куда лучше вариант, когда я вижу что он что-то не указал, останавливаю выполнение и пишу о проблеме. UE4 не закрывается. Он исправляет проблему и запускает симуляцию. Так получится?

#14
14:36, 2 июня 2018

попробуй консольные команды, например

GEngine->DeferredCommands.Add(TEXT("pause"));
может там и stop найдётся : )

Страницы: 1 2 Следующая »
Unreal EngineФорумПрограммирование

Тема в архиве.