Open the live demo
Served over HTTP only — the custom domain is still waiting on its certificate, so this one is a link out rather than a live embed.
Open demoWhat it does
Ten chapters carry Roosevelt from 1858 to 1919, each a platformer level over a painted backdrop, each ending in its own themed mini-game and then a study recap. Hidden treasure chests reveal forty real, sourced facts, and the recap tallies which the player found and which they missed.
It runs with no installation, no build step, and no network connection. The entire soundtrack is synthesized in the browser — there is not a single audio file in the repo. Finishing all ten chapters unlocks a promo code for a free youth admission, which is the part a museum actually cares about.
What it can do
- Ten chapters, each with a cutscene, a platformer level, a unique mini-game, and a recap
- Forty collectible history facts checked against the Library's book collection
- Era-correct enemies per chapter, with the character visibly aging and changing costume
- Fully synthesized chiptune score and sound effects — zero audio files
- Touch controls that adapt per mini-game, with letterboxed fullscreen and add-to-home-screen
- Completion reward with a promo code, plus score and progress saved locally
Make it your own
Start by forking the repository into your own organization. Everything below assumes you are working in your fork, not this one.
- Fork, then edit
js/data.js. All ten chapters' text, years, blurbs, objectives, facts, costumes, ages, enemies, and mini-game configs live there, and it is usually the only file you touch. - Replace the backdrops in
assets/bg/, keeping the filenames each chapter references. A prompt file ships with the repo for generating new ones. - Swap the wordmark and the URL it links to, and regenerate the favicons with the included script.
- Edit the
REWARDobject near the top ofjs/game.js: set the encoded code, the offer text, the headline, and the claim URL. - Create that code in your ticketing system with real limits — redemption cap, one per customer, expiry. The game validates nothing; the encoding is obfuscation, not security.
- Edit
CNAME, add the DNS record, enable Pages, and confirm the HTTPS certificate issues before linking to it.
Stuck on a step? Open an issue on the repository. Questions from people adapting these for their own institution are the most useful feedback we get.