본문 바로가기
공부/Unreal Engine 5

[언리얼5] 언리얼 온라인 서브시스템 스팀 연결

by MY블로그 2024. 2. 17.

플러그인 활성화

편집 > 플러그인 > Online Subsystem Steam 을 활성화 합니다.

비주얼 스튜디오 모듈 추가

프로젝트명.Build.cs 에 OnlineSubsystem , OnlineSubsystemSteam 모듈을 추가합니다.

 

DefaultEngine.ini 파일 수정하기

프로젝트 파일의 Config 폴더에있는 DefaultEngine.ini 파일을 텍스트 파일로 실행후

언리얼 홈페이지의 코드를 복사하여 하단에 붙여넣기 합니다.

추가해야할 코드

[/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"

언리얼엔진 문서 첨부

https://docs.unrealengine.com/4.27/ko/ProgrammingAndScripting/Online/Steam/

 

온라인 서브시스템 Steam

온라인 서브시스템 Steam 에 대한 개요와, Valve 의 Steam 플랫폼에서 배포용 프로젝트 셋업 방법을 알려드립니다.

docs.unrealengine.com

 

이후 모듈을 추가한 작업을 했기때문에 Binaries, Intermediate Saved, 솔류션 실행 파일을 제거후 모두 다시 빌드합니다.

다시 빌드할 때에는 엔진과 비주얼스튜디오를 모두 정상 종료한뒤에 실행합니다.

 

모듈 추가후 새롭게 빌드하는 방법은 이전 블로그글의 3번을 참고 합니다.

https://rhksgml78.tistory.com/534

 

[언리얼5] 액션&축 매핑 향상된입력(Enhanced Input)으로 변경하기(feat. C++)

언리얼4까지는 Action Mapping & Axis Mapping (액션 & 축 매핑)으로 플레이어의 입력값을 받아 동작을 진행하였습니다. 하지만 언리얼 5에서부터는 향상된입력기능이 적용 가능하므로 그에 맞추어 기존

rhksgml78.tistory.com

 

서브시스템 접근 코드 작성

언리얼 엔진의 3인칭 템플릿으로 프로젝트를 생성하고 해당 클래스에 코드를 작성합니다.

// CPP 에 필요한 헤더
#include "OnlineSubsystem.h"
#include "Interfaces/OnlineSessionInterface.h"

좌 : Character.h / 우 : Character.cpp 생성자

스레드 세이프의 스마트포인터의 온라인세션인터페이스를 저장할 변수를 생성하고

온라인 서브시스템의 정보를 얻어와 해당 서브시스템의 인터페이스를 변수에 넣어 줍니다.

텍스트를 출력하여 서브시스템을 테스트 합니다.

 

코드작성후 컴파일이 안될경우 모듈을 추가할때처럼 필요없는 폴더를 지우고 다시 빌드 하도록 합니다.

테스트1

엔진에서 실행시 NULL 을 출력합니다. 이것은 우리가 생각하는 nullptr 이 아니고 언리얼 엔진에서 제공하는 서브시스템의 이름이 NULL 이라고 합니다.

 

테스트2

스팀과 연결시키기 위해서는 패키징 작업을 하고 스팀 계정에 로그인 할 필요가 있습니다.

스팀계정이 없다면 스팀에 가입하고 로그인 합니다.

이후 프로젝트를 패키징 해보도록 합니다.

처음 프로젝트를 언리얼 5.3.2 버전으로 진행하였으나 해당 버전에서 SDK 이슈로 인하여 패키징이 불가능 하였습니다.

해당 문제의 해결 방법을 찾지 못하여 5.0.1 버전으로 프로젝트를 실행한 뒤 다시 테스트 하였습니다.

 

언리얼 5.3.2 패키징 이슈는 최신 SDK를 설치하여도 인식되지 않는것, .NET 3.1을 설치하여도 Windows 방화벽에서 언리얼 엔진을 허용하여도 그외 온라인 상에 모든 방법을 찾아보고 시도하였으나 해결되지 않았습니다..

 

혹시라도 5.3.2 SDK 인식 불가로 패키징이 불가능한 이슈를 해결할 방법을 알고계신분 께서는 알려주시면 감하사겠습니다!

 

패키징 후 테스트를 다시 해보도록 합니다.

이번에는 서브시스템의 이름이 Steam 으로 출력되고 스팀에 접속하였다는 안내창이 뜨는 것을 확인하였습니다.

 

에디터에서 스팀서브시스템 접근X

패키징후 서팀서브시스템 접근O

 

스팀 기본설정시 생성한 서버를 찾을때 같은 지역에서 찾을수 있도록 지역을 일치 시켜야함

스팀설정 > 다운로드 > 다운로드지역 = 같은 지역으로

댓글