세션 만들기
게임 인스턴스의 BeginPlay에서 온라인 서브 시스템에서 세션 인터페이스를 얻고
UI의 Host 버튼의 OnClick에서 CreateServer를 호출하면 세션 세팅 이후에 세션 인터페이스->CreateSession 함수를 호출하도록 한다.
세션 생성 작업이 끝난 후 자동으로 실행시키고 싶은 함수(예를 들면 Lobby 레벨로 이동)은 GameInstance Init에서 OnCreateSessionCompleteDelegates델리게이트에 함수를 바인드 해주면 된다.
세션 찾기
// SessionSearch는 FOnlineSessionSearch의 TSharedPtr
// 멤버로 추가
TSharedPtr<FOnlineSessionSearch> SessionSearch;
SessionSearch = MakeShareable(new FOnlineSessionSearch());
// SessionSearch에 검색 쿼리에 대한 정보를 설정할 수 있음
SessionSearch->QuerySettings.Set (쿼리 세팅)
검색에 대한 결과는 SessionSearch->SearchResults에서 받아볼 수 있다. (TArray<FOnlineSessionSearchResult> 자료형)
SessionInterface->FindSessions(0, SessionSearch.ToSharedRef());
세선 참가
SearchResults[0]은 세션 찾을 때 얻은 SessionSearch->SearchResults의 첫 번째 요소이다. 세션에 참가할 때 인자로 사용된다.
JoinSession은 로컬 유저 아이디, 세션 이름, 세션 인자를 받아 호출될 수 있다.
SessionInterface->JoinSession(0, "My Session", SearchResults[0]);
세션 생성과 마찬가지로 Join 이후에 실행시키고 싶은 작업은
OnJoinSessionCompleteDelegates 델리게이트에 등록한 OnJoinSessionComplete 함수 내부에서 작성해주면 된다.
테스트에 사용한 UProject 파일 실행 인수
배치 파일을 만들고 [언리얼 에디터 경로] [Uproject 경로] [옵션 인자]
에디터에서 Play 버튼을 눌러 테스트하지 않고 배치 파일을 여러개 실행하여 호스트와 조인이 잘 작동하는지 테스트할 수 있다.
'언리얼 5 > 게임 개발 일지' 카테고리의 다른 글
FPS 게임 개발 #13 (세션 관련 기능 마무리, 앞으로의 개발 방향) (1) | 2022.11.21 |
---|---|
FPS 게임 개발 #12 (스팀 온라인 서브시스템 테스트, 세션 리스트 검색) (0) | 2022.11.20 |
FPS 게임 개발 #10 (온라인 서브 시스템 스팀 모듈 세팅, 메인 메뉴 UI 디자인) (0) | 2022.11.18 |
FPS 게임 개발 #9 (캐릭터 죽음 처리 : 리스폰, 카메라 워킹) (0) | 2022.11.17 |
FPS 게임 개발 #8 (캐릭터 죽음 처리 : 래그돌, 점수 누적) (0) | 2022.11.15 |