Platform Implementation for EOS

콘솔에서의 EOS SDK 사용 가이드라인 및 레퍼런스

4 분 소요

에픽 온라인 서비스(EOS) SDK를 실행하려면 목표 플랫폼에서 EOS를 런타임으로 로드 및 실행하기 위해 반드시 프로젝트 링크, 패키징, 로딩 프로세스의 사전 요구 사항을 따라야 합니다. 이 페이지는 이런 프로세스에 관한 포괄적인 정보를 제공합니다. 플랫폼별 문서에 나열된 페이지들은 플랫폼별 필요 사항에 관해 더 자세한 정보를 제공합니다. 이 페이지에는 언리얼 빌드 시스템(Unreal Build System) 과 EOS SDK를 같이 사용하는 방법도 있습니다.

EOS SDK와 콘솔(PlayStation, Xbox, Nintendo Switch 등)에 대한 문서의 경우 조직 액세스를 구성해야 하며, 문서는 퍼스트 파티의 승인 후 SDK 드롭에 포함될 것입니다.

스레드 안전

EOS SDK는 스레드 안전 방식으로 간주되지 않습니다.

모든 호출은 동일 스레드에서 수행해야 합니다. 일부 함수는 다른 스레드에서 호출될 경우 어서트 및 충돌이 발생합니다.

빌드하기

모든 EOS SDK 헤더는 eos_base.h 헤더를 포함하지만, 일부 플랫폼에서는 eos_base.h 호출에 앞서 추가 구성이 필요합니다. 추가 구성이 필요한 플랫폼은 플랫폼별 문서에 언급되며, 추가 구성을 위한 <Platform>/eos_<Platform>_base.h 파일이 있습니다.

eos_platform_prereqs.h 사용하기

EOS SDK는 크로스 플랫폼 개발을 지원하기 위해 eos_platform_prereqs.h 헤더를 제공합니다. eos_platform_prereqs.h 를 사용하려면 특정 플랫폼을 포함해야 하는 애플리케이션을 빌드할 때 EOS_BUILD_PLATFORM_NAME 매크로를 추가합니다.

eos_platform_prereqs.h 헤더는 다른 EOS SDK 헤더보다 먼저 포함해야 합니다.

예를 들어 언리얼 빌드 시스템을 사용한다면, <Project>.Build.cs 파일에 다음 코드를 추가합니다.

if (!Target.IsInPlatformGroup(UnrealPlatformGroup.Windows) &&
!Target.IsInPlatformGroup(UnrealPlatformGroup.Unix) &&
!Target.IsInPlatformGroup(UnrealPlatformGroup.Apple) &&
!Target.IsInPlatformGroup(UnrealPlatformGroup.Android))
{
AppendStringToPublicDefinition("EOS_BUILD_PLATFORM_NAME",
Target.Platform.ToString());
}

다른 EOS 인터페이스를 사용할 때는 다음 #include 를 추가합니다.

#include "eos_platform_prereqs.h"
#include "eos_sdk.h"
#include "eos_[interface]_types.h"

eos_[interface]_types.h 에서 [interface] 를 사용 중인 인터페이스로 대체합니다.

#include "eos_friends_types.h"
#include "eos_auth_types.h"
#include "eos_lobby_types.h"

커스텀 크로스 플랫폼 예시

eos_platform_prereqs.h 이 프로젝트의 빌드 시스템에 맞지 않는다면, 커스텀 컴파일러로 제공되는 매크로를 참조할 수 있습니다. 예를 들면 다음과 같습니다.

#if defined(__THECOMPILER__)
#include "ThePlatform/eos_ThePlatform_base.h"
#elif defined(__SOMECOMPILER__)
#include "SomePlatform/eos_SomePlatform_base.h"
#endif
#include "eos_sdk.h"
#include "eos_friends_types.h"

단일 플랫폼 예시

단일 플랫폼이 EOS 친구 서비스(EOS Friends Service)를 위해 추가 #include 를 필요로 하는 경우 다음을 사용합니다.

#include "ThePlatform/eos_ThePlatform_base.h"
#include "eos_sdk.h"
#include "eos_[interface]_types.h"

eos_[interface]_types.h 에서 [interface] 를 사용 중인 인터페이스로 대체합니다.

#include "eos_friends_types.h"
#include "eos_auth_types.h"
#include "eos_lobby_types.h"

링크

프로젝트를 링크할 때는 프로젝트의 링크 커맨드에 EOS SDK용 link-time 라이브러리를 추가해야 합니다. 대부분 플랫폼에서는 런타임 라이브러리도 수동으로 로드해야 합니다.

언리얼 빌드 시스템과 링크

