에픽게임즈는 Google이 WebRTC 버전에서 공개한 취약성을 알고 있으며, EOS SDK에 미치는 영향과 향후 단계에 대해 조사하고 있습니다. 자세한 내용은 여기를 참고하세요.
에픽 온라인 서비스(Epic Online Services, EOS) 는 엔진에 무관한 시스템으로, 다음과 같은 다양한 크로스 플랫폼 온라인 기능을 포함합니다.
- 플레이어 중심 기능:
- 업적
- 순위표
- 상업적 기능:
- 게임 내 구매
- 소셜 기능:
- 음성 채팅
- 친구 목록
온라인 서브시스템 에픽 온라인 서비스(OSS EOS) 플러그인으로 언리얼 엔진 프로젝트에서 EOS를 사용할 수 있습니다. 온라인 서브시스템 에픽 온라인 서비스(Online Subsystem Epic Online Services) 플러그인은 EOS SDK와 직접 상호작용할 코드를 작성하지 않고도 게임 내에서 에픽 온라인 서비스와 상호작용하도록 도와줍니다. 해당 기능을 사용하려면 하나 이상의 제품을 에픽 개발자 포털(EOS Developer Portal) 에 등록 및 환경설정한 다음, OSS 인터페이스를 통해 EOS 기능을 노출할 수 있도록 몇 가지 플러그인을 활성화하고 환경설정해야 합니다.
제품 등록 및 환경설정에 대한 정보 등 에픽 온라인 서비스에 대한 자세한 정보는 에픽 온라인 서비스 개발자 문서를 참조하세요.
EOS 플러그인 개요
OSS EOS 플러그인은 온라인 서브시스템(Online Subsystem, OSS) 플러그인을 바탕으로 빌드됩니다. 온라인 서브시스템 플러그인은 다양한 온라인 서비스에 액세스하는 일반 인터페이스를 제공하는 범용 플러그인입니다. OSS EOS 플러그인은 EOS SDK를 통한 커뮤니케이션을 플러그인에 통합하여 특정 기능이 에픽 온라인 서비스에서 사용 가능하도록 구현하는 방식으로 OSS 플러그인을 확장합니다. 이 페이지는 다음과 같은 OSS EOS 플러그인 기능을 다룹니다.
선택적으로, OSS EOS 플러그인을 OSS EOS Plus 플러그인으로 확장할 수도 있습니다. EOS Plus는 'EOS + 베이스 플랫폼'이라는 의미로, Steam이나 콘솔 플랫폼 등의 기타 플랫폼을 EOS와 결합합니다. EOS와 기타 플랫폼을 결합할 경우 자동 세션 미러링 등의 부가적인 기능이 제공됩니다. EOS Plus는 에픽 계정 서비스(EAS)가 있든 없든 사용할 수 있습니다.
EOS Plus 사용 시점
에픽게임즈 스토어에서 게임을 출시하는 경우, OSS EOS 플러그인을 사용하고자 할 것이며 EOS Plus는 사용하지 않아도 됩니다. 기타 플랫폼에서 게임을 출시하는 경우에는 OSS EOS 플러그인과 더불어 OSS EOS Plus 플러그인을 사용하게 됩니다. 그러나 이 가이드에 예외가 존재할 수도 있습니다. 이 페이지를 읽고 프로젝트를 위한 최적의 플러그인 조합이 무엇인지 결정해 보세요.
OSS EOS 사용법
에픽 디벨로퍼 커뮤니티의 OSS EOS 플러그인 강좌를 통해 언리얼 엔진 프로젝트에서 OSS EOS를 사용하는 프로세스를 안내받을 수 있습니다.
구성
에픽 온라인 서비스로 제품 등록
에픽 개발자 리소스 문서는 에픽게임즈 스토어(EGS), 에픽 온라인 서비스, 키즈 웹 서비스(KWS) 및 관련 툴에 대한 리소스를 제공합니다. OSS EOS 플러그인을 활용하려면, 먼저 에픽 온라인 서비스로 제품을 등록해야 합니다. EOS로 제품을 등록하려면 에픽 개발자 포털로 이동하여 시작 단계를 따릅니다. 구체적으로는 이 가이드의 시작 단계 중 1단계에서 제품 등록에 대한 설명을 확인할 수 있습니다. 제품 등록 시 제공되는 정보는 나중에 언리얼 엔진에서 OSS EOS 플러그인을 환경설정할 때 필요합니다.
언리얼 엔진은 EOS SDK 사본으로 배포되므로, 언리얼 엔진에 포함된 EOS SDK 버전을 사용하고자 한다면 EOS SDK를 별도로 다운로드하지 않아도 됩니다. EOS SDK의 다른 버전을 사용하려면 시작 단계 중 2단계의 인스트럭션을 따라 원하는 버전의 EOS SDK를 다운로드합니다. 원하는 버전의 EOS SDK를 다운로드한 후, 언리얼 엔진이 사용하는 EOS SDK를 업그레이드하는 방법에 대한 자세한 정보는 EOS SDK 업그레이드하기 문서의 지시를 따르시기 바랍니다.
EOS SDK를 업그레이드하는 경우, 업그레이드에 필요한 필수 업데이트에 대해서는 EOS SDK 출시 노트를 참고하시기 바랍니다.
OSS EOS 플러그인 활성화
프로젝트에서 EOS를 사용하려면 언리얼 엔진에서 OSS EOS 플러그인을 활성화해야 합니다. OSS EOS 플러그인을 활성화하려면 다음 단계를 따릅니다.
- 편집(Edit) > 플러그인(Plugins) 으로 이동합니다. 이렇게 하면 활성화하고 싶은 플러그인을 찾을 수 있는 플러그인 브라우저(Plugin Browser) 가 열립니다.
- 플러그인 브라우저 에서 온라인 서브시스템 EOS(Online Subsystem EOS) 플러그인을 찾아서 활성화합니다.
온라인 서브시스템 EOS는 에픽 온라인 서비스용 온라인 서브시스템 플러그인을 구현합니다. OSS EOS 플러그인을 활성화하면 다음 추가 플러그인들이 기본적으로 활성화되어 있습니다.
- EOS Plus
- EOS와 기타 플랫폼을 결합합니다.
- EOS 공유(EOS Shared)
- EOS SDK 초기화 및 셧다운을 담당합니다.
- 기본적으로 OSS EOS의 종속성으로 활성화되어 있습니다.
- EOS 음성 채팅(EOS Voice Chat)
- EOS를 통한 음성 채팅을 지원합니다.
원하는 플러그인을 활성화한 후에는 프로젝트에서 사용하도록 환경설정해야 합니다. 일부 환경설정 단계를 진행하려면 제품을 EOS에 등록한 뒤 받은 제품 관련 설정이나 식별자가 필요합니다. 이는 에픽 개발자 포털에서 찾을 수 있습니다.
OSS EOS 플러그인 환경설정
계속 진행하려면 다음을 완료해야 합니다.
OSS EOS 플러그인을 환경설정하려면 다음 단계를 따릅니다.
- 툴바에서 편집(Edit) > 프로젝트 세팅(Project Settings) 을 클릭합니다.
- 플러그인(Plugins) > 온라인 서브시스템 EOS 로 이동합니다.

EOS 세팅
이 세팅은 EOS 플랫폼 전용 환경설정 관련 세팅입니다. 자세한 정보는 EOS_Platform_Options 데이터 구조에 대한 EOS API 레퍼런스 페이지를 참조하세요. 다음 표는 각 EOS 세팅에 대해 설명합니다.
세팅 | 설명 |
---|---|
캐시 디렉터리(Cache Dir) | 임시 EOS 데이터를 저장하는 디렉터리입니다. Windows에서 디폴트 위치는 C:/Users/<USERNAME>/Documents/CacheDir 입니다. |
디폴트 아티팩트 이름(Default Artifact Name) | 이 아티팩트 이름은 명령줄 실행인자를 통해 전달되는 아티팩트가 없을 경우 사용됩니다. 명령줄을 통해 아티팩트 이름을 전달하지 않는 경우, 이 옵션이 아래 정의된 아티팩트 이름(Artifact Name) 과 일치하는지 확인해야 합니다. |
틱 예산(ms)(Tick Budget in Milliseconds) | 이 세팅은 EOS 연산이 EOS_Platform_Tick 반환을 유발하여 게임을 차단하지 않도록 막습니다. 자세한 정보는 EOS_Platform_Create에 대한 에픽 온라인 서비스 문서를 참조하세요. |
오버레이 활성화(Enable Overlay) | 이 옵션으로 오버레이를 활성화하거나 비활성화할 수 있습니다. 일부 오버레이는 특정 플랫폼에 국한될 수 있습니다. 예를 들어 전자상거래 오버레이는 에픽게임즈 스토어에 출시되는 타이틀에만 유효합니다. |
소셜 오버레이 활성화(Enable Social Overlay) | 소셜 오버레이는 친구, 업적, 추가 인증 단계와 관련된 정보를 표시합니다. 다른 오버레이를 활성화한 채로 이 오버레이만 비활성화할 수 있습니다. 오버레이 활성화(Enable Overlay) 옵션을 끄면 이 세팅이 효력을 잃습니다. |
에디터 오버레이 활성화(Enable Editor Overlay) | 이 옵션은 언리얼 에디터에서 오버레이를 활성화하거나 비활성화하는 데 사용합니다. |
에픽게임즈 스토어에서 실행 필요(Require Being Launched by Epic Games Store) | 에픽게임즈 스토어에 출시하는 타이틀의 경우, 이 세팅을 활성화하면 실행하기 전 게임에서 오너십 인증을 요구하며, 반드시 에픽게임즈 런처로 실행해야 합니다. 최종 사용자가 다른 방법으로 게임을 실행하려고 할 경우, 게임의 프로세스는 종료되며 에픽게임즈 런처를 통해 재실행됩니다. |
타이틀 스토리지 태그(Title Storage Tags) | 타이틀 데이터 스토리지에서 다수의 파일을 쿼리할 때 사용합니다. 자세한 정보는 타이틀 스토리지 인터페이스의 태그로 여러 파일 쿼리하기에 대한 에픽 온라인 서비스 문서를 참조하세요. |
타이틀 스토리지 인식 청크 길이(Title Storage Read Chunk Length) | EOS_TitleStorage_OnReadFileDataCallback의 단일 콜백을 읽기 위한 데이터 최대량(바이트 단위)을 설정합니다. 자세한 정보는 타이틀 스토리지 인터페이스의 파일에 액세스하기에 대한 에픽 온라인 서비스 문서를 참조하세요. |
아티팩트(Artifacts) | 에픽게임즈 스토어는 단일 제품에 여러 아티팩트를 지원합니다. 예를 들어 여러분의 제품에 개발, 테스트, 소비자용 출시 버전의 내부 아티팩트를 각각 다르게 할 수 있습니다. 이 배열은 이름이 지정된 아티팩트별 세팅을 포함합니다. 배열에는 하나 이상의 아티팩트가 있어야 하며, 디폴트 아티팩트 이름(Default Artifact Name) 의 값은 배열 엘리먼트 중 하나의 이름과 일치해야 합니다. 해당 세팅에 관한 자세한 정보는 아래의 아티팩트 세팅 섹션을 참조하세요. |
아티팩트 세팅
아티팩트 세팅에는 EOS 개발자 포털에서 등록한 제품에 대한 세팅이 포함되어 있습니다. 여기서 환경설정한 아티팩트 세팅은 EOS 개발자 포털에 등록된 제품의 세팅과 일치해야 합니다. EOS 개발자 포털에서 제품 세팅을 찾을 수 있습니다.
아티팩트 세팅 을 편집하려면 다음 단계를 따릅니다.
- EOS 세팅(EOS Settings) 섹션의 아티팩트(Artifacts) 옆에 있는 엘리먼트 추가(Add Element) 버튼을 클릭합니다. 이렇게 하면 EOS 세팅의 아티팩트 배열에 새 엘리먼트가 생성됩니다.
- 이 새 아티팩트의 세팅을 커스터마이징하려면 새로 생성된 배열 엘리먼트 옆의 화살표를 클릭합니다. 이 엘리먼트가 배열의 첫 번째 엘리먼트인 경우 Index[0] 라는 이름이 지정됩니다.
다음 표는 사용 가능한 아티팩트 세팅에 대해 설명합니다.
세팅 | 설명 |
---|---|
아티팩트 이름(Artifact Name) | 에픽게임즈 스토어에서 실행하는 경우, 이 옵션이 개발자 포털에 위치한 스토어 세팅의 아티팩트 ID와 일치해야 합니다. 에픽게임즈 스토어에서 실행하지 않는 경우, 어떤 스트링이든 될 수 있습니다. 이 옵션은 -epicapp 명령줄 실행인자 또는 디폴트 아티팩트 이름을 통해 전달되는 아티팩트와도 일치해야 합니다. |
클라이언트 ID(Client ID) | 제품의 클라이언트 ID입니다. 이 ID는 첫 3글자가 xyz 로 시작해야 합니다. |
클라이언트 암호(Client Secret) | 클라이언트 ID 를 인증할 때 사용하는 클라이언트 암호입니다. |
제품 ID(Product ID) | EOS SDK는 이 ID로 귀하의 제품을 식별합니다. |
샌드박스 ID(Sandbox ID) | 아티팩트는 이 ID 값이 포함된 샌드박스에 포함됩니다. 에픽게임즈 스토어에서 퍼블리싱하지 않는 경우 제품은 하나의 샌드박스만 가질 수 있습니다. 여러 개의 샌드박스를 사용하는 경우, |
디플로이 ID(Deployment ID) | 타깃으로 하는 디플로이 ID입니다. 디플로이 ID는 아티팩트마다 다릅니다. 예를 들어 MyGameStaging , MyGameRelease 아티팩트는 각자 디플로이 ID가 다릅니다. 기본적으로는 샌드박스마다 하나의 디플로이가 있습니다. |
클라이언트 암호 키(Client Encryption Key) | EOS 서비스에 업로드될 경우 데이터를 암호화하는 64바이트 16진법 스트링입니다. 이 암호화 키는 다른 세팅과 달리 EOS에서 관리하지 않으며, 귀하의 제품 세팅에도 저장되지 않습니다. 해당 키는 귀하의 게임에 고유하며, 사용자 데이터 보호를 위해 에픽게임즈에 알려지지 않습니다. 플레이어 및 타이틀 데이터 스토리지의 데이터를 암호화하는 용도입니다. 플레이어 또는 타이틀 데이터 스토리지를 사용하지 않는 경우 |
EOS Plus 세팅
이 플러그인을 사용하려면 귀하의 제품을 지원하고자 하는 플랫폼의 개발자 포털에 등록해야 합니다. 각 플랫폼 버전별 EOS SDK마다 지원하는 플랫폼의 기능을 사용하는 방법을 버전별로 자세히 안내합니다.
EOS Plus 플러그인을 사용하기 전, EOS Plus 로그인 세팅 및 크로스 플레이 세팅을 환경설정해야 합니다.
EOS Plus 로그인 세팅
다음 표는 EOS Plus 로그인 세팅에 대해 설명합니다.
세팅 | 설명 |
---|---|
EOS 로그인 시 에픽 계정 사용(계정 연결 필요) | 이 옵션을 활성화할 경우, OSS EOS 플러그인에서 플랫폼별 인증 토큰으로 사용자를 에픽 계정에 자동으로 등록합니다. |
제품 사용자 ID(PUID) 생성 및 연결과 EOS 게임 서비스 사용 시 EOS 연결 API 사용 | 이 옵션이 활성화되면 크로스 플레이를 위해 계정을 연결할 때 EOS 연결 API를 사용합니다. |
크로스 플레이 세팅
다음 표는 크로스 플레이 세팅에 대해 설명합니다.
세팅 | 설명 |
---|---|
통계를 EOS에 미러링(Mirror Stats to EOS) | 이 옵션을 활성화할 경우, EOS Plus에서 모든 통계 정보의 사본을 OSS EOS 플러그인으로 보냅니다. |
업적을 EOS에 미러링(Mirror Achievements to EOS) | 이 옵션을 활성화할 경우, EOS Plus에서 모든 업적 데이터의 사본을 OSS EOS 플러그인으로 전달합니다. |
크로스 플레이 세션 사용(Use Crossplay Sessions) | 이 세팅은 크로스 플랫폼을 사용하는 네트워크 게임을 플레이할 때 필요합니다. 또한 EOS 세션 인터페이스를 주요 세션 인터페이스로 만듭니다. |
현재상태를 EAS에 미러링(Mirror Presence to EAS) | 이 옵션은 EOS Plus 플러그인에서 현재상태 데이터도 OSS EOS 플러그인에 전달할지를 결정합니다. 현재상태 데이터는 에픽 계정 서비스를 사용할 때만 이용할 수 있습니다. |
EOS 플러그인을 위한 엔진 환경설정
개발자 포털에서 제품을 설정하고 플러그인의 환경설정을 완료하고 나면 몇 가지 세팅을 환경설정해야 합니다. DefaultEngine.ini
와 같은 엔진 환경설정 계층구조에서 이러한 플러그인을 환경설정할 수 있습니다.
OSS EOS 환경설정 세팅
프로젝트의 DefaultEngine.ini
파일에 다음 환경설정 세팅을 추가합니다.
-
온라인 서브시스템 EOS 플러그인이 프로젝트에서 사용하도록 활성화되어 있는지 확인합니다.
[OnlineSubsystemEOS] bEnabled=true
-
프로젝트의 온라인 서비스에서 EOS를 디폴트 플랫폼으로 설정합니다.
[OnlineSubsystem] DefaultPlatformService=EOS
-
넷 드라이버를 지정합니다.
[/Script/Engine.GameEngine] +NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemEOS.NetDriverEOS",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")
-
EOS의 피어 투 피어 소켓 기능을 플레이어가 호스팅된 매치에 사용합니다. 이 세팅은 선택 사항입니다.
[/Script/OnlineSubsystemEOS.NetDriverEOS] bIsUsingP2PSockets=true
다음은 위에 설명된 모든 OSS EOS 환경설정 세팅입니다.
[OnlineSubsystemEOS]
bEnabled=true
[OnlineSubsystem]
DefaultPlatformService=EOS
[/Script/Engine.GameEngine]
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemEOS.NetDriverEOS",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")
[/Script/OnlineSubsystemEOS.NetDriverEOS]
bIsUsingP2PSockets=true
에픽게임즈 런처에서 타이틀 실행하기
에픽게임즈 런처에서 타이틀을 실행하는 경우, 에픽게임즈 스토어(EGS)가 실행하는 모든 에픽 앱 및 에픽 샌드박스 쌍에 대해 엔진 환경설정 파일 계층구조에 환경설정 항목을 추가해야 합니다. 프로젝트 세팅 또는 엔진 환경설정의 디폴트 아티팩트 이름 및 아티팩트 이름 이 에픽 온라인 서비스 개발자 포털의 아티팩트 이름과 일치하는지 확인하세요.
EGS에서 타이틀을 출시하는 경우, 디폴트 아티팩트 이름이 무시됩니다. EGS는 항상 -epicapp
명령줄 실행인자를 전달하여 대신 사용합니다. 디폴트 아티팩트 이름은 -epicapp
이 전달되지 않는 다른 스토어에서 출시할 경우 유용합니다.
EOS Plus 환경설정 세팅
EOS와 기타 온라인 플랫폼 간에 크로스 플레이를 구현하도록 프로젝트를 환경설정하고자 하는 경우, 프로젝트의 DefaultEngine.ini
파일에 다음 환경설정 세팅을 추가합니다.
- 온라인 서브시스템 EOS Plus 플러그인이 프로젝트에서 사용하도록 활성화되어 있는지 확인합니다.
-
EOS Plus 플러그인은 EOS를 다른 온라인 서비스와 함께 사용하도록 해 준다는 것을 기억하세요.
[OnlineSubsystemEOSPlus] bEnabled=true
-
- 디폴트 플랫폼 온라인 서비스를 EOS Plus로 변경합니다.
-
이 작업을 통해 EOS와 기타 플랫폼 서비스를 함께 사용한다는 것을 엔진에 알립니다. 또한, 사용하려는 부가적인 네이티브 플랫폼 온라인 서비스를 추가합니다. 이 예시에서는 Steam으로 설정되어 있으나, 콘솔 온라인 서비스를 포함하여 어떤 온라인 서비스로 설정하든 관계없습니다.
[OnlineSubsystem] DefaultPlatformService=EOSPlus ; 아래에 부가적인 플랫폼 온라인 서비스를 추가합니다 NativePlatformService=Steam
-
- 디폴트 OSS와 호환되는 넷 ID 타입이 무엇인지 커뮤니케이션합니다.
-
EOS/EOS Plus가 디폴트 OSS일 때만 설정이 필요합니다.
[/Script/OnlineSubsystemUtils.OnlineEngineInterfaceImpl] +CompatibleUniqueNetIdTypes=EOS +CompatibleUniqueNetIdTypes=EOSPlus
-
- EOS 및 EOS Plus 클라이언트 간의 커뮤니케이션을 지원합니다.
-
예를 들어, Steam 등의 기타 온라인 플랫폼으로 로그인한 EOS Plus 플레이어가 EOS 세션을 호스팅하고, (EOS Plus가 아닌) EOS 클라이언트가 해당 플레이어의 EOS 세션에 참여하는 시나리오를 고려해 보겠습니다. 순수 EOS 클라이언트는 EOS Plus 넷 ID가 EOS로 올바르게 라우팅되고 EOS 넷 ID로 비직렬화되도록 해야 하므로 이러한 매핑이 필요합니다. 이
MappedUniqueNetIdTypes
환경설정은 동일 환경설정 섹션에 이전 단계의 환경설정으로 추가됩니다.[/Script/OnlineSubsystemUtils.OnlineEngineInterfaceImpl] MappedUniqueNetIdTypes=(("EOSPlus","EOS"))
-
다음은 위에 설명된 모든 EOS Plus 환경설정 세팅입니다.
[OnlineSubsystemEOSPlus]
bEnabled=true
[OnlineSubsystem]
DefaultPlatformService=EOSPlus
NativePlatformService=Steam
[/Script/OnlineSubsystemUtils.OnlineEngineInterfaceImpl]
+CompatibleUniqueNetIdTypes=EOS
+CompatibleUniqueNetIdTypes=EOSPlus
MappedUniqueNetIdTypes=(("EOSPlus","EOS"))
로그인
온라인 ID 인터페이스에서 로그인 프로세스를 시작하는 메서드는 두 가지입니다.
- 자동 로그인(Auto Login): 로컬 사용자 수를 전달해야 합니다.
- 로그인(Login):
FOnlineAccountCredentials
오브젝트를 사용해야 합니다.
다음 섹션은 OSS EOS에서 자동 로그인 또는 로그인을 사용하여 사용자를 로그인하도록 하는 방법에 대해 설명합니다.
OSS EOS로 로그인
유효한 로컬 사용자 수를 입력해야 하며, 로그인 메서드를 사용하려면 FOnlineAccountCredentials
오브젝트를 전달해야 합니다. 이 클래스에는 3개의 항목이 있습니다.
- 타입
- Id
- 토큰
로그인 메서드
이 3개의 필드는 값에 따라 OSS EOS가 어떤 인증 메서드를 사용할지 가리킵니다. 다음 섹션은 사용 가능한 여러 인증 유형을 설정하는 각 방법의 예시를 제공합니다.
- 계정 포털
- 개발자
- 교환 코드
계정 포털
- 타입:
AccountPortal
- Id:
- 토큰:
계정 포털은 가장 일반적인 용도의 로그인 메서드로 EOS 개발자 인증 툴(Dev Auth 툴) 이 필요하지 않으며, 애플리케이션을 에픽게임즈 런처에서 실행할 필요도 없습니다.
이 메서드의 경우, EOS SDK 버전 1.15 이상을 사용 중이라면 로그인 호출 실행 시 게임 오버레이 UI가 나타납니다. 게임 오버레이가 활성화되어 있지 않은 경우에는 브라우저 창이 열립니다. 사용자는 메시지가 나타나면 에픽 계정 정보를 입력해야 합니다. 사용자가 에픽게임즈에 이미 로그인한 경우, 사용자는 요청되는 제품의 액세스 범위를 수락해야 합니다.
크리덴셜이 사용자에 의해 게임 내 오버레이 UI나 브라우저에서 제공되기 때문에, Id 또는 토큰을 제공할 필요가 없습니다.
개발자
- 타입:
Developer
- Id:
localhost:<PORT>
PORT
는 Dev Auth 툴에서 지정된 포트입니다.
- 토큰:
<CREDENTIALS_NAME>
CREDENTIALS_NAME
은 Dev Auth 툴에서 지정됩니다.
개발자 메서드는 데스크톱 플랫폼에서 OSS EOS로 개발할 경우 권장되는 메서드입니다. 이 메서드는 Dev Auth 툴을 실행하지 않아도 됩니다. 개발자 인증 툴에 대한 자세한 정보는 에픽 온라인 서비스 사이트의 다음 문서를 참조하세요.
Dev Auth 툴을 설정한 뒤에는 사용한 포트와 크리덴셜 이름을 기억했다가 위에서 언급한 FOnlineAccountCredentials
오브젝트의 Id
및 Token
필드에 기재해야 합니다. 로그인 호출이 실행되면 해당 로그인 메서드가 실행되며 사용자에게 에픽게임즈 계정 정보 입력을 요구할 것입니다. 사용자가 에픽게임즈에 이미 로그인한 경우, 사용자는 요청되는 제품의 액세스 범위를 수락해야 합니다. 이 단계는 사용자가 처음 로그인할 때만 발생합니다.
교환 코드
- 타입:
ExchangeCode
- Id:
- 토큰:
<EXCHANGE_CODE>
<EXCHANGE_CODE>
는 에픽게임즈 런처에서 제공됩니다.
교환 코드 메서드는 에픽게임즈 런처에 의해 제공되는 교환 코드가 필요하므로, 애플리케이션이 에픽게임즈 런처에서 실행될 때만 사용해야 합니다. 이 메서드는 Dev Auth 툴을 실행할 필요가 없으며, 게임의 출시 버전에서 사용해야 합니다.
에픽게임즈 런처가 교환 코드 토큰을 제공하기 때문에 Id나 토큰을 제공하지 않아도 됩니다.
로그인 성공
세 가지 메서드 중 하나가 성공적으로 완료될 경우, 로그인 프로세스에서는 필요한 EOS 알림 서비스(로그인 상태, 친구, 현재상태 업데이트, 인증 새로고침)를 전부 등록하고 종료하며, 다음과 같은 등록된 델리게이트를 트리거합니다.
OnLoginComplete
: 로그인 성공 여부와 새로 인증된 사용자의UniqueNetId
를 포함합니다.OnLoginStatusChanged
: 이전 및 현재 로그인 상태와 새로 인증된 사용자의UniqueNetId
에 대응하는 파라미터입니다.
OSS EOS로 자동 로그인
온라인 서브시스템 EOS에서 자동 로그인 메서드를 사용하려면, 시작 시 게임의 실행 파일에 추가 명령줄 실행인자를 전달해야 합니다. 이러한 실행인자는 자동 로그인을 사용하지 않을 경우 로그인 메서드로 전달되는 FOnlineAccountCredentials
오브젝트의 3개 필드에 대응합니다.
위 로그인의 파라미터는 다음과 같은 명령줄에 대응합니다.
FOnlineAccountCredentials 변수 | 명령줄 실행인자 |
---|---|
Type |
AUTH_TYPE |
Id |
AUTH_LOGIN |
Token |
AUTH_PASSWORD |
로그인 메서드
이 섹션은 이전 섹션에서 설명한 로그인 메서드 3개에 모두 필요한 파라미터의 예시를 포함하고 있습니다.
계정 포털
-AUTH_TYPE="accountportal"
개발자
-AUTH_TYPE="developer" -AUTH_LOGIN="localhost:<PORT>" -AUTH_PASSWORD="<NAME_IN_DEV_AUTH_TOOL>"
이 명령줄의 실행인자는 다음과 같습니다.
<PORT>
는 Dev Auth 툴에서 환경설정한 포트입니다.<NAME_IN_DEV_AUTH_TOOL>
은 Dev Auth 툴에서 선택한 크리덴셜 이름입니다.
교환 코드
-AUTH_TYPE="exchangecode" -AUTH_PASSWORD="<EXCHANGE_CODE_FROM_LAUNCHER>"
이 명령줄의 실행인자는 다음과 같습니다.
<EXCHANGE_CODE_FROM_LAUNCHER>
에픽게임즈 런처에서 제공하는 교환 코드입니다.
외부 계정 크리덴셜을 사용하는 로그인 흐름
이 섹션은 외부 계정을 사용하는 OSS EOS 로그인 흐름을 설명합니다. 외부 계정으로 로그인하려면 EOS Plus를 활성화해야 합니다.
에픽 계정 서비스 및 연결 인터페이스( EOS_Connect
)가 모두 활성화된 경우, 외부 계정 크리덴셜로 Steam 등 EOS가 아닌 플랫폼에 대해 EOS_Auth_Login
이 호출됩니다. 유효하지 않은 사용자 오류( EOS_InvalidUser
)로 로그인에 실패할 경우 EOS_Auth_LinkAccount
가 호출됩니다. 이 호출은 사용자가 웹 브라우저 또는 유저 인터페이스 오버레이를 통해 에픽게임즈 계정에 로그인하라는 메시지를 표시합니다. 이 로그인은 사용자의 에픽게임즈 계정을 EOS가 아닌 외부 계정에 연결합니다.
계정 연결 프로세스에 대한 자세한 정보는 아래의 알려진 문제를 참조하세요.
에픽 계정 서비스는 활성화되지 않았지만 연결 인터페이스는 활성화된 경우, 외부 계정 크리덴셜로 EOS_Connect_Login
이 호출됩니다.
인증 인터페이스( EOS_Auth
) 및 연결 인터페이스에는 모두 ID 제공자 환경설정이 필요합니다. 원하는 외부 플랫폼을 사용하려면 EOS 프로젝트 개발자 포털의 ID 제공자 목록에 해당 외부 플랫폼을 추가합니다. ID 제공자에 플랫폼을 올바르게 환경설정했다면, EOS 인증이 성공적으로 완료되고 모든 EOS 게임 피처에 대한 액세스가 잠금 해제됩니다. 자세한 정보는 ID 제공자 관리에 대한 에픽 개발자 리소스 문서를 참조하세요.
외부 계정 로그인을 사용하려면 EOS Plus를 활성화해야 합니다.
에픽 계정 서비스 사용하기
이 세팅을 활성화한 경우, 크로스 플랫폼 사용자 ID 사용하기(Using Cross Platform User IDs)도 활성화된 것처럼 로그인 프로세스를 계속 진행합니다. 외부 인증 토큰이 로그인 메서드에 필요한 크리덴셜 세트에 추가되고, EOS는 EOS_Auth_Login
메서드를 호출하여 인증을 시도합니다.
인터페이스
이 섹션은 온라인 서브시스템 EOS 플러그인에서 구현되는 인터페이스에 대한 추가 정보를 제공합니다. 각 인터페이스에 대한 자세한 정보는 온라인 서브시스템 문서를 참고하시기 바랍니다. OSS EOS 플러그인은 다음 EOS SDK 인터페이스를 지원합니다.
지원하는 인터페이스
OSS EOS 인터페이스 | EOS SDK 인터페이스 | 설명 |
---|---|---|
업적 | 업적 | 사용자 업적 상태를 잠금 해제 및 확인합니다. |
스토어, 구매 | Ecom | 아이템을 구매하고 해당 아이템의 소유권을 검증합니다. |
외부 UI | UI | 사용자 인터페이스 오버레이를 표시합니다. |
ID | 인증 | 로그인 및 로그아웃을 포함하여 사용자 계정을 검증합니다. |
리더보드 | 리더보드 | 리더보드를 생성하고 가져옵니다. |
현재상태 | 현재상태 | 친구들에게 현재 활동을 알립니다. |
세션 | 세션 | 세션 기반 매치메이킹을 관리합니다. |
친구 | 친구 | 친구 목록에서 플레이어를 추가하거나 제거합니다. 친구 목록을 가져옵니다. |
통계 | 통계 | 사용자 통계를 수집 및 쿼리합니다. |
타이틀 파일 | 타이틀 스토리지 | 암호화된 타이틀 데이터를 클라우드에서 다운로드합니다. |
사용자 클라우드 | 사용자 정보 | 사용자 표시 정보에 액세스합니다. |
세션
버킷 Id
OSS EOS 세션에서 BucketId
는 세션 검색을 위한 게임 전용 최상위 필터링 정보입니다. BucketId
세션에 대한 자세한 정보는 세션에 대한 EOS 문서를 참조하세요.
BucketId
는 FOnlineSessionSettings::Settings
에 추가된 커스텀 어트리뷰트를 사용하여 프로젝트에 필요한 어떤 것으로든 설정할 수 있습니다. 설정하려면 프로젝트 코드에 다음을 추가하세요.
SessionSettings.Settings.Add(OSSEOS_BUCKET_ID_ATTRIBUTE_KEY, FOnlineSessionSetting(FString(TEXT("BUCKET_ID_PLACEHOLDER")), EOnlineDataAdvertisementType::ViaOnlineService));
여기서:
BUCKET_ID_PLACEHOLDER
는 사용하고자 하는 버킷 Id입니다.
이 커스텀 BucketId
는 유사한 방식으로 세션 검색 파라미터에 추가되어야 합니다.
통계
통계 이름
OSS EOS는 모든 통계 이름(Stats Name)을 EOS로 전달하기 전에 대문자로 바꿉니다. EOS 개발자 포털에서 프로젝트를 환경설정할 경우, OSS EOS와 호환되도록 모든 통계 이름을 대문자로 바꾸세요.
알려진 이슈
계정 연결
로그인 프로세스 도중 계정 연결은 현재 Steam 플랫폼에서만 진행할 수 있으며, 다른 플랫폼에서 로그인을 시도하면 다음 인증 오류가 로그에 기록됩니다.
LogEOSSDK: Warning: LogEOS: Error response received from backend. ServiceName=[OAuth], OperationName=[TokenGrant], Url=[<Redacted>], HttpStatus=[400], ErrorCode=[errors.com.epicgames.account.oauth.authorization_pending], NumericErrorCode=[1012], ErrorMessage=[The authorization server request is still pending as the end user has yet to visit and enter the verification code.], CorrId=[...]
해당 기능은 향후 릴리즈에서 이용할 수 있게 될 예정입니다. 그때까지는 에픽게임즈 계정 설정의 연결(Connections) 섹션에 있는 계정(Accounts) 탭에서 수동으로 계정을 연결할 수 있습니다.
연결 프로세스에 사용된 에픽 계정은 애플리케이션의 액세스 범위를 수락(OSS EOS로 로그인 섹션 내용 참고)해야 합니다. 수락하지 않으면 오류가 로그에 기록됩니다.
LogEOSSDK: Warning: LogEOS: Error response received from backend. ServiceName=[OAuth], OperationName=[TokenGrant], Url=[<Redacted>], HttpStatus=[400], ErrorCode=[errors.com.epicgames.oauth.scope_consent_required], NumericErrorCode=[58005], ErrorMessage=[The user has not consented to required scopes.], CorrId=[...]
계정이 연결되고, 액세스 범위가 수락되었으며, EOS 인증이 올바른 경우, 로그인 프로세스가 성공적으로 끝나고 애플리케이션에서 EAS의 모든 추가 기능을 이용할 수 있습니다.