Uploading Games
How to package and upload your HTML5 game to RetiPie.
This guide covers how to prepare, upload, and manage versions of your game on RetiPie.
Upload formats
RetiPie accepts two upload formats:
Single HTML file
If your entire game is contained in one .html file (inline CSS, inline JavaScript, embedded assets), you can upload it directly. The file is validated, scanned for ad scripts, and published as-is.
ZIP archive
If your game has multiple files — HTML, CSS, JavaScript, images, audio, fonts — package them as a .zip archive. This is the most common format for production games.
ZIP structure requirements:
- The archive must contain an
index.htmlfile index.htmlshould be at the root of the ZIP, or inside a single root folder
RetiPie automatically detects and strips a single common root folder. For example, both of these structures work:
game.zip
index.html
style.css
main.js
assets/
player.pnggame.zip
my-game/
index.html
style.css
main.js
assets/
player.pngIn the second case, my-game/ is automatically stripped so index.html ends up at the root.
macOS users: Finder may add __MACOSX metadata folders when creating ZIPs. RetiPie automatically filters these out during extraction, so they won't cause issues.
What happens during upload
When you upload a game file, the following pipeline runs:
- Presigned URL — the dashboard requests a secure upload URL. You upload directly to storage, not through the API server.
- File type detection — after upload confirmation, the server reads the file header to detect whether it's a ZIP or HTML file using magic bytes.
- Validation — for HTML files: size check, content verification, and ad scanning. For ZIP files: the archive is queued for background extraction and validation.
- Release creation — a new release version is created automatically. The current active release is archived.
- File processing — HTML files are copied to their versioned storage path immediately. ZIP files are extracted, each file is validated (content type, size, magic bytes, ad scanning), and then stored.
- Activation — the new release becomes the active version serving to players.
Version management
RetiPie uses a release-based version system:
- Every upload creates a new version. Version numbers auto-increment (v1, v2, v3, etc.).
- Maximum 3 versions are kept. When a new version is uploaded and the limit is exceeded, the oldest archived version and its files are permanently deleted.
- The latest version is active by default. When you upload, the previous active version is archived and the new one becomes active.
You can view all versions of a game in the game detail page on your dashboard, including their status (active or archived).
Re-uploading and updating
To upload a new version of an existing game:
- Go to your dashboard
- Click on the game you want to update
- Click Upload New Version
- Upload your updated
.htmlor.zipfile - The new version is created and activated automatically
Your game stays published throughout this process. The new version replaces the old one as soon as processing completes.
You do not need to unpublish your game to upload a new version. Players will see the new version as soon as it's processed.
Device preview
After uploading, the dashboard shows a device preview of your game. This renders your game in the same sandboxed iframe environment that players use, so what you see in the preview is what players get.
Use the preview to verify that:
- Your game loads without errors
- Layout and controls work at different screen sizes
- All assets (images, audio, fonts) load correctly
- The game is playable from start to finish
Upload status
For ZIP uploads, processing happens in the background. You can check the status of your upload in the dashboard:
- Processing — the ZIP is being extracted and validated
- Active — processing completed and the version is live
- Failed — extraction or validation failed (check the error message for details)
If a ZIP upload fails, the previous version remains active. Fix the issues and re-upload.