언리얼4 Online Subsystem Steam 사용하기

Intro

  • Online Subsystem Steam 으로 멀티플레이 세션 생성과 참가 구현하기

Advanced Session Plugin 설치

플러그인

엔진 버전에 맞는 플러그인을 다운받고 UE_Version\Engine\Plugins 경로에 추가한뒤 플러그인 활성화

1

프로젝트 폴더/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"

서버 생성 UI

서버 생성 위젯

2

블루프린트

설정 값을 모두 선택하고 Create를 누르면 GameInstance에서 CreateLobby 이벤트를 통해 Lobby 세션이 생성된다.

3

서버 탐색 UI

서버 탐색 위젯

4

자식 위젯 (서버 목록)

5

블루프린트

Find Session을 통해 서버 리스트를 탐색하고 그 목록을 자식위젯으로 생성한다.

6

자식 위젯에서 join 버튼을 누르면 세션에 참가하도록한다.

로비 만들기

Game Mode

플레이어 입장

플레이어가 Lobby 레벨에 입장하면 로비 위젯을 생성하고 서버를 업데이트 한다.

업데이트 서버

플레이어 추방

플레이어를 추방하면 해당 플레이어는 PlayerController에서 Detroy Session이 실행되며 OnLogOut이벤트로 배열에서 제거된다.

게임 시작

UWorld::ServerTravel
서버 전용입니다.

서버를 새 월드/레벨로 점프시킵니다.

접속된 모든 클라이언트도 따라갑니다.

멀티플레이어 게임에서 맵 사이 이동을 할 때 쓰는 방식으로, 서버에서 이 함수 호출을 담당합니다.

서버는 접속된 모든 클라이언트 플레이어에 대해 APlayerController::ClientTravel 을 호출합니다.

참고 문서1

ServerTravel을 이용해 서버를 선택된 레벨로 이동해준다 이때 모든 접속된 클라이언트도 따라가게된다.

Lobby Player Controller

Lobby Widget

실행 결과

7

8

참고 자료

https://api.unrealengine.com/KOR/Programming/Online/Steam/index.html

https://www.youtube.com/watch?v=rWs6SyyVpTE

  1. (https://api.unrealengine.com/KOR/Gameplay/Networking/Travelling/index.html) 

댓글남기기