언리얼 C++ 프로그래밍

[언리얼 C++] 온라인 서브시스템 Steam

언린이 2021. 8. 17. 09:46

온라인 서브시스템 Steam API를 통해 언리얼 엔진 4 애플리케이션을 Valve의 Steam 플랫폼에 출시하는 것이 가능합니다. Steam 모듈의 주 목적은 Steam 사용자들에게 매치메이킹이나 리더보드같은 피처 세트가 포함된 애플리케이션을 쉽게 배포할 수 있도록 하기 위함입니다.

추가적으로 Steam 모듈은 온라인 서브시스템으로 노출된 인터페이스를 다수 구현하여 Steamworks Software Development Kit(SDK)에 제공된 것을 대부분 지원합니다.

 

사용가능한 Steam 인터페이스는 아래와 같습니다.

  • 매치메이킹
  • 리더보드
  • 업적
  • 음성
  • 유저 클라우드
  • 공유 클라우드
  • 외부 UI

위의 지원되는 인터페이스를 사용하여 애플리케이션에 피처 세트를 포함시킬 수 있습니다.

 

 

1. Steamworks 다운로드

Steamworks SDK 최신 버전을 다운로드하여 /YourUnrealEnginePath/Engine/Source/ThirdParty/Steamworks/Steam[Current Version]/sdk 위치로 복사해줘야 합니다.

 

그런 다음 "Plugins\Online\OnlineSubsystemSteam\Source\Private\"에 위치한 "OnlineSubsystemSteamPrivatePCH.h" 파일을 엽니다.

 

#define STEAM_SDK_ROOT_PATH TEXT("Binaries/ThirdParty/Steamworks")

"OnlineSubsystemSteamPrivatePCH.h" 파일에서 Steamworks SDK 루트 위치를 정의하는 코드를 찾을 수 있는데,

 

#define STEAM_SDK_VER TEXT("Steam[Current Version]")

해당 코드를 위 예제 코드처럼 변경해주시면 됩니다.

 

 

2. 애플리케이션 세팅 환경설정

[/Script/Engine.GameEngine]
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")

우선 애플리케이션의 DefaultEngine.ini 파일에 위와 같은 세팅을 추가합니다.

 

[OnlineSubsystem]
DefaultPlatformService=Steam

 그리고 나서 언리얼 엔진 4가 온라인 서브시스템 Steam을 사용하도록 하려면, 위와 같은 세팅도 추가해줍니다.

 

[OnlineSubsystemSteam]
bEnabled=true
SteamDevAppId=480

애플리케이션에 온라인 서브시스템 Steam을 사용할 것이라 알렸으니, OnlineSubsystemSteam 모듈 환경설정은 위와 같은 세팅을 추가하면 됩니다.

 

[/Script/OnlineSubsystemSteam.SteamNetDriver]
NetConnectionClassName="OnlineSubsystemSteam.SteamNetConnection"

마지막으로, 애플리케이션 연결을 위한 넷 드라이버에 Steam 클래스를 지정해주면 끝납니다.

 

최종 세팅

[/Script/Engine.GameEngine]
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")

[OnlineSubsystem]
DefaultPlatformService=Steam

[OnlineSubsystemSteam]
bEnabled=true
SteamDevAppId=480

[/Script/OnlineSubsystemSteam.SteamNetDriver]
NetConnectionClassName="OnlineSubsystemSteam.SteamNetConnection"