21.07.03 - 씬 전환 처리, GUI 동기화

2021. 7. 4. 02:22뚝딱뚝딱 만들기 Devlog/프로젝트 Devlog

멀티플레이어에 대해 감을 잡은줄 알았는데 아직 한참 멀었나봅니다.

근 며칠간 삽질을 엄청 했네요.

 

제가 뭐 reaction time이 중요한 슈팅게임이나 액션게임을 만드는게 아닌데도

동기화에 대한 문제가 생겼었습니다.

게임씬에 돌입하면 게임 매니저가 해당 게임에 특화된 플레이어 오브젝트들을 spawn해주는 방식이었는데,

이게 호스트는 잘 되지만 게임씬이동->플레이어spawn의 순서가 클라이언트에서는 꼬여서 되는경우가 많았습니다.

 

그래서 이젠 모든 클라이언트의 씬이 로드되면 호스트에게 신호를 주고,

플레이어 오브젝트들이 모두 spawn되고 init까지 됐을 때 신호를 다시 줘서

이 때부터 게임의 로직을 적용하도록 했습니다.

 

추가적으로 시간맞추기 게임에서 다른 유저가 버튼을 눌렀을 때를 감지해서 모든 유저들의 화면에 반영되게 했습니다.

 

첫 버튼은 호스트가 누른거고 두번째 버튼은 다른유저가 누른건데 누르자마자 화면이 바뀌게해서 일단 이렇게..

로비에서 인원수 제한을 둘 수도 있고(2인 or 4인) 로비에서 누군가 게임을 끄면 그 유저를 방에서 내보내는 것도 구현됐습니다.

 

미니게임의 루프 쪽을 계속 건드리다보니 코드가 또 뒤죽박죽이 돼서 한번 정리해야겠습니다.

또 서버/클라 코드를 구분하고싶은데 이게 잘 될지 모르겠네요. 몇가지 방법을 생각중인데 다 해볼 생각입니다.

 

1. 서버/클라 코드 스크립트를 2개로 나눈다. (2개의 컴포넌트) 그리고 호스트에만 서버코드를 붙여준다.

2. 스크립트는 1갠데 partial로 파일만 나눈다. 

3. 스크립트는 1갠데 partial로 파일만 나눈다. + 함수 이름 뒤나 앞에 서버코드인지 클라코드인지 명시한다.

728x90