Caputchin
커스텀 게임 개발

커스텀 게임을 게이트 가능하게 만들기

자체 호스팅 게임game-src를 그것으로 향하게 하는 즉시 돌고 검증합니다. 하지만 방문자가 통과하려면 그것을 풀어야 하는 게임 게이트로 쓰려면, Caputchin은 브라우저를 신뢰하는 게 아니라 결과를 직접 다시 도출할 수 있어야 합니다. 그것이 재생 산출물의 목적입니다. 이 튜토리얼이 끝나면 당신의 커스텀 게임은 게이트 자격이 됩니다.

이것이 결정론의 보상입니다: 당신의 게임이 트레이스를 기록하고 모든 것을 시드에서 도출하므로, 서버는 당신 로직의 헤드리스 사본을 같은 시드와 트레이스를 상대로 돌려 같은 판정에 독립적으로 닿을 수 있습니다.

재생 산출물이 무엇인가

산출물은 렌더링도, DOM도, 네트워크도 없는, 그저 당신의 게임 로직의 작고 자족적인 JavaScript 번들입니다. 서버는 그것을 격리된 샌드박스에 로드하고 돌려 (seed, trace)에서 판정을 냅니다. 그것은 당신의 플레이 가능한 게임이 아닙니다; 그것은 당신의 플레이 가능한 게임의 헤드리스 심판입니다.

두 속성이 필수입니다:

  • 자족적. 아이솔레이트가 해소할 수 없는 어떤 것도 임포트할 수 없습니다; 모든 것을 번들에 넣으세요. 업로드는 2 MB로 제한되며, 그것은 전형적인 로직 번들을 훨씬 넘습니다.
  • 결정론적이고 라이브 게임과 일치. 같은 시드와 당신의 라이브 게임이 낸 트레이스가 주어지면, 라이브 게임이 주장한 같은 판정에 닿아야 합니다. 그것들이 어긋나면, 진짜 플레이어가 거짓 거부를 받습니다.

1. 커스텀 게임 등록하기

아직 안 했다면, 게임이 id와 산출물을 담을 곳을 갖도록 대시보드에서 등록하세요. 사이트 키(또는 팀)의 게임 페이지에서, 게임 추가 패널의 커스텀 게임 입력을 쓰세요: id를 입력하고 Define을 클릭하세요. 이 단계는 커스텀 게임을, 당신이 정의하는 스키마를 보세요.

2. 산출물 업로드하기

등록된 게임의 설정 탭에서, 재생 번들을 업로드하세요. 그것은 단일 파일로 보내집니다; Caputchin이 그것을 콘텐츠 해싱하고(같은 바이트 다시 업로드는 no-op) 즉시 자체 확인을 돌립니다.

3. 자체 확인

자체 확인은 당신이 업로드한 산출물을 재생 아이솔레이트에서 합성 시드(그리고 당신이 제공하면, 당신이 커밋한 트레이스 샘플)를 상대로 돌리고 그것이 깔끔한 판정을 냈는지 기록합니다:

  • 통과 → 설치가 게이트 자격이 됩니다. 재생 불가 배지가 지워지고, 이제 이 게임을 풀에 둔 채 게임 요구를 켤 수 있습니다.
  • 실패 → 산출물은 여전히 저장되지만(오류를 들여다볼 수 있도록), 설치는 게이트 비자격으로 남습니다. 로직을 고치고 다시 업로드하세요.

실패한 자체 확인은 헤드리스 심판이 자기 자신과 일치하지 않거나 돌 수 없다고 시스템이 당신에게 말하는 것입니다; 그것은 정확히 프로덕션에서 거짓 거부를 일으켰을 그 불일치를, 어떤 방문자가 닿기 전에 잡은 것입니다.

4. 게이트 켜기

자체 확인이 통과하면, 게임은 키의 게이트 풀에 있습니다. 키의 보안 페이지에서 게임 요구(또는 팀의 게임 강제 천장)를 켜면, Caputchin이 당신의 커스텀 게임을 내고, 플레이어의 트레이스를 받고, 각 검증을 정하려고 당신의 산출물을 서버 측에서 다시 실행합니다.

둘을 동기화 유지하기

라이브 게임(game-src로 로드됨)과 재생 산출물은 같은 로직의 두 빌드입니다. 결과에 영향을 주는 무엇이든 바꿀 때, 둘이 여전히 일치하도록 산출물을 다시 빌드하고 다시 업로드하세요. 그것들이 드리프트하면, 자체 확인이나 프로덕션 리플레이가 진짜 승리를 거부하기 시작합니다. 하나의 공유 로직 모듈에서 둘 다 빌드하는 것이 그것들을 동일하게 유지하는 믿을 만한 방법입니다.

함께 보기

이 페이지에서