언리얼 엔진 을 사용하는 경우, 아래 설명에 따라 <Project>.Build.cs 파일을 구성하면 언리얼 빌드 툴(Unreal Build Tool) 이 라이브러리의 링크와 패키징을 관리합니다.

  1. 라이브러리 link-time 이름을 PublicAdditionalLibraries 에 추가합니다.
  2. 라이브러리 link-time 파일을 RuntimeDependencies 에 추가합니다.

<Project>.Build.cs 파일에는 다음과 유사한 코드가 포함되어야 합니다.

PublicAdditionalLibraries.Add(LibraryLinkName);
string RuntimeLibrarySourcePath = Path.Combine(SDKBinariesDir, RuntimeLibraryFileName);
string RuntimeLibraryTargetPath = Path.Combine(ProjectBinariesDir, RuntimeLibraryFileName);
RuntimeDependencies.Add(RuntimeLibraryTargetPath, RuntimeLibrarySourcePath, StagedFileType.NonUFS);

패키징

EOS SDK 런타임 라이브러리를 게임 실행 파일과 같은 디렉터리에 두면 대부분의 경우에는 게임이 런타임에 라이브러리를 찾을 수 있습니다. 일부 플랫폼의 경우 라이브러리를 특정 디렉터리에 넣어야 합니다. 자세한 정보는 플랫폼별 페이지를 참조하세요.

로드

일부 플랫폼의 경우 EOS SDK용 다이내믹 모듈을 런타임에 명시적으로 로드해야 합니다. 자세한 플랫폼별 방법은 플랫폼별 페이지를 참조하세요. 아무 프로세스도 언급되지 않았다면 명시적인 로딩이 필요하지 않습니다.

언리얼로 로드하기

언리얼 빌드 툴(Unreal Build Tool)로 게임 패키징을 구성하면 동일한 프로세스를 모든 플랫폼에 사용할 수 있습니다. 모듈을 로드하려면 FPlatformProcess::GetDllHandle 을 사용하고, 모듈을 언로드하려면 FPlatformProcess::FreeDllHandle 을 사용합니다.

메모리 함수

EOS_InitializeOptions 를 통해 커스텀 할당자를 제공하면 어떤 메모리 관리 시스템을 개발하든 EOS SDK가 사용할 수 있습니다. 할당자를 제공하지 않으면 EOS SDK는 malloc , free , realloc 같은 표준 할당자를 사용합니다.

그러나 콘솔은 예외적으로 커스텀 할당자를 필요로 합니다. 콘솔에서의 메모리 관리는 복잡하고 플랫폼에 매우 의존하는 프로세스입니다. 예상치 못한 행동을 예방하기 위해 콘솔의 경우에는 커스텀 할당자를 제공하여 모든 메모리 관리를 애플리케이션이 수행하게 해야 합니다. 현재 플랫폼에서 메모리 관리가 작동하는 방식에 대한 자세한 설명은 퍼스트 파티 SDK 문서를 참조하세요.

언리얼 메모리 함수

EOS SDK와 언리얼 엔진을 함께 사용한다면, EOS_InitializeOptions 에 제공된 할당자를 FMemory::Malloc , FMemory::Realloc , FMemory::Release 에 매핑할 수 있습니다.

플랫폼별 문서

다음 링크들은 위 프로세스의 플랫폼별 가이드라인입니다.

Android에서 EOS SDK 사용하기

Android Studio를 사용하여 Android 프로젝트에서 EOS SDK를 구현하는 방법

Android SDK 샘플 사용하기

Android 로그인 샘플 개요

iOS에서 EOS SDK 사용하기

Xcode를 사용하여 iOS 프로젝트에서 EOS SDK를 구현하는 방법

Using the iOS SDK Samples

An overview of the iOS samples and Apple login flow

Linux에서 EOS SDK 사용하기

EOS SDK를 Linux에서 구현하기 위한 레퍼런스 정보

Mac에서 EOS SDK 사용하기

EOS SDK를 MacOS에서 구현하기 위한 레퍼런스 정보

Windows에서의 EOS SDK 사용

Windows에서의 EOS SDK 사용에 대한 참고 정보

PlayStation 4에서 EOS SDK 사용하기

PlayStation 4에서 EOS SDK를 구현하기 위한 레퍼런스 정보

PlayStation 5에서 EOS SDK 사용하기

PlayStation 5에서 EOS를 구현하기 위한 레퍼런스 정보

Using Nintendo Switch에서 EOS SDK 사용하기

Nintendo Switch에서 EOS를 구현하기 위한 레퍼런스 정보

Xbox XDK에서 에픽 온라인 서비스(EOS) 사용하기

Xbox One에서 EOS를 구현하기 위한 레퍼런스 정보

Xbox GDK에서 EOS SDK 사용하기

EOS를 Xbox GDK에서 구현하기 위한 레퍼런스 정보