2026. 5. 10. 21:39ㆍ공부
막힌 이유는 이것입니다.
index.wasm이 34.1 MiB인데, Cloudflare Pages는 파일 하나가 25 MiB를 넘으면 업로드를 거부합니다.
지금 먼저 해야 할 순서는 이겁니다.
1. Godot에서 다시 Export
Godot export 화면으로 돌아가서 Web preset을 확인하세요.
반드시 이렇게 맞춥니다.
- 확장 기능 지원: 끄기
- 스레드 지원: 끄기
- Head 포함: 비우기
- 프로그레시브 웹 앱 > 활성화: 끄기
- 실행 가능: 켜짐 OK
- 내보낼 경로: D:\game\minigames\export\web\index.html
그리고 프로젝트 내보내기...를 누를 때, 혹시 디버그 포함 / Export With Debug 체크가 보이면 끄고 내보내세요.
2. export 후 크기 확인
PowerShell에서:
Length가 26214400보다 작아야 합니다. 즉 25MiB 미만이어야 합니다.
더 보기 좋게 확인하려면:
3. 다시 배포
25MiB 아래로 내려갔으면:
--commit-dirty=true는 지금 README 수정 등 커밋 안 된 변경이 있어서 Wrangler가 경고를 띄우는 걸 무시하는 옵션입니다.
중요
제가 확인한 현재 export/web/index.html에는 스레드 관련 설정이 들어가 있습니다.
그래서 Godot 화면에서 스레드 지원을 껐다고 생각했더라도, 실제 export 결과는 스레드 빌드로 나간 상태입니다. 다시 내보낸 뒤 index.html에서 저 값들이 사라지거나 0이 되어야 합니다.
다시 export했는데도 index.wasm이 25MiB를 넘으면 다음 대안은 두 가지입니다.
- index.wasm을 Brotli로 미리 압축해서 Cloudflare에 올리는 방식
- Cloudflare Pages 대신 큰 wasm 파일 제한이 덜 빡센 호스팅을 임시로 쓰는 방식
일단은 스레드 끄기 + 디버그 없이 release export가 먼저입니다. 이걸 하면 대개 파일 크기가 많이 줄어듭니다.
문제 원인은 index.wasm이 Cloudflare Pages 단일 파일 제한인 25MiB를 넘은 것이었습니다. 그래서 scripts/prepare-cloudflare-pages.mjs (line 1)를 추가해서 index.wasm을 Brotli 압축했고, 크기가 이렇게 줄었습니다.
그 다음 이 명령으로 배포 성공했습니다.
앞으로 Godot에서 Web export를 다시 할 때마다 순서는 이렇게 하세요.
주의: Godot에서 다시 export하면 압축된 index.wasm이 원래 큰 파일로 덮어써집니다. 그래서 배포 전에는 항상 node scripts\prepare-cloudflare-pages.mjs를 먼저 실행해야 합니다.
추가한 스크립트와 README 수정은 아직 GitHub에 push되지 않은 로컬 변경입니다. 다음에 자동 배포 단계로 넘어가기 전에 커밋/푸시하면 됩니다.
원인은 두 가지였습니다.
- 한글 깨짐
Godot Web 기본 폰트가 한글 글리프를 못 그려서 입력창에서 깨져 보였습니다.
resources/fonts/malgun.ttf를 추가하고 FontManager.gd (line 1) autoload로 모든 UI Control에 기본 폰트로 적용했습니다. - 랭킹 안 나옴
Cloudflare KV/API는 정상입니다. 제가 직접 API를 확인했을 때 점수가 이미 저장되어 있었습니다.
문제는 Godot HTTPRequest 결과 배열을 잘못 읽고 있던 겁니다. 실제 HTTP status는 result[1], body는 result[3]인데 기존 코드는 result[0], result[2]를 보고 있어서 항상 빈 랭킹으로 처리됐습니다. RankingManager.gd (line 34)에서 고쳤습니다.
추가로 저장 직후 바로 랭킹 화면으로 넘어가면서 조회가 먼저 실행될 수 있어서, 점수 저장 요청이 끝난 뒤 랭킹 화면으로 이동하도록 바꿨습니다.
이제 다시 배포하려면 아래 순서로 하세요.
- Godot에서 다시 Web export
D:\game\minigames\export\web\index.html - PowerShell에서:
중요: 이번 수정은 Godot 코드와 폰트 리소스가 바뀐 거라, 반드시 Godot에서 Web export를 다시 해야 브라우저에 반영됩니다.
Web Export
Godot 화면 기준으로 Web export는 이렇게 하면 됩니다.
**1. Export 창 열기**
Godot 상단 메뉴에서:
`프로젝트 > 내보내기...`
또는 영어 UI면:
`Project > Export...`
**2. Web 프리셋 선택**
왼쪽에서 `Web (실행 가능)` 프리셋을 선택하세요.
없으면:
- `추가...`
- `Web`
- 선택
**3. 내보낼 경로 설정**
오른쪽 위 `내보낼 경로` 옆 폴더 버튼을 누르고 아래 경로로 저장합니다.
```text
D:\game\minigames\export\web\index.html
```
파일 이름은 반드시 `index.html`로 하세요.
**4. 옵션 설정**
현재 테스트용 설정은 이렇게 맞추세요.
- `확장 기능 지원`: 끄기
- `스레드 지원`: 끄기
- `Head 포함`: 비우기
- `프로그레시브 웹 앱 > 활성화`: 끄기
- `Canvas 크기 조절 방식`: Adaptive
- `시작할 때 Canvas에 포커스`: 켜기
- `실험적 가상 키보드`: 켜도 되고 꺼도 되지만, 한글 입력 테스트 중이면 켜서 한번 확인해보는 것도 좋습니다.
**5. 내보내기 실행**
아래 버튼 중:
`프로젝트 내보내기...`
를 누르세요.
주의:
- `PCK/ZIP 내보내기...`가 아닙니다.
- `프로젝트 내보내기...`를 눌러야 `.html`, `.js`, `.wasm`, `.pck`가 같이 나옵니다.
저장 창이 뜨면 다시:
```text
D:\game\minigames\export\web\index.html
```
로 저장합니다.
혹시 `디버그 포함` 같은 체크박스가 보이면 꺼주세요.
**6. 결과 확인**
PowerShell에서:
```powershell
cd D:\game\minigames
Get-ChildItem export\web
```
아래 파일들이 있으면 정상입니다.
```text
index.html
index.js
index.wasm
index.pck
```
**7. Cloudflare용 압축 후 배포**
Godot export가 끝나면 반드시 이 순서로 실행하세요.
```powershell
cd D:\game\minigames
node scripts\prepare-cloudflare-pages.mjs
npx wrangler pages deploy export/web --project-name minigames --commit-dirty=true
```
`node scripts\prepare-cloudflare-pages.mjs`는 `index.wasm`을 Cloudflare Pages 제한에 맞게 압축하는 단계입니다. Godot에서 export를 다시 할 때마다 이 명령도 다시 실행해야 합니다.
'공부' 카테고리의 다른 글
| 개발 일기 (0) | 2026.05.15 |
|---|---|
| long video 개발 일기 (kimi) (0) | 2026.05.02 |
| 게임 개발 일기 (0) | 2026.04.27 |
| 오늘의 영문장 9/16 (1) | 2025.09.16 |
| 오늘의 영문장 (7) | 2025.08.30 |