현재 PUN은 룸에 재참여하는 것을 완전하게 지원하고 있지 않습니다. 따라서 이 가이드는 PUN 을 포함하고 있지 않습니다.
개념
Photon 어플리케이션은 동기적으로 설정되어 있지만 비동기 방식으로 확장 될 수 있습니다. Photon webhooks를 사용할 수 있게 할 수 있으며 플레이어들이 게임 데이터의 누락없이 방에 재참여 할 수 있도록 설정 할 수 있습니다. 또한 친구 초대를 받아서 비동기적으로 룸에 참여 할 수 도 있습니다.
Photon 에서 게임 데이터는 룸 상태로 언급 됩니다. 룸 상태는 다음으로 구성 됩니다:
룸 옵션
룸 프로퍼티
액터 목록
이벤트 캐시
떠났던 게임을 다시 시작하기 위해서는 룸 상태가 다시 만들어 져야 합니다. 따라서 Photon이 데이터의 저장과 로딩을 가장 기초적 이면서도 간단한 방법으로 룸 상태를 현재로 저장하는 이유입니다.
룸 상태 저장
룸 상태를 저장하려면 다음의 webhooks 설정이 필요 합니다:
BaseUrl 는 유효한 URL 이어야 합니다.
IsPersistent = true.
PathClose 는 유효한 작업 패스 이어야 합니다.
룸을 생성 할 때 이러한 조건이 맞아야 합니다:
PlayerTTL == -1 또는 PlayerTTL > EmptyRoomTTL.
CheckUserOnJoin = true.
플레이어가 룸을 포기하지 않고 떠나게 되는 경우에는 OpLeave(true) 를 호출 해야 합니다.
룸 상태는 GameClose webhook 내로 전송 되며 룸 상태를 웹 서버에 저장 해야 합니다.
룸 상태 로딩
룸 상태를 로드 하기 위해서는 아래 처럼 webhooks를 설정 해야 합니다:
BaseUrl 유요한 URL 이어야 합니다.
IsPersistent = true.
PathCreate 유효한 작업 경로 이어야 합니다.
룸에 재참여 하기 위해서는 다음의 메소드를 호출 해야 합니다:
lbClient.OpJoin(-1, roomName);
만약 게임안에 도전과 초대 기능이 있다면 AsyncJoin 을 true 로 설정하여 사용할 수 있도록 해야 하고 일반적으로 이름을 통하여 룸에 참여 합니다:
lbClient.OpJoin(0, roomName);
웹 서버로 부터 이전에 저장되었던 룸 상태를 webhook 응답으로 받을 필요가 있습니다.