← GAME.STONKRADAR.IO

게임 올리기

서버 없는 웹 빌드(Unity WebGL 등)를 이 허브에 배포하는 방법

허브가 정적 빌드를 통째로 받아서 game.stonkradar.io/{slug}/로 직접 서빙합니다. 게임 레포에는 클라우드 자격증명도, 설치할 도구도 필요 없습니다 — 배포 토큰 하나와 curl이면 됩니다. 토큰은 운영자가 발급합니다.

1. 업로드 — 매 빌드, 이 한 줄

게임 레포 어디서든:

HUB_DEPLOY_TOKEN=<배포 토큰> \
curl -fsSL https://game.stonkradar.io/api/deploy.sh | bash -s -- <slug> <WebGL 빌드 폴더>

스크립트가 폴더를 zip으로 묶어 요청 한 번에 올리고 live 채널로 전환합니다. 빌드는 타임스탬프 ID로 불변 보관되고 배포는 채널 포인터 교체라서 원자적입니다 — 업로드 도중 접속한 유저도 항상 완전한 빌드 하나를 받습니다. 재배포도 같은 명령이고, 토큰은 커밋하지 말고 환경변수로만 쓰세요.

2. 롤백 · 채널

… deploy.sh | bash -s -- <slug> --list                # 빌드·채널 목록 (JSON)
… deploy.sh | bash -s -- <slug> --activate <빌드>      # live를 그 빌드로 — 롤백이 이것
… deploy.sh | bash -s -- <slug> --delete <빌드>        # 안 쓰는 빌드 정리
HUB_CHANNEL=beta … deploy.sh | bash -s -- <slug> <폴더>  # beta 채널로 배포

live가 아닌 채널은 game.stonkradar.io/{slug}@{채널}/로 접속합니다 — 예: /combo-rush@beta/. 목록 카드는 항상 live를 가리킵니다. 빌드는 최신 20개까지만 보관됩니다 — 배포 때마다 오래된 것부터 자동 정리되고, 어떤 채널이든 가리키고 있는 빌드는 순서와 무관하게 지워지지 않습니다.

3. Unity 빌드 설정

4. 목록 등재 — 게임당 한 번

업로드만으로는 목록에 뜨지 않습니다. 허브 레포(apps/hub/src/games.ts)에 카드 항목(이름·한 줄 소개·프리뷰 타일)을 추가하고 허브를 배포해야 합니다 — 이 큐레이션은 운영자 몫입니다. 업로드를 먼저 해두고 등재는 나중에 해도 됩니다.

5. 프로토콜

스크립트가 하는 일의 실체입니다. 직접 호출해도 됩니다 (CI 등). deploy.sh 외에는 전부 Authorization: Bearer <토큰> 필수.

요청설명
GET /api/deploy.sh 업로드 스크립트 자체. 인증 불필요.
PUT /api/builds/{slug}/{build} 빌드 폴더를 zip으로 통째 업로드 (본문 = zip, 루트에 index.html 필수). ?activate={채널}을 붙이면 업로드 직후 그 채널로 전환.
PUT /api/builds/{slug}/{build}/{path} 파일 하나 업로드 (zip을 못 만드는 환경용). Content-Type 헤더가 그대로 서빙 타입이 됩니다. 올린 뒤 activate를 따로 호출해야 합니다.
POST /api/builds/{slug}/{build}/activate 채널 포인터를 이 빌드로 전환 (?channel=, 기본 live). 옛 빌드를 지정하면 롤백. 빌드에 index.html이 없으면 거부.
GET /api/builds/{slug} 빌드 ID 목록과 채널별 활성 빌드 (JSON).
DELETE /api/builds/{slug}/{build} 빌드 삭제. 어떤 채널이든 가리키는 중이면 409로 거부.

slug는 소문자·숫자·하이픈(최대 64자), 빌드 ID는 A-Z a-z 0-9 . _ -(최대 64자), 파일 경로는 같은 문자셋 + 슬래시만 허용됩니다. zip은 표준 zip(스토어/디플레이트)만 받고 zip64는 안 받습니다 — 스크립트가 만드는 zip은 전부 해당됩니다. 응답: 성공 200 · 토큰 오류 401 · 형식 오류 400 · 활성 빌드 삭제 시도 409.

문의

토큰 발급·등재 요청: info@stonkradar.io