Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🍎 KOKO — a game told as a playable changelog

Eat the fruit. Dodge the bomb. Meet the shark. Argue with the announcer.

KOKO is a tiny fruit-eating game — but this site is really a time machine. It started in 2017 as ten <td>s in a row, and it grew, version by version, into a full-screen endless world with topographic terrain, sea monsters, a synth soundtrack, and a text-to-speech hype-man. Every version is still here, frozen, and still playable. You don't read the changelog — you play it.

▶ Live: koko2d.dorkalev.com

The 2017–2018 versions were built by hand, nights and weekends. The 2026 versions (v5–v8) were built from scratch with AI — and every entry on the changelog shows the verbatim prompt that created it. The prompts are part of the museum.


The versions

version the move
/v0 koko 1 (2017) The seed: ten cells in a single row. Koko is a square that grows when it eats. Peak minimalism.
/v1 2d koko (2017) The row becomes a grid. Four directions. A real score. Civilization begins.
/v2 round koko (2017) A wild detour — the board curls into a circle of 60 spokes. Gorgeous, disorienting, a dead-end worth keeping.
/v3 2d koko (2018) First design pass (Noa Ecker): real apple & bomb art, rounded tiles. It stops looking like a prototype.
/play Koko 2D (2018) The finished game: ten levels, touch controls, and a leaderboard where every score plays back the video of the run that earned it.
/v5 KOKO ∞ (2026) Rebuilt from zero on Kaplay: an endless arcade — fruit bundles, timed bombs, weapons, synth sound. You never die; you just run out of time.
/v6 the world (2026) The board becomes a topographic map: swim (or drown) in the water, cross bridges, skirt cliffs — chased by Pac-Man-style ghosts who can't swim.
/v7 the whole world (2026) Full-screen, responsive, and mean: sharks & crocodiles hunt you in the water. Background music. Challenge-a-friend links that unfurl with your score.
/v8 the harvest (2026) A fruit economy: cherry pairs, grape chains, golden pineapples (×10), rotten decoys — and a chili that flips the chase so the ghosts run from you. Combos trip FEVER, quests drop mid-run, and a browser voice cheers you on. Out loud.

The greatest hits (tech the site is quietly proud of)

  • The leaderboard is a filesystem. No database. Each run is a video named <invertedScore>_<timestamp>_<player>_<level>.webm, so a plain lexicographic list() on Firebase Storage returns the high scores in order. The wall renders from filenames alone.
  • Every score is a receipt. Runs are recorded in the browser (canvas.captureStream + MediaRecorder, audio muxed in from the Web Audio synth) and uploaded on game over. Watch exactly how the #1 run was played.
  • The infinite world is a pure function. v6+ terrain is deterministic value noise — no map data, no server; scroll away and back and the same lake is waiting for you.
  • All sound is math. No audio files anywhere: oscillators, noise buffers and envelopes for SFX, a step-sequenced synth loop for music (it literally speeds up when you hit FEVER).
  • The announcer is the browser. v8's voice is speechSynthesis — zero libraries, zero cost, maximum sass.
  • Share links unfurl with your number. A tiny Cloud Function renders OpenGraph cards on the fly (SVG → PNG), so "Beat Dor's 5944" shows up as an actual card in the chat.
  • No build step. Static files. The 2018 game still runs unmodified. v0 from 2017 still runs. That's the whole point.

Run it yourself

git clone https://github.com/dorkalev/koko-game && cd koko-game
npx serve public          # → open the printed localhost URL

No backend needed to play. The leaderboard is opt-in: leave public/config.js as-is to use nothing, or point it at your own Firebase project (Storage + anonymous auth + App Check) to get the video wall. The share-card function lives in functions/ if you want the fancy unfurls.

Credits & rights

  • Made by Dor Kalev · game design & artwork (apple, bomb, v3/v4 look) by Noa Ecker.
  • Some food icons in the legacy versions are from Flaticon (turkkub, Smashicons, Darius Dan), used under CC 3.0 BY with attribution.
  • The v8 harvest fruit (cherries, grapes, pineapple, rotten apple, chili — public/v8/*.svg) are original vectors drawn for this project.
  • The share-card font is Fredoka (SIL OFL 1.1 — license included in functions/assets/). Bundled libraries (jQuery, Hammer, Kaplay, normalize.css) are MIT.
  • License: MIT for the code and the original artwork made for this project. Noa's apple/bomb art, the Flaticon icons, and the font stay under their own terms — NOTICE.md spells out exactly what's what. Fork away (there are bigger plans for this repo 👀).

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages