Unreal Engine 5 C++ Multiplayer Shooter
세션 참가도 생성, 검색과 똑같이 델리게이트를 통해 진행한다.
세션 생성 시 매치 종류를 설정하도록 한다.
- 아래에서는 FreeForAll이라는 문자열로 설정되었고, Steam 온라인 서비스와 핑을 통해 홍보된다.
- 이 문자열을 통해 세션 검색 시 원하는 매치를 필터링할 수 있다.
세션 생성에 성공했으면 호스팅할 플레이어는 Lobby 레벨을 Listen 서버로 연다.
세션 생성 시 FOnlineSessionSettings 객체로 설정했던 값들을 FOnlineSessionSearchResult.Session.SessionSettings를 통해 다시 가져올 수 있다.
- 아까 설정했던 매치 종류를 통해 필터링한다.
매치 종류가 FreeForAll인 첫 번째 세션을 찾았으면, 델리게이트 리스트에 델리게이트를 등록하고 세션에 참가한다.
- Unique ID, 세션 이름, 참가할 세션을 갖고 있는 FOnlineSessionSearchResult 객체를 전달한다.
세션 참가에 성공했으면 호스팅하고 있는 IP 주소를 얻어와 레벨로 이동한다.
- IOnlineSessionPtr->GetResolvedConnectString() 함수에 세션 이름을 전달하면, 방금 참가한 세션의 주소를 Address에 저장한다.
현재 BP는 다음과 같다.
패키징 후 한 컴퓨터에서 1번 키를 눌러 세션을 생성하고 Lobby 레벨을 Listen 서버로 연 후, 다른 컴퓨터에서 2번 키를 눌러 세션에 참가하고 IP 주소에서 호스팅 중인 레벨로 이동한다.
IOnlineSessionPtr->GetResolvedConnectString() 함수에서 얻어온 주소는 다음과 같은 형식을 갖는다.
- steam.난수:포트
'Unreal Engine > UE5 C++ Multiplayer Shooter' 카테고리의 다른 글
멀티 플레이어 플러그인 제작: 프로그래밍 서브시스템 (0) | 2023.03.26 |
---|---|
멀티 플레이어 플러그인 제작: 생성 (0) | 2023.03.26 |
세션 검색 (0) | 2023.03.25 |
세션 생성 (0) | 2023.03.25 |
온라인 서브시스템으로 Steam 연결 (0) | 2023.03.25 |