스팀 온라인 서브시스템 사용하기

DefeaultEngine.ini -> [OnlineSubSystem]의 DefaultPlatformService=Steam으로 설정

 

 

CreateServer 함수에서 SessionSettings의

bIsLANMatch = false 설정

bUseObbiesIfAvailable = true 설정

 

FindServer함수에서 SessionSearch의 bIsLanQuery = false 설정

 

각자 다른 스팀 ID로 로그인 되어있어야 한다.

프로젝트를 패키징하여 다른 컴퓨터로 옮겨 테스틀 진행하는 것은 시간이 많이 소요 되므로 처음에 한 번 연결이 잘 되는 것을 확인한 후에는 DefeaultEngine.ini -> [OnlineSubSystem]의 DefaultPlatformService=Null로 설정해 빠르게 테스트할 수 있도록 한다.

세션(방) 리스트 검색

MainMenu_UI의 Join 버튼을 누르면 FindSession이 실행되고, SessionResults에 검색 결과들이 배열로 저장된다.

 

FindSession의 결과로 얻을 수 있는 MaxPlayer, CurrentPlayers 정보 + 서버 이름을 갖는 구조체를 정의한다.

이 구조체 하나만을 인수로 갖는 다이나믹 멀티캐스트 델리게이트 FServerDel을 선언해준다.

 

FindSession 이후 호출되는 OnFindSessionComplete에서는 FindSession의 결과로 얻은 FOnlineSessionSearchResult의 배열을 순회하면서  (검색된 세션의 개수만큼의 요소를 가지는 배열) ServerListDel를 브로드캐스트 해준다.

브로드캐스트 해줄 때마다 블루프린트에서 바인딩한 ServerReceived 커스텀 이벤트가 실행되어 위젯을 만들어주게 된다.

 

 

처음에 Join 버튼을 누르면 위젯 스위처에 의해 오른쪽 부분이 방 리스트를 선택할 수 있는 UI로 바뀌고,

새로운 검색을 위해 Scroll Box의 자식들을 Clear 해준다.

 

 

만들어진 위젯은 ScrollBox의 자식으로 들어간다. 

 

 

방 한 개 마다 생성되는 위젯은 반응하지 않는 텍스트 하나로 구성되어 있다. 

 

만들어진 세션들을 검색할 수 있다.

 

+ Recent posts