게임 아이디어와 기능

다음에 추가할 기능

매치

명시적 리비전, 해석하지 않는 상태, 개별 결과 보고를 사용하는 턴제 게임입니다.

SDK: develop 브랜치플레이어 세션 필요
Unity
매치 일러스트
확인할 수 있는 결과

두 플레이어 세션으로 로비, 번갈아 진행하는 턴과 독립적인 최종 보고를 조율합니다.

동영상 준비 중

이 단계의 동영상은 아직 없습니다. 안내와 MCP 요청은 바로 사용할 수 있습니다.

턴제 매치

같은 프로젝트 준비

  1. 게임 설정과 같은 프로젝트를 대시보드에서 선택하세요.

    매치 →
  2. 첫 요청에는 추가 정의가 필요하지 않습니다. 일치하는 게임 데이터가 없으면 빈 결과도 정상입니다.

    두 플레이어의 별도 세션으로 로비 생성, 참여, 순서 지정 시작, 교대로 바이트 상태 전송을 수행하고 같은 최종 결과를 각각 보고하세요.

    첫 예제는 데이터를 읽습니다. 그룹, 매치, 오브젝트를 생성하지 않습니다. 빈 목록도 정상적인 첫 응답입니다.

이 기능 구현하기

가이드는 미리 볼 수 있습니다. 실행하려면 활성 프로젝트 키가 필요합니다. 프로젝트 준비

SDK 설치와 프로젝트 설정 가져오기가 완료되고 플레이어가 로그인해야 합니다.

이 SDK 예제는 develop을 사용합니다. 필요한 API가 설치된 SDK에 있는지 확인하세요.

빠른 시작으로 원하는 플레이어를 연결하세요. 명시적인 버튼이나 씬 동작에서 ReadMyMatches()을 호출하세요. 파일을 여는 것만으로는 요청을 보내지 않습니다.

C#
Assets/Scripts/MatchesDemo.cs
horizOn 호출
1using UnityEngine;
2using PM.horizOn.Cloud.Manager;
3​
4public sealed class MatchesDemo : MonoBehaviour
5{
6 // Initialize/connect and restore the existing player in the Quickstart first.
7 // Invoke explicitly. The SDK also enforces the returned polling cadence.
8 public async void ReadMyMatches()
9 {
10 var user = UserManager.Instance.CurrentUser;
11 if (user == null || !user.IsValid()) return;
12 var result = await MatchesManager.Instance.GetMatches(user.UserId);
13 if (!result.IsSuccess) { Debug.LogWarning(result.ErrorCode); return; }
14 Debug.Log($"Ledger revision: {result.Data.revision}");
15 foreach (var match in result.Data.recent)
16 Debug.Log($"Match {match.id}: {match.status}");
17 // Recent may include an active match after this player's forfeit.
18 // Respect result.Data.pollAfterSeconds; no background poll or automatic timeout.
19 }
20}
21// Full two-player recipe: SDK Examples/MatchesExample and MatchesSampleStore.
22// ReadLedger/ReadMatch -> SaveCreateAfterLedgerReview/SaveActionAfterMatchReview.
23// ApplySavedIntent sends one durable original body/revision. Unknown create is reconciled.
24// Never replace a pending original with the revision from a later read.
25// ReportResult uses the original finalStateRevision/result bytes/sorted winnerIds.
26// Ordinary consensus is not trusted victory proof. Ranked runs use Validated Actions.
전체 SDK 예제 열기 ↗

두 플레이어와 하나의 원래 턴

두 플레이어의 별도 세션으로 로비 생성, 참여, 순서 지정 시작, 교대로 바이트 상태 전송을 수행하고 같은 최종 결과를 각각 보고하세요.

전송 전 정확한 요청을 저장하세요. 시간 초과 후 상태를 읽고 대조하세요. 리비전이나 원본 의도를 조용히 바꾸지 마세요.

보고는 바뀌지 않는 최종 리비전을 사용합니다. 합의는 신뢰할 수 있는 승리 증명이 아니며 불일치나 누락으로 승자를 추정하지 않습니다.

랭크 실행에는 확인된 랭크 매치와 기존 Validated Actions 절차가 필요합니다. 일반 보고는 보상을 지급하지 않습니다.

PHP는 일반 매치 REST 경로를 지원합니다. 랭크 검증과 실시간 기능은 지원하지 않으며 필요시 FEATURE_NOT_SUPPORTED를 반환합니다.

새 기능을 테스트하세요.

두 플레이어 세션으로 로비, 번갈아 진행하는 턴과 독립적인 최종 보고를 조율합니다.

게임 설정과 같은 프로젝트를 대시보드에서 선택하세요.

엔드포인트
  • GET/matches
  • GET/matches/limits
  • GET/matches/open
  • GET/matches/{matchId}
  • POST/matches
  • POST/matches/{matchId}/join
  • POST/matches/{matchId}/decline
  • POST/matches/{matchId}/start
  • POST/matches/{matchId}/turn
  • POST/matches/{matchId}/timeout
  • POST/matches/{matchId}/leave
  • POST/matches/{matchId}/cancel
  • POST/matches/{matchId}/result
  • POST/matches/{matchId}/ranked-run
API 레퍼런스의 모든 엔드포인트
다음 단계에 대한 추천

모든 라운드에 최고 점수를 더하세요.

라운드가 끝나면 점수를 저장하고 선두를 보여주세요. 기존 연결과 플레이어 세션을 계속 사용하세요.