게임개발일지/리그오브워치
[리그오브워치개발일지] #12-1 데디케이트 서버 버그 수정
김진우 개발일지
2023. 12. 7. 12:38
Git
레포지토리 주소 : https://github.com/kjinwoo12/UE5Game_LeagueOfWatch
기준 태그 : 12_teamSelection_withDedicatedServer_bugfix
본문
이전글에서 서버와 클라이언트 간 동기화 문제로 정상 작동하지 않은 문제가 있었다. 두 번 중에 한 번 꼴로 유저 이름과 플레이어를 보여주는 UI가 나타나지 않았다. 원인은 PlayerState
가 클라이언트에 스폰되기 전에 서버에서 클라이언트로 모든 플레이어가 접속했다고 이벤트를 호출했기 때문이다. 모든 플레이어가 접속하면 UI를 띄워 PlayersState
에 있는 변수를 읽어와야 하는데 그 시점에 클라이언트에 PlayerState
가 스폰되었다는 보장이 없다.
참고
- PlayerState is invalid on client after GameMode::PostLogin()
- Player state from game state not working in ue5?
클라이언트에서 모든 PlayerState
가 BeginPlay
를 호출했을 때 준비완료 상태임을 서버에 알리고, 서버에서는 모든 클라이언트가 준비완료 상태일 때 모든 플레이어가 접속했다는 이벤트를 호출하면 버그를 고칠 수 있다.
이 버그를 고치면서 만든 GameMode
, GameState
, PlayerController
, PlayerState
는 따로 분리해 마켓플레이스에 올려도 괜찮을 것 같다.