동기화
로비씬 만들기
해당경로의 로비씬을 Assets 폴더의 씬 폴더로 이동시킴
LobbyMainPanel 코드 수정
해당코드는 Start 버튼 누르면 해당 룸을 찾을 수 없도록 만들고 게임씬으로 이동하는데
1번 게임씬을 불러오도록 수정함
Remove에 문제가 생겨서 수정한거임
playerListEntries<int, GameObject> 딕셔너리서 ActorNumber에 해당하는 게임오브젝트를 찾아 entry를 내보내고
entry를 파괴 후에 해당 ActorNumber에 해당하는 애를 엔트리서 삭제한다.
initialProps << 해시테이블이라고 포톤서 딕셔너리처럼 저장한애가 있음
AsteroidsGame의 클래스를 사용해 해시테이블안에 넣었고
그 해시테이블을 내 프로퍼티로 등록한 것이다.
플레이어 레디 버튼을 눌렀을 때의 콜백을 등록했다. Add리스너 방식으로 호출한다.
리스트가 없으면 만들어주고
만일 있을 때는 AcotrNumber에 일치하는 오브젝트가 있으면 레디 여부를 확인하는 것이다.
방장(마스터 클라이언트)이 아니면 권한이 없고. 플레이어를 전부 돌면서 만일 아무도 거절한 사람이 없다면 true를 반환하게 되고
스타트 버튼이 보이게 되는것이다.
만일 방이 이미 다찼거나 안보이게 했던가 리무브가 됐으면
캐시드룸리스트는 딕셔너리고 바로바로 접근할 수 있고 뺴주는 것이다.
뺴주는 작업을 하고
만일 존재한다면 새로운 info로 업데이트 비어있다면 add를 통해 리스트를 맞춰줌
그거에 따라서 UpdateRoomListView를 함
이런식으로 로비를 만듬
퐁이 시작되는 부분까지 처리됨
퐁만 만들면 플레이가 가느애짐
공은 동기화가 되어야겠지 포톤뷰를 추가함
공에 포톤뷰를 추가하면 동기화의 대상이 됨
Reliable Delat Compressed: 위치가 전달이 됐는지 확인하는 TCP 같은 개념
포톤 리지드 바디 추가
너무 멀어지면 텔레포트 하게했고
속도를 맞추게함
플레이어를 패들이라 이름 바꿈
리지드바디가 아닌 트랜스폼으로 움직일 것이라 transform view를 추가 필요한건 포지션만이니 Position만 체크해줌
보내는 양이 줄어드니 필요한 것만 체크하자
게임매니저도 서버로 보내줘야함
리소스 폴더에 공이랑 패들 프리팹으로 넣음
포톤 내부에서 이 폴더 안에서 찾기에 어쩔 수가 없다.
나머지는 포톤 트랜스폼 뷰가 알아서 해주고 내게 아닌것만 건들이지 않도록 코드 짠거다.
게임매니저서
리소스 폴더의 프리팹 가져와 포톤에서 생성하는 모습
PunRPC로 RPC로 만듬
nameof 로 해야 참조가 보여져 유지보수가 쉬움