Use This When You Need A Reliable End-To-End Path
This page is the shortest safe route from “new game” to “submitted for review.”Current Publishing Checklist (Most Important)
- Build your creator gameplay scripts in
GDScriptfor the current Summercraft publishing flow. - Recommended release API: submit a game-only
.pckcontainingmanifest.json; size must be 1 KiB–512 MiB. - Browser submission: upload the
.pckand a separatemanifest.json; the browser path accepts up to 2 GB and runs the static scanner at upload time. - Choose one path before exporting. A 2 GB browser limit does not raise the release API’s 512 MiB limit.
Step 1: Validate Project Contract
main.gdextendsSummerGame.manifest.jsonincludes required keys.player_scenepoints to a valid scene.- gameplay scripts are authored in
GDScript. - choose player model:
SummerCharacter3D(3D template), or- custom script extending
SummerPlayer.
Step 2: Validate Authority Boundaries
- gameplay outcomes run under
if not Summer.is_server(): return. - clients render synced state (
get_synced) only. - no score/economy/data writes on client paths.
Step 3: Validate Scanner Safety
- no blocked APIs in scripts/resources.
- no reserved infrastructure paths in export scope.
- no blocked binary/native resource extensions in pack.
Step 4: Local Runtime Validation
Run the canonical Summer Engine smoke checks. If the starter project includes the optional loopback runner, run that separately and confirm:- local server starts + local client connects,
- player join/leave stable,
- gameplay loop runs for 10+ minutes,
- reconnect path works.
Step 5: Export Validation
- use game-only
.pckpreset. - update include filter to game folder.
- confirm exported
.pckincludes only intended content. - for the recommended release API, confirm package size is 1 KiB–512 MiB and that
manifest.jsonis inside the pack; - for browser submission, confirm the
.pckis at most 2 GB and keep the matchingmanifest.jsonas the second upload; - if neither path fits, contact founders@summerengine.com before spending a submission attempt.
Step 6: Submission Validation
Choose one submission path:- Release API: create game → mint upload URL → PUT
.pck→ finalize; expectpending_review. - Browser: upload
.pck+ separatemanifest.json; expect statusreview, a submission id, and no static-analysis violations.
Top 10 Failure Modes (And Fixes)
entry_sceneinvalid- Fix
manifest.jsonpath and re-export.
- Fix
player_sceneinvalid- Fix scene path, confirm script setup, re-export.
- Client-authoritative logic
- Move outcome logic to server path.
- Missing synced fields
- Use
set_syncedfor client-visible state.
- Use
- Scanner blocked pattern
- Remove blocked API usage.
- Reserved path in pack
- Correct include/exclude export filters.
- File too large
- Optimize assets and remove unused files.
- Manifest type mismatch
- Enforce required key types.
- Template mismatch
- 3D helper methods used without
SummerCharacter3D.
- 3D helper methods used without
- Reconnect instability
- Reinitialize player synced state on join.
Launch Ready Criteria
- Contract checks pass
- Authority checks pass
- Scanner checks pass
- Local runtime checks pass
- Export checks pass
- Submission accepted into review

