Theodore Roosevelt Presidential Library Labs

TRPL Labs  /  Interactive Media

Interactive Media

Rough Rider

A ten-chapter 8-bit platformer that plays an entire life, mini-games and all.

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 demo

What 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.

# clone your fork git clone https://github.com/YOUR-ORG/TRRetroGame.git cd TRRetroGame
  1. 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.
  2. Replace the backdrops in assets/bg/, keeping the filenames each chapter references. A prompt file ships with the repo for generating new ones.
  3. Swap the wordmark and the URL it links to, and regenerate the favicons with the included script.
  4. Edit the REWARD object near the top of js/game.js: set the encoded code, the offer text, the headline, and the claim URL.
  5. 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.
  6. 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.