[리그오브워치개발일지] #13 유저 인터페이스 : 캐릭터 선택 (3) 선택 규칙
Git
레포지토리 주소 : https://github.com/kjinwoo12/UE5Game_LeagueOfWatch
기준 태그 : 13_TeamSelectionRule_bugfix
요구사항 확인
이전글에서는 매치메이킹이 완료된 것을 가정하고 서버에 매칭된 유저가 UI를 통해 캐릭터를 선택하고 확인할 수 있는 기능을 완성했다. 하지만 UI만 완성했을 뿐 캐릭터 선택 전체를 완성한 것은 아니다. 캐릭터 선택 전체를 완성하기 위해서는 캐릭터 선택 화면에서 발생할 수 있는 다양한 상황에 대처해야 한다. 예를 들어 캐릭터 선택 도중에 플레이어가 나간다거나, 캐릭터를 선택하지 못하고 선택 제한시간이 지난 상황에서 각각의 클라이언트에게 적절한 화면을 띄워줘야 한다. 또, 캐릭터 선택이 정상적으로 완료되었을 때 인게임 레벨로 전환해 게임을 시작하도록 만들어야 한다.
요구사항을 자세히 정리하면 아래와 같다.
- 캐릭터 선택 완료 후 인게임 레벨로 전환
- 선택 제한시간 추가
- 예외처리
- 도중에 플레이어가 접속 종료했을 때 처리
- 제한시간 내에 캐릭터를 선택하지 못했을 때 처리
기능 구현
캐릭터 선택 완료 후 인게임 레벨로 전환
모든 유저가 캐릭터 선택을 완료했다면 인게임 레벨로 전환해야 한다. 보통 레벨을 변경할 때에는 OpenLevel
을 사용하지만 서버에서 사용한다면 모든 클라이언트의 연결이 끊기고 서버의 레벨만 변경되기 때문에 다른 방법을 사용해야 한다. 서버에서 클라이언트와 함께 접속을 유지한 상태로 레벨을 변경하려면 Execute Console Command
노드를 사용해야 한다.
ServerTravel [레벨이름]
문자열을 Command
파라미터에 전달하면 [레벨이름]
에 해당하는 레벨로 클라이언트와 함께 이동할 수 있다.
참고자료
선택 제한시간 추가
#4 기본 게임 규칙 구현 : 미니언 생성에서 만들었던 타이머를 사용해 선택 제한시간을 잰다. 제한시간이 지나면 플레이어를 서버에서 로그아웃하고 EntryLevel
로 돌아온다.
데디케이트 서버에서 플레이어를 따로 로그아웃하는 방법은 단순히 Open Level
을 호출함으로써 서버와 연결을 끊는 것이다. Logout
노드는 데디케이트 서버에서 작동하지 않으니 주의해야 한다.
예외처리
두 가지의 예외가 존재한다.
- 도중에 플레이어가 접속 종료했을 때
- 제한시간 내에 캐릭터를 선택하지 못했을 때
이 경우 모두 모든 플레이어를 Entry
로 레벨을 옮기고 서버를 종료한다.