Webhooks FAQ
룸 재참여는 어떻게 하나요?
사용자가 퇴장 당하지 않았다면 이전에 참가 했었던 방에 다시 참여 할 때는 두 가지 방식이 있습니다.
두가지 방식 모두 각각의 조건이 맞아야 하며 게임클라이언트에서 LoadBalancingClient.OpJoinRoom()
를 호출하여 재참여를 합니다.
전달되는 actorNr
아규먼트는 0 이 아니며 이 값은 재참여를 의미하게 됩니다(actorNr != 0
).
권장 방식:
RoomOptions.CheckUserOnJoin = true
첫 번째 방식은 암시적인 재참여이고 사용자에게 완전하게 투명한 것으로서 여겨 집니다.
이 방식은 룸이 최초로 생성 되었을 때RoomOptions.CheckUserOnJoin
플래그가 true 로 설정되었다고 가정합니다.
룸에 재참여 하는 경우에 클라이언트 SDK 에서OpJoinRoom()
을 0 이 아닌 ActorNr 와 같이 호출 하면 됩니다.명시적 방식:
RoomOptions.CheckUserOnJoin = false
,ActorNr>0
룸 생성시에RoomOptions.CheckUserOnJoin
이false
로 설정 되어있고,OpJoinRoom()
을 호출 할 때 엄격하게 양수의 ActorNr (actorNr>0
) 를 지정하여 재참여 하는 다른 접근 방식입니다.
예상하는 결과에 도달하기 위해서 최초 그 방에 참여 했을 때에 부여되었던 번호와 정확하게 같은 ActorNr 로 재참여 해야 합니다.
따라서 룸의 각 사용자에 대한 ActorNr 를 저장 해야 합니다.
새로운 룸을 생성하는 동안 EmptyRoomTtl
을 최대 값으로 설정하면 어떻게 되나요?
가능하지 않으며 Photon 이 EmptyRoomTtl
을 더 낮은 값으로 수정되어야 한다는 오류를 리턴 할 것입니다.
Photon 클라우드의 EmptyRoomTtl
한계점은 300,000 milliseconds( 5분) 으로 설정되어 있으며 독립적으로 호스트 한 Photon 서버에서 변경이 가능 합니다.
EmptyRoomTtl
의 최적 값은 12 초 ( 12,000 milliseconds) 입니다.
Webhooks로 룸 상태를 변경할 수 있나요?
Webhooks는 룸 상태의 내용을 변경할 수 없습니다.
룸 상태의 저장과 가져오는 것 이외에 webhook 의 흥미로운 유즈 케이스가 있나요?
글쎄요, webhooks 를 활용해서 할 수 있는 일은 너무나 많습니다 :)
일부 사항을 나열 해봤습니다 :
- 서버측 인증 코드:
서버 측에서만 수행되어야 할 필요가 있는 특정 게임 로직을 사용할 때 매우 유용 합니다. - 악의 적인 해커로 부터의 방어:
사기꾼을 감지 할 때 Webhook 는 매우 편리할 수 있습니다.
게임 프로퍼티들과 게임 이벤트 webhook 는 서버측 코드에서 플레이어의 액션을 인증하는데 사용 될 수 있습니다. - 서버측 푸시 알림 전송:
게임이벤트 webhook 을 통해 서버측에서 비활성 플레이어에게만 전송하는 푸시알림 전송이 최적화 될 수 있습니다. - Photon 의 룸 상태 이외의 게임 데이터 저장:
게임 데이터로 Photon 의 룸 프로퍼티와 이벤트 캐시에만 사용하는 것이 의무 사항은 아닙니다. - 분석:
Webhooks는 강력한 무료로 사용할 수 있는 분석 서비스 입니다.
추적할 수 있는 통계는 룸 생성, 액터 참여, 룸 이벤트등 무궁무진 합니다...
webhooks 는 룸 이벤트를 변경하던지 새로운 Photon 이벤트를 전송 할 수 있나요?
아니오. webhooks 는 수신된 이벤트들의 데이터를 변경할 수 도 없으며 다른 이벤트를 전송할 수 도 없습니다.
webhook 로 커스텀 룸 프로퍼티에 접근 할 수 있나요?
짧게 답하면 아닙니다.
하지만 State
객체는 공용 커스텀 프로퍼티(즉, 로비에서 보여지는)의 읽을 수 있는 형태를 포함하고 있는 Type=='Save'
webhook 의 GameEvent, GameProperties 와 GameClose 의 아규먼트로써 사용 가능 합니다.
언제 액터가 룸을 떠났는지 판단하며 언제 비활성으로 표기되어야 하나요?
게임서버에서 연결 해제된 모든 Photon 액터는 어찌됐건 룸을 떠난 것 입니다.
문제는 동일한 액터가 룸을 고의적으로 떠난 것 - 이 의미는 액터가 명시적으로 룸을 "포기" 또는 "종료" 또는 "빠져나온"- 인지 아닌지의 문제 입니다.
고의적으로 룸을 떠났다면 액터는 룸의 액터가 아니므로 룸의 ActorList 에서 제거 됩니다.
반대로 액터가 나중에 재참여 하려고 룸을 일시적으로 빠져나왔다면 액터는 Inactive
또는 IsActive = false
또는 IsComingBack
으로 표기 됩니다.
룸에 참여했던 모든 액터와 여전히 GameServer 에 연결되어 있는 액터는 항상 Active
로 간주 됩니다.
액터들의 상태는 GameEvent webhook 내의 룸의 ActorList 에 노출되게 됩니다.
룸을 포기 하기 위해서는 OpLeave(false)
를 호출 하고 잠시 동안 나가기 위해서는 Disconnect() 또는 OpLeave(true)
를 호출 합니다.
특정한 게임 유형에서 "사직" 또는 "화나서 그만둠"과 같은 가능한 시나리오에 대해서는 사용자는 두가지 중 하나의 방법을 선택 할 수 있을 것 입니다.
추가적인 정보는 GameLeave webhook 섹션에서 확인 해주세요.
0 <= PlayerTTL <= EmptyRoomTTL
와 IsPersistent = true
로 하는 게 의미가 있나요 ?
PlayerTTL
은 액터가 룸 안에서 비활성 상태로 존재 할 수 있는 총 시간 입니다. 플레이어가 룸에서 연결해제 되어 있을 수 있는 기간을 의미 합니다.
만약 PlayerTTL = 0
로 룸을 생성 했다면 플레이어들이 다시 되돌아 올 수 없습니다. 그리고 플레이어들이 다시 돌아오지 않는다면 플레이어들을 위해 룸 상태를 저장 할 필요가 없다는 것 입니다.
설계에 의해서 룸 상태는 최소 한명의 비활성 플레이어가 있어야 하지만 룸 상태가 저장 되어야 합니다.
추가적인 정보는 GameLeave webhook 섹션을 참고 하세요.
Back to top- 룸 재참여는 어떻게 하나요?
- 새로운 룸을 생성하는 동안 Markdig.Syntax.Inlines.CodeInline 을 최대 값으로 설정하면 어떻게 되나요?
- Webhooks로 룸 상태를 변경할 수 있나요?
- 룸 상태의 저장과 가져오는 것 이외에 webhook 의 흥미로운 유즈 케이스가 있나요?
- webhooks 는 룸 이벤트를 변경하던지 새로운 Photon 이벤트를 전송 할 수 있나요?
- webhook 로 커스텀 룸 프로퍼티에 접근 할 수 있나요?
- 언제 액터가 룸을 떠났는지 판단하며 언제 비활성으로 표기되어야 하나요?
- Markdig.Syntax.Inlines.CodeInline 와 Markdig.Syntax.Inlines.CodeInline 로 하는 게 의미가 있나요 ?