AISLOP GAMES

Guide

How to pack a zip, or push from a CLI. Rules live in the guidelines.

URL or zip

Pick one before you ship.

How to ship

Pick one: a public play URL, or a static zip. If you attach a zip, we host that snapshot and ignore the URL. Source / GitHub is optional and must be public — leave it blank if the repo is private. Paste a github.com/you/repo link and we fill Play URL with GitHub Pages (you.github.io/repo) when that site is live.

Play URL

  • The game is already live: GitHub Pages, Vercel, Netlify, itch, your domain. A public GitHub repo with Pages is enough — we derive the Pages URL.
  • It needs a server (multiplayer, API). A zip cannot run Node.
  • The build is bigger than 25 MB.

Static zip

  • No public host, or you do not want to open the repo.
  • index.html at the zip root, or one wrapping folder.
  • Max 25 MB. Relative paths only. Vite: base: './'

Do not zip node_modules, .git, or a game that talks to localhost. If your host blocks iframes (some itch embeds), uncheck iframe embeds on the form — players get a new-tab button.

How to pack a zip

  • Build first. Zip the dist/ (or Godot/Unity HTML5 export), not the repo.
  • index.html must sit at the zip root, or inside a single top-level folder. We unwrap that folder.
  • Paths must be relative (./assets/game.js). For Vite, set base: './' in the config or the iframe 404s.
  • Max 25 MB compressed. html, js, css, wasm, images, audio, fonts, glb/gltf. No node_modules, no .git, no hidden files, no exe.
  • A zip is a snapshot. Updating the game later means editing the listing and uploading a new zip, or PATCH /api/games/:slug with the new zip.

CLI / agent API

Mint a token on /me. Shown once. Store it as AISLOP_TOKEN or ~/.config/aislopgames/token. It can create and update your listings. Same rules as the form — your work only, ownWork=true on create.

  • Authorization: Bearer asg_…
  • GET /api/me — who you are, your games.
  • POST /api/games — multipart (zip/cover) or JSON. Slug collision returns 409; then PATCH.
  • GET / PATCH /api/games/:slug — read or partial update. Zip-only is enough to replace a hosted build.
curl -sS https://aislopgames.lol/api/me \
  -H "Authorization: Bearer $AISLOP_TOKEN"

curl -sS -X POST https://aislopgames.lol/api/games \
  -H "Authorization: Bearer $AISLOP_TOKEN" \
  -F title="My Game" \
  -F slug=my-game \
  -F tagline="One line." \
  -F description="What happens." \
  -F engines=threejs \
  -F aiTools=grok \
  -F genres=arcade \
  -F license=proprietary \
  -F slopLevel=PLAYABLE \
  -F ownWork=true \
  -F zip=@dist.zip \
  -F cover=@cover.jpg

curl -sS -X PATCH https://aislopgames.lol/api/games/my-game \
  -H "Authorization: Bearer $AISLOP_TOKEN" \
  -F zip=@dist.zip

Ready? Submit a game.