standalone dedicated server
아주 세부적으로 위키에 정리되어 있다.
https://wiki.unrealengine.com/Dedicated_Server_Guide_(Windows_%26_Linux)
엔진 소스 빌드
일반 배포 바이너리는 빌드 타겟에 제약이 있어 소스를 받아 빌드해야 한다.
https://github.com/EpicGames/UnrealEngine
private repository 이므로, 언리얼 사이트에서 연결 후에 접속~
필요한 버전의 소스를 다운로드 한다.
\> Setup.bat
필요요소 다운로드 하고, version-selector 에 등록(레지스트리 등록)
\> GenerateProjectFiles.bat
프로젝트 파일 생성 : vs2017 버전은 \> GenerateProjectFiles.bat -2017
솔루션 파일을 열고 Development Editor 타겟으로 빌드 한다.
빌드 할때도 오래걸리고, 처음 실행할때도 오래걸리고~
용량도 어마어마함.
기존 프로젝트의 수정
ProjectName.uproject 를 오른쪽 마우스클릭해 Switch unreal engine version.. 을 선택해 엔진버전을 Source build 버전으로 변경해 준다.
기존 타겟파일을 복사해서 서버모듈 타겟을 생성한다.
./Source/ProjectNameServer.Target.cs
소스를 열어 파일명과 클래스명을 일치 시켜 주고, 타겟타입을 서버로 설정한다.
Type = TargetType.Server;
ProjectName.uproject 에서 Generate Visual Studio Project Files...
클라이언트용 바이너리 빌드 : Development Editor
서버용 바이너리 빌드 : Development Server
서버로 빌드하게 되면 ProjectNameServer.exe 파일이 생성됨.
서버 실행
프로젝트 설정에서 서버 기본 맵을 서버에서 시작할 맵과 동일하게 선택한다.
(DefaultEngine.ini 의 [/Script/EngineSettings.GameMapsSettings] 항목 참조)
패키징을 위한 맵 목록을 선택하고, 패키징한다.
패키징된 폴더의 바이너리 폴더에 빌드된 서버 실행파일을 복사한다.
./WindowsNoEditor/ProjectName/Binaries/Win64/
서버 파일에 바로가기를 만들어 로그 옵션을 넣어준다.
Target: "project-path\Binaries\Win64\ProjectName.exe" -log
서버 바로가기를 실행~
클라이언트들은 Open Level 노드에 ip 넣어서 접속하면 된다.
세션 (온라인 서브 시스템)
https://answers.unrealengine.com/questions/260999/creating-a-session-on-dedicated-server-launch.html
AGameSession 을 상속받은 커스텀 세션 객체를 생성한다.
virtual void RegisterServer() 함수가 선언되어 있는데, 이 함수를 오버라이드한다.
#include "Online.h"
UClass AMyGameSession : public AGameSession
{
GENERATED_BODY()
public:
void RegisterServer();
}
void AMyGameSession::RegisterServer()
{
UWorld* World = GetWorld();
IOnlineSessionPtr SessionInt = Online::GetSessionInterface(World);
FOnlineSessionSettings Settings;
Settings.NumPublicConnections = 3;
Settings.bShouldAdvertise = true;
Settings.bAllowJoinInProgress = true;
Settings.bIsLANMatch = true;
Settings.bUsesPresence = true;
Settings.bAllowJoinViaPresence = true;
SessionInt->CreateSession(0, GameSessionName, Settings);
}
'프로그래밍 > Unreal' 카테고리의 다른 글
[UE] UnrealEngine Win64 Installed build (0) | 2024.03.05 |
---|---|
[UE] FJsonObjectConverter 를 사용한 json string 변환 (0) | 2024.02.14 |
[UE] RunUAT(Unreal Automation Tool) 관련 파라미터 (0) | 2024.01.31 |
[UE4] 이미지 파일 동적으로 로드하기 (0) | 2018.07.05 |
[UE4] 언리얼 엔진 빌드 (1) | 2018.06.01 |
[UE4] Using Static Library (0) | 2018.03.16 |
[UE4] VR 컨트롤러 IK (0) | 2018.01.24 |
[UE4] 관람자 화면 (0) | 2018.01.04 |
[UE4] 동적 텍스처 (0) | 2017.12.18 |
[UE4] 디버그 로그 출력 (0) | 2017.11.13 |