요 몇일 컨디션이 안좋은거 버티면서 운동 하던게 한달만에 한꺼번에 반동이 와버렸습니다.

 

내리 2시간을 유니티 업데이트 후에 2시간 정도 뻗어버렸습니다..

 

그래서 충분히 개발까지 할 수 있을법한 시간에 대략적인 계획만 잡게 되었습니다.

 

문서를 읽어보면서 나온 내용을 종합해보자면

1. OnPhotonSerializeView에서 Stream이 Writing 중이면 통신을 보내고, Reading 중이면 통신을 받는다.

2. OnPhotonSerializeView는 Update와 같이 수시로 호출이 된다.

3. OnPhotonSerializeView는 PUN2 내부 스크립트에서 호출되는 함수다. 의도적으로 호출할 수 없다.

이 세가지입니다.

 

제가 구현해야 하는 기능은 "Player들의 PlayerInfoList의 동기화" 입니다.

여기서 주의해야 할 점은

1. 새로운 Player가 접속했을 경우, 기존에 Data를 가지고 있는 Player의 PlayerInfoList를 read 해야지
본인이 가지고 있는 것을 write 해서 기존의 Player들의 PlayerInfoList가 날라가면 안된다.

2. 반대로 Player가 방을 나갈 때는 해당 Player의 PlayerInfoList가 write 되어야 한다.

이 정도 될 것 같습니다.

 

지금 생각하는 구현 방식은 대략 두가지 정도입니다.

1. Player가 각자 관리하는 트리거를 둔다.
Host-Client 구분은 쉽게 될 것 같으니, 이를 통해 Client는 평소에는 write 하지 않고 read만 하도록 한다.
Host는 항상 write와 read를 열어 둔다.

Client의 주도로 List가 바뀌는 경우(ex. ready, logout)에는 해당 이벤트가 발생 시 호출하는 함수에서 트리거를 열어둔다.

열린 트리거는 write 하는 부분 마지막에 자동으로 잠궈두도록 한다.

 

2. RPC로 PlayerList를 관리한다.

OnJoinRoom 이벤트에서 RPC 함수를 통해 자신의 PlayerInfo를 전달한다.

Update 함수에서 전달 받은 PlayerInfo가 존재하는 경우, 이를 초기화하고 PlayerInfoList에 PlayerInfo를 적용한다.

이 중 Host는 다시 RPC를 함수를 통해 최신 버전의 PlayerInfo를 전달한다.

 

가능하면 금요일에 이 방법들을 구현해보고 싶으나, 아직 확신이 없습니다.

때문에 몇일 더 구현 방법을 고려해보고 그럴듯하다는 확신이 생기면 개발을 하고자 합니다.

'폐기된 게시판 > MBGC' 카테고리의 다른 글

20.05.01 개발일지 - 일시정지  (0) 2020.05.01
20.04.28 개발일지 2  (0) 2020.04.28
20.04.24 개발일지  (0) 2020.04.24
20.04.21 개발일지  (0) 2020.04.21
20.04.17 개발일지  (0) 2020.04.17

+ Recent posts