게임개발일지/리그오브워치

[리그오브워치개발일지] #12-1 데디케이트 서버 버그 수정

김진우 개발일지 2023. 12. 7. 12:38

Git

레포지토리 주소 : https://github.com/kjinwoo12/UE5Game_LeagueOfWatch
기준 태그 : 12_teamSelection_withDedicatedServer_bugfix

본문

이전글에서 서버와 클라이언트 간 동기화 문제로 정상 작동하지 않은 문제가 있었다. 두 번 중에 한 번 꼴로 유저 이름과 플레이어를 보여주는 UI가 나타나지 않았다. 원인은 PlayerState가 클라이언트에 스폰되기 전에 서버에서 클라이언트로 모든 플레이어가 접속했다고 이벤트를 호출했기 때문이다. 모든 플레이어가 접속하면 UI를 띄워 PlayersState에 있는 변수를 읽어와야 하는데 그 시점에 클라이언트에 PlayerState가 스폰되었다는 보장이 없다.

참고

클라이언트에서 모든 PlayerStateBeginPlay를 호출했을 때 준비완료 상태임을 서버에 알리고, 서버에서는 모든 클라이언트가 준비완료 상태일 때 모든 플레이어가 접속했다는 이벤트를 호출하면 버그를 고칠 수 있다.

이 버그를 고치면서 만든 GameMode, GameState, PlayerController, PlayerState는 따로 분리해 마켓플레이스에 올려도 괜찮을 것 같다.