게임 올리는 법
AI 랑 만든 브라우저 게임이면 거의 그대로 올라가요. 폴더 하나, 그 맨 위에 index.html 하나면 돼요.
처음부터 끝까지
- 1
AI 에게 게임을 부탁해요
Claude, ChatGPT, Cursor 무엇이든 괜찮아요. 아래 "올리기 규칙"을 같이 붙여넣으면 처음부터 올라가는 모양으로 만들어 줘요.
- 2
내 컴퓨터에서 열어 봐요
index.html 을 더블클릭해서 브라우저에서 돌아가면 준비 끝이에요.
- 3
폴더째 끌어다 놓거나 GitHub 주소를 붙여요
폴더·zip 을 끌어다 놓거나 공개 GitHub 저장소 주소를 넣으면 돼요. frontend/dist 처럼 안쪽에 있는 화면 폴더도 알아서 찾고, / 로 시작하는 주소 같은 흔한 실수는 고쳐서 올려요.
- 4
미리 플레이해 봐요
올린 그대로 도서관 화면에서 돌려 볼 수 있어요. 그동안 뒤에서 게임을 켜 보고 썸네일을 찍고, 제목·조작법도 미리 채워 둬요.
- 5
공개해요
game.json 이 있으면 제목·태그가 채워져 있어요. 공개하면 링크 하나로 누구나 플레이해요.
AI 에게 줄 올리기 규칙
이 게임을 Nocent 에 올릴 거야. 아래를 지켜줘.
- 결과물은 index.html 이 루트에 있는 폴더 하나. 서버 없이 파일만으로 열려야 해.
- 모든 파일은 상대경로로 불러와. (/로 시작하는 경로 금지)
- 빌드 도구(Vite 등)를 쓰면 base 를 './' 로 두고, 빌드 결과(dist)만 올릴 거야.
- AI 대사가 필요하면 API 키를 넣지 말고 nocent.ai.chat({ system, messages }) 을 써. 결과는 { text }. 저장은 nocent.save.set/get, 순위는 nocent.scores.submit/top.
- 한 판이 끝나면(게임 오버·클리어) nocent.end() 를 불러줘. 점수를 nocent.scores.submit 으로 냈다면 안 불러도 돼.
SDK 는 <script src="https://nocent.win/sdk/v1.js"></script> 로 불러와.
- 폴더 루트에 game.json 을 만들어줘: title, description, thumbnail, controls, players, aspectRatio, tags, madeWith, sdk.
- 키보드 게임이면 방향키·스페이스를 누를 때 페이지가 스크롤되지 않게 preventDefault 해줘.이렇게 부탁해 보세요
- “회사에서 부장님 몰래 게임하는 게임 만들어줘. 부장님이 뒤돌아보면 바로 엑셀 화면으로 바뀌어야 해.”
- “한 키보드로 둘이 하는 닭싸움 게임 만들어줘. 링 밖으로 밀어내면 이겨.”
- “고양이가 점을 봐주는 대화 게임 만들어줘. 대사는 nocent.ai.chat 으로.”
올라가는 조건
| 여는 파일 | index.html. 맨 위가 아니어도 dist·build 같은 화면 폴더를 알아서 찾아요. |
|---|---|
| 빌드 | Vite·React 는 npm run build 한 결과(dist)가 있어야 해요. 소스만 있으면 안내해 드려요. (자동 빌드는 곧) |
| 서버가 있으면 | 화면만 올라가요. AI 대사·저장·순위는 SDK 로 바꾸면 서버 없이 돌아가요. 그 밖의 서버는 따로 배포해서 주소로 연결하세요. |
| 크기 | zip 200MB, 풀었을 때 500MB, 파일 5,000개까지 |
| 파일 주소 | ./그림.png 같은 상대경로만. / 로 시작하면 안 돼요. |
| 알아서 빼는 것 | .git, .env, node_modules, __MACOSX |
| 올릴 수 없는 것 | 파이썬·Node 서버, 자체 DB. 대신 SDK 를 쓰세요. |
game.json 으로 예쁘게
없어도 올라가요. 있으면 제목·썸네일·조작법이 자동으로 채워져서 카트리지가 예뻐져요. 썸네일은 게임 화면을 캡처해서 thumb.png 로 넣으면 돼요.
{
"title": "마구 홈런 더비",
"description": "이상한 마구를 쳐서 홈런을 날려라",
"thumbnail": "thumb.png",
"controls": ["mouse", "keyboard"],
"players": "1",
"aspectRatio": "16:9",
"tags": ["야구", "코미디"],
"madeWith": ["Claude"],
"sdk": ["scores"]
}controls: keyboard, mouse, touch, gamepadplayers: 1, 2-local (한 화면에서 둘이)aspectRatio: 16:9, 4:3, 1:1, 9:16, fill
AI 대사·저장·순위표 (SDK)
서버 없이도 쓸 수 있게 도서관이 대신 해 줘요. 게임 안에 API 키를 넣지 마세요. 로그인 안 한 사람의 저장·순위는 그 사람 브라우저에 대신 저장돼요.
<script src="https://nocent.win/sdk/v1.js"></script>
<script>
// AI 대사 (로그인한 사람만. API 키는 필요 없어요)
const { text } = await nocent.ai.chat({
system: '너는 말끝마다 냥을 붙이는 고양이야',
messages: [{ role: 'user', content: '오늘 운세 봐줘' }],
});
// 이어하기 저장 (사람마다 따로, 1MB 까지)
await nocent.save.set('slot1', { stage: 3, hp: 12 });
const saved = await nocent.save.get('slot1');
// 순위표
await nocent.scores.submit('default', 1234);
const top = await nocent.scores.top('default', 10); // [{ name, value }]
// 한 판이 끝났을 때 (게임 오버·클리어). 다른 사람이 끝까지 하면 만든 사람에게 포인트가 쌓여요
// 점수를 냈다면(scores.submit) 따로 안 불러도 돼요
nocent.end();
</script>AI 는 한 사람이 하루 200번까지 부를 수 있어요. 넘으면 error.code === 'quota' 로 알려줘요.
자주 막히는 곳
▶키보드가 안 먹어요
게임 화면의 "눌러서 시작"을 먼저 눌러야 키가 게임으로 들어가요. 그래도 안 되면 방향키·스페이스에 preventDefault 를 했는지 확인하세요.
▶그림이나 소리가 안 나와요
파일 주소가 / 로 시작하면 못 찾아요. ./img/cat.png 처럼 상대경로로 바꿔 주세요.
▶빈 화면만 나와요
Vite·React 로 만들었다면 빌드한 결과(dist 폴더)를 올려야 해요. vite.config 의 base 를 "./" 로 두고 다시 빌드하세요.
▶GitHub 로 올렸는데 고친 걸 반영하고 싶어요
내 게임 → 수정 → "GitHub 에서 다시 가져오기" 를 누르면 새 버전으로 바로 바뀌어요.
▶용량이 너무 크대요
zip 은 200MB 까지예요. 음원은 mp3 로, 그림은 webp 로 바꾸면 보통 10분의 1로 줄어요.
▶파이썬 서버가 있는 게임은요?
서버 코드는 올릴 수 없어요. AI 대사·저장·순위가 필요하면 SDK 로 바꾸세요. 꼭 서버가 있어야 하는 게임은 운영자에게 특별 전시를 부탁하세요.
▶플레이되면 뭐가 쌓여요?
로그인한 다른 사람이 내 게임을 끝까지 하면 1 포인트가 쌓여요(같은 사람은 게임마다 하루 1번). 게임이 끝날 때 nocent.end() 를 부르거나 점수를 내야 "끝까지 했다"로 알 수 있어요. 10 포인트 = 1원으로, 5,000원어치가 모이면 운영자가 네이버페이 쿠폰 등으로 정산해 드려요.
▶올린 뒤에 고치고 싶어요
내 게임 → 새 버전으로 다시 올리면 돼요. 주소는 그대로고, 예전 버전은 보관돼요.