Полезное
Мы Вконтакте
Discord канал
Вам понадобятся исходники движка, поскольку они потребуются для компиляции серверного решения в Visual Studio.
Для этого посетите официальный репозиторий Unreal Engine 4 на GitHub:
https://github.com/EpicGames/UnrealEngine
Из README:
Последние приготовления. Настройте Windows так, чтобы вы могли взаимодействовать с .uproject-файлами. Для этого найдите «UnrealVersionSelector-Win64-Shippping.exe» в папке UnrealEngine/Engine/Binaries/Win64/ и запустите. Теперь проект будет запускаться двойным щелчком по .uproject-файлам, а нажатие ПКМ по ним позволит быстро обновить файлы Visual Studio.
Причем, при загрузке проекта вы сможете выбрать версию движка, в которой необходимо открыть проект.
Нажмите ПКМ по вашему .uproject-файлу и измените версию движка на «source-built engine». Лучше всего, чтобы в вашем проекте был код. Достаточно пустого класса (вы сможете удалить его позже).
После этого перейдите в корневую папку проекта и щелкните ПКМ по .uproject-файлу, чтобы сгенерировать файлы для Visual Studio.
Выделенному серверу необходим контент. Зайдите в File -> Package Project -> Packaging settings. Здесь вы найдете несколько опций:
После этого перейдите в File -> Package Project -> Package Windows/Linux и выберите папку. Теперь запаковывайте контент и компилируйте клиент.
Следующим шагом будет компиляция серверного кода с помощью Visual Studio. Первым дело нужно настроить серверный target для UnrealBuildTool.
Можно использовать следующий пример:
// Copyright 1998-2014 Epic Games, Inc. All Rights Reserved.
using UnrealBuildTool;
using System.Collections.Generic;
public class GameServerTarget : TargetRules
{
public GameServerTarget(TargetInfo Target)
{
Type = TargetType.Server;
}
//
// TargetRules interface.
//
public override void SetupBinaries(
TargetInfo Target,
ref List OutBuildBinaryConfigurations,
ref List OutExtraModuleNames
)
{
base.SetupBinaries(Target, ref OutBuildBinaryConfigurations, ref OutExtraModuleNames);
OutExtraModuleNames.Add("Game");
}
public override void SetupGlobalEnvironment(
TargetInfo Target,
ref LinkEnvironmentConfiguration OutLinkEnvironmentConfiguration,
ref CPPEnvironmentConfiguration OutCPPEnvironmentConfiguration
)
{
if (UnrealBuildTool.UnrealBuildTool.BuildingRocket())
{
UEBuildConfiguration.bCompileLeanAndMeanUE = true;
// Don't need editor or editor only data
UEBuildConfiguration.bBuildEditor = false;
UEBuildConfiguration.bBuildWithEditorOnlyData = false;
UEBuildConfiguration.bCompileAgainstEngine = true;
// no exports, so no need to verify that a .lib and .exp file was emitted by the linker.
OutLinkEnvironmentConfiguration.bHasExports = false;
}
else
{
// Tag it as a UE4Game build
OutCPPEnvironmentConfiguration.Definitions.Add("UE4GAME=1");
}
}
public override bool GetSupportedPlatforms(ref List OutPlatforms)
{
// It is valid for only server platforms
return UnrealBuildTool.UnrealBuildTool.GetAllServerPlatforms(ref OutPlatforms, false);
}
public override List GUBP_GetPlatforms_MonolithicOnly(UnrealTargetPlatform HostPlatform)
{
if (HostPlatform == UnrealTargetPlatform.Mac)
{
return new List();
}
return new List { HostPlatform, UnrealTargetPlatform.Win32, UnrealTargetPlatform.Linux };
}
public override List GUBP_GetConfigs_MonolithicOnly(UnrealTargetPlatform HostPlatform, UnrealTargetPlatform Platform)
{
return new List { UnrealTargetConfiguration.Development };
}
}
Просто замените везде «Game» на название вашего проекта. Сохраните файл как <МойПроект>Server.Target.cs и сгенерируйте заново файлы проекта. Откройте Visual Studio, установите конфигурацию на сервер и выберите целевую платформу. Теперь скомпилируйте ваш проект.
Сейчас можно пропустить упаковку контента, но будьте готовы к вылетам из-за отсутствия необходимого контента.
В этот момент могут появиться разные ошибки (“The game module could not be found” и подобные). Стоит перекомпилировать проект в Visual Studio.
Откройте в Visual Studio исходники движка и скомпилируйте UnrealFronted (шелкните ПКМ по решению «UnrealFrontend» и постройте его), запустите. Файл, скорее всего, находится в папке /Engine/Binaries/Win64.
Как только откроется Unreal Frontend, перейдите во вкладку «Project Launcher» и нажмите на кнопку «Advanced». Создайте пользовательский профиль, назвав его, скажем, «<МойПроект> Dedicated Server». Выберите конфигурацию под Windows и любые карты, которые хотите. Запустите процесс. После окончания работы можно приступить к компилированию выделенного сервера из исходников в Visual Studio.
Вернитесь в Visual Studio, выберите серверное решение (к примеру, «Development Server / Win64») и постройте его. В папке /MyProject/Binaries/ должен находится файл «<МойПроект>Server.exe»
Достаточно просто открыть редактор и скомпилировать клиент.
Двойной щелчок по <МойПроект>Server.exe приведет к тому, что сервер запустится в фоне. Мы же запустим его с помощью командной строки: откройте её и перейдите в директорию с исходниками проекта. Для активации логов добавьте параметр «-log»:
“<МойПроект >Server.exe –log”
Если у вас запущены другие копии сервера, то их стоит закрыть.
Заметьте, что сервер по умолчанию слушает порт 7777.
Откройте клиент, который вы создали на 8 шаге. Войдите в консоль, нажав «~» и введите:
«open 127.0.0.1:7777»
Если у вас откроется черный экран, проверьте, что вы установили стандартную серверную карту в настройках проекта в редакторе.
Возможно, во всяком случае, на версии 4.4.3, при использовании экторов, движение которых основывается на симуляции физики, необходимо будет установить их параметр SkeletalMeshComponent.bEnablePhysicsOnDedicatedServer в значение «true». Выделенный сервер возвращает «true» для IsRunningDedicatedServer(), что предотвращает использование физики для SkeletalMeshComponents при неактивном значении bEnablePhysicsOnDedicatedServer.
1. Зачем скачивать исходники??? Можно же скачать всё уже построенное! 2. Куда вставлять Server.target? В файл проекта, код движка?
И вообще. Как не возиться с Visual Studio, а сделать всё чисто редактором и блюпринтами?
Вы должны войти, что бы оставлять комментарии.