// COMMUNITY CHALLENGE — OPEN ENTRY

ONE SHOT
GAME

One prompt. One pull of the lever. The LLM crafts your game.
The prompt is the skill. The game is the prize.

🎮
🏆

How It Works

A one-shot game is an HTML game generated in a single prompt to an LLM. No iteration, no follow-up, no editing. What comes out is what gets posted. The quality of your game is a direct measure of your prompt engineering skill.

01

Craft Your Prompt

Write a single prompt describing the game you want. Use the hint sheet below to maximize the LLM's output quality. The prompt is your only move.

02

Pull the Lever

Submit your prompt to an LLM (ChatGPT, Claude, Gemini — any frontier model). One shot. No follow-up prompts, no iteration, no editing the output.

03

Collect Your Loot

The generated HTML is your prize. Save it exactly as returned. Host it on GitHub Pages. The output — bugs and all — is what gets judged.

04

Post & Score

Share your GitHub Pages link along with your original prompt. The community evaluates playability, originality, and visual quality. Your prompt goes on the record.

⚠️

The Honor Rule: No editing the LLM output. No multi-turn generation. No prompt chaining. One prompt in, one HTML file out. If it breaks on load, that's your score. If it's spectacular, that's your score. The constraint is the point.


The Toolkit

The generated game must be HTML suitable for GitHub Pages hosting. Single-file preferred. Tell the LLM exactly what libraries and techniques to use — it only knows what you ask for.

⚙ Game Engines & Rendering
🕹️

Phaser.js

The gold standard for browser 2D games. Arcade physics, tilemaps, animations, input handling. Tell the LLM to use it and the output quality jumps dramatically.

2DPhysicsCDN
🌐

Three.js

Full WebGL 3D scenes in the browser. Geometries, lighting, shaders, cameras. Instruct the LLM to add OrbitControls and a scene loop for best results.

3DWebGLCDN
🔺

Babylon.js

Higher-level 3D engine. Better default lighting and physics than Three.js raw. Good for game-like 3D environments without deep shader work.

3DPhysicsCDN
🎨

Canvas / WebGL Raw

No dependencies, maximum control. Good for pixel art, particle systems, or procedural generation. Ask the LLM to write a game loop with requestAnimationFrame.

NativeNo CDN
⚡ Physics, UI & Audio
💥

Matter.js

Rigid body 2D physics. Collisions, constraints, gravity. Great for puzzle games, pinball, or anything that needs realistic object stacking.

PhysicsCDN
🎵

Tone.js

Synthesized audio in the browser. Sound effects, music loops, and reactive audio without loading audio files. Underused, high visual score impact.

AudioCDN
📊

D3.js

For data-driven games — market simulations, graph traversals, network visualizations with game mechanics layered on top.

DataCDN
🌊

Anime.js / GSAP

Professional animation timelines. UI transitions, sprite animations, screen effects. Dramatically improves perceived production value.

AnimationCDN
💾 Persistence & State
🗄️

localStorage

5–10 MB, synchronous, zero setup. Best default for single-player state: high scores, settings, save files. Tell the LLM to persist scores here.

Client-Side
🔗

URL State Encoding

Encode the entire game state in the URL hash. Shareable, zero storage, no server. Perfect for puzzle games ("share your board"). Ask for base64 encoding in the URL fragment.

Shareable
🌍

Supabase / Firebase

Free-tier backends for cross-player leaderboards and persistent state. Requires API keys but enables true multiplayer scoring. Instruct the LLM to use the CDN SDK.

Needs Keys
🎲

Seeded RNG

Ask the LLM to use a seeded random number generator (e.g. mulberry32). Same seed = same level. Enables fair comparison and daily challenge modes.

Reproducible

Third-Party APIs

Games that pull live data feel alive. The browser's CORS policy gatekeeps what's reachable — this table tells you what actually works from a static GitHub Pages host.

API / Service Category Free Tier CORS from Browser Notes
Open-Meteo Weather Unlimited ✓ Works No key needed. Real-time weather by coordinates.
Open Trivia DB Trivia / Quiz Unlimited ✓ Works Thousands of categorized trivia questions. No key.
PokeAPI Game Data Unlimited ✓ Works Pokémon stats, sprites, moves. Huge creative potential.
REST Countries Geography Unlimited ✓ Works Flags, populations, capitals. Good for geography games.
NASA APIs Space / Science Generous ✓ Works APOD, asteroid data, Mars rover photos. Key required.
Finnhub / Alpha Vantage Finance Limited calls ✓ Works Real stock quotes. Free API key. Use for trading games.
Chess.com Public API Gaming Unlimited ✓ Works Player stats, game history, leaderboards. No key.
Wordnik / Datamuse Language Generous ✓ Works Word definitions, rhymes, word associations. Word games.
Yahoo Finance (unofficial) Finance Unmetered ⚠ Fragile Undocumented endpoint, no SLA. Works today, may not tomorrow.
Spotify / Google Maps Various Yes ✗ Blocked Requires server-side OAuth or a proxy. Not usable from static pages.
⚠️

GitHub Pages is static. No server-side code, no proxies, no WebSockets. If an API requires a backend or OAuth redirect flow, it won't work from a GitHub Pages host. Stick to CORS-open APIs or include API keys directly in the HTML (acceptable for a contest, not for production).


Prompt Hint Sheet

These are the phrases and instructions that unlock more capable, polished LLM-generated games. Copy, adapt, and layer them into your prompt.

🏗 Structure & Scaffolding
  • Generate a complete, self-contained single-file HTML game with all CSS and JavaScript inline. Forces the LLM to produce a drop-in file that needs no build step.
  • Use Phaser.js 3 loaded from CDN (cdnjs.cloudflare.com) for the game loop, physics, and rendering. Activates a full game framework instead of bare Canvas. Dramatically improves output.
  • The game must run correctly when opened as a local file OR hosted on GitHub Pages. No server required. Prevents the LLM from generating fetch() calls that break on file:// protocol.
  • Use a requestAnimationFrame game loop with fixed timestep and delta-time interpolation. Produces frame-rate-independent movement. Games don't run at 2x speed on fast machines.
🎨 Visual Quality
  • Use CSS custom properties for the color palette and apply a cohesive dark neon / retro-arcade / soft pastel aesthetic throughout. Gets you a themed game instead of default gray boxes.
  • Add particle effects using canvas for explosions, collectibles, and level-up events. Cheap visual payoff. LLMs can write particle systems readily.
  • Implement screen shake on impact or death using a canvas translate offset. Single-line game feel upgrade. Always worth asking for.
  • Use Google Fonts (loaded via link tag) — choose [font name] for UI and [font name] for score display. Gets you typography that doesn't look like a coding exercise.
  • Add a parallax background with at least three depth layers scrolling at different speeds. Immediately gives depth and polish to any side-scrolling game.
⚙ Gameplay & Mechanics
  • Use mulberry32 as the seeded random number generator, with the seed shown in the UI and encodable in the URL. Same seed = reproducible game. Players can share and compare identical runs.
  • Include difficulty scaling: increase enemy speed, spawn rate, and obstacle density every 30 seconds. Without this, most LLM-generated games are static and immediately boring.
  • Add keyboard controls (WASD + arrow keys), mouse/click controls, and mobile touch support. Games playable on phone rank higher. LLMs forget mobile unless told.
  • Implement a combo multiplier system: consecutive hits within 2 seconds multiply score by up to 4x. Turns any action game into something with depth and replay value.
💾 Persistence & Sharing
  • Persist the top 5 high scores in localStorage with player initials and date, displayed on a retro leaderboard screen. Free feature with zero dependencies. Judges notice it.
  • Encode the game seed and final score in the URL hash on game over, so the run is shareable as a link. Enables post-game sharing without any backend.
  • Add a "Share Score" button that copies a pre-formatted text string to clipboard including score, seed, and a link to the game. navigator.clipboard.writeText() — trivial to implement, high social value.
🌐 Live Data Integration
  • Fetch live trivia questions from the Open Trivia DB API (opentdb.com/api.php) and integrate them as game events. No key needed. Endless content for quiz-based games.
  • Use the Open-Meteo API to fetch real-time weather at the player's coordinates and adjust game difficulty or theme accordingly. No key, no CORS issues. Raining in real life = harder rain level in game.
  • Pull stock price data from Finnhub.io using API key [KEY] and use real ticker movements as gameplay input. Finnhub's free tier is CORS-friendly and has decent rate limits.
📋 Example Full Prompt
prompt.txt
// ONE SHOT GAME CONTEST ENTRY — PROMPT EXAMPLE

Generate a complete, self-contained single-file HTML5 game.
No external assets. All CSS and JavaScript inline. Must run
on GitHub Pages with no server.

GAME: Asteroid mining roguelite. The player pilots a ship,
mines floating asteroid fields, and upgrades their drill
between waves. Wave 10 is a boss encounter.

TECH:
  - Phaser.js 3 from cdnjs CDN
  - Canvas particle effects for explosions and ore pickups
  - Screen shake on damage (canvas translate offset)
  - Google Fonts: "Orbitron" for UI, "Share Tech Mono" for data
  - Dark space aesthetic with neon accent colors via CSS vars

MECHANICS:
  - mulberry32 seeded RNG, seed visible and URL-encodable
  - WASD + arrow keys + mobile touch support
  - Combo multiplier up to 4x for rapid mining
  - Difficulty scaling: asteroid speed +10% per wave
  - Upgrade shop between waves (speed, drill power, shields)

PERSISTENCE:
  - Top 5 scores in localStorage with initials + date
  - Encode final score + seed in URL hash on game over
  - "Share Run" button copies seed link to clipboard

POLISH:
  - Parallax star field with 3 depth layers
  - Idle animations on all UI elements
  - Sound effects via Tone.js (loaded from CDN) — mining
    ping, explosion boom, wave clear fanfare

How Entries Are Scored

Community judges rate each submitted game across five dimensions. Scores are 1–10 per category. The prompt is judged separately — shorter, more elegant prompts that produce equivalent output rank higher.

/10

PLAYABILITY

Does it load? Does it run? Is it actually playable from start to game-over? Broken games score a 1 regardless of other qualities.

/10

VISUAL FIDELITY

Does it look intentional? Typography, color coherence, animation quality, and overall polish. Default browser styling is a 2.

/10

MECHANICAL DEPTH

Does it have progression, difficulty scaling, or interesting decisions? A game you'd actually play for more than 60 seconds.

/10

ORIGINALITY

Is the concept novel? Does it use live data, generative systems, or an unusual mechanic? Clones of common games score low here.

/10

PROMPT EFFICIENCY

Bonus category. A 150-word prompt that produces a great game scores higher than a 600-word prompt for the same result. Compression is skill.

💡

The Meta-Game: Post both your GitHub Pages link and your original prompt. The community sees both. A beautiful game with a brilliant short prompt is the jackpot. A mediocre game with a 1000-word prompt is its own commentary.