세션 만들기 

게임 인스턴스의 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 버튼을 눌러 테스트하지 않고 배치 파일을 여러개 실행하여 호스트와 조인이 잘 작동하는지 테스트할 수 있다.

 

+ Recent posts