룸 유지 가이드

이 가이드에서는 어떻게 Photon이 웹서버에 룸 데이터를 유지하는지 설명합니다.

개념

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 응답으로 받을 필요가 있습니다.

CheatSheet

IsPersistent PathCreate PathClose RoomOptions 설명
true valid path valid path PlayerTTL == -1
0 <= EmptyRoomTTL
비활성 플레이어들은 타임아웃이 절대 걸리지 않습니다.
룸 상태는 다음을 제외하고 항상 전송됩니다.:
  • 모든 액터들이 영원히 명시적으로 나간 경우.
  • 룸이 비어있는 상태로 EmptyRoomTTL ms 동안 유지될 경우.
* * * EmptyRoomTTL >= PlayerTTL
PlayerTTL >= 0
룸 상태는 절대 전송되지 않습니다.
true valid path valid path PlayerTTL > EmptyRoomTTL
EmptyRoomTTL >= 0
저장 후 PlayerTTL - EmptyRoomTTL ms 이내에서만 룸이 로드 됩니다.
false * * * 룸 상태는 절대 전송되지 않습니다.
* 비어 있거나 유효한 패스가 아님 * * 룸 상태는 절대 로드되지 않습니다.
* * 비어 있거나 유효한 패스가 아님 * 룸 상태는 절대 전송되지 않습니다.
Back to top