언리얼4 Online Subsystem Steam 사용하기
Intro
- Online Subsystem Steam 으로 멀티플레이 세션 생성과 참가 구현하기
Advanced Session Plugin 설치
엔진 버전에 맞는 플러그인을 다운받고 UE_Version\Engine\Plugins
경로에 추가한뒤 플러그인 활성화
프로젝트 폴더/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
서버 생성 위젯
블루프린트
설정 값을 모두 선택하고 Create
를 누르면 GameInstance
에서 CreateLobby
이벤트를 통해 Lobby
세션이 생성된다.
서버 탐색 UI
서버 탐색 위젯
자식 위젯 (서버 목록)
블루프린트
Find Session
을 통해 서버 리스트를 탐색하고 그 목록을 자식위젯으로 생성한다.
자식 위젯에서 join 버튼을 누르면 세션에 참가하도록한다.
로비 만들기
Game Mode
플레이어 입장
플레이어가 Lobby 레벨에 입장하면 로비 위젯을 생성하고 서버를 업데이트 한다.
업데이트 서버
플레이어 추방
플레이어를 추방하면 해당 플레이어는 PlayerController
에서 Detroy Session
이 실행되며 OnLogOut
이벤트로 배열에서 제거된다.
게임 시작
UWorld::ServerTravel
서버 전용입니다.
서버를 새 월드/레벨로 점프시킵니다.
접속된 모든 클라이언트도 따라갑니다.
멀티플레이어 게임에서 맵 사이 이동을 할 때 쓰는 방식으로, 서버에서 이 함수 호출을 담당합니다.
서버는 접속된 모든 클라이언트 플레이어에 대해 APlayerController::ClientTravel 을 호출합니다.
참고 문서1
ServerTravel
을 이용해 서버를 선택된 레벨로 이동해준다 이때 모든 접속된 클라이언트도 따라가게된다.
Lobby Player Controller
Lobby Widget
실행 결과
참고 자료
https://api.unrealengine.com/KOR/Programming/Online/Steam/index.html
https://www.youtube.com/watch?v=rWs6SyyVpTE
-
(https://api.unrealengine.com/KOR/Gameplay/Networking/Travelling/index.html) ↩
댓글남기기