게임 올리기
허브가 정적 빌드를 통째로 받아서 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 빌드 설정
- Compression Format은 기본값(Brotli/Gzip)에 Decompression Fallback을 켠 채로
빌드합니다 — 산출물이
.unityweb이면 로더가 브라우저에서 압축을 풀어서 서버 설정이 필요 없습니다. Fallback을 끈.br/.gz빌드는 아직 지원하지 않습니다. - 멀티스레딩(SharedArrayBuffer)은 끄고 빌드하세요 — COOP/COEP 헤더를 주지 않습니다.
- 기본 WebGL 템플릿이면 경로는 전부 상대경로라 그대로 동작합니다.
절대경로(
/...)를 직접 쓰면 허브 경로에서 깨집니다.
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