Inspiration

Indonesia’s independence was not a single moment—it was a chain of courage: youth uniting the nation, leaders pressed to act, a typed proclamation, a city that refused to surrender, and years of guerrilla resistance. We wanted that story to feel lived, not only read. Too often history stays in textbooks. IndoPendence Journey was inspired by a simple question: What if young people could walk the Road to Merdeka—one mission at a time—and still respect the solemnity of those events? We aimed for a cinematic, patriotic tone (dark UI, red–white–gold, a cloth-like flag) so the experience feels like remembrance, not a cartoon.

What it does

IndoPendence Journey is a browser-based historical experience with two modes: Learn Mode — long-form articles on each chapter of the struggle Game Mode — five linked missions on a campaign-style map Missions

  1. Sumpah Pemuda — unite regional voices into one national will
  2. Rengasdengklok — stealth escort of Soekarno & Hatta to force an early proclamation
  3. Proclamation (The Final Type) — retype the 17 August 1945 text with period spelling
  4. Battle of Surabaya — run a resistance radio under detection pressure
  5. Aggression & Guerrilla War — command units to defend the young Republic Progress is saved in the browser. The UI is bilingual (Indonesian / English). Demo: https://rednave-4.github.io/v2hac/index.html

How we built it

  • Stack: vanilla HTML / CSS / JavaScript, Canvas 2D (flag cloth + stealth stage), modular stage scripts, external mission pages for typing / radio / strategy
  • Architecture: entrance screens → mode select → mission map → startMission(stageId) (internal stage or redirect to a dedicated game page)
  • Persistence: localStorage for mission progress and language preference
  • Design: dark patriotic palette, restrained motion, mobile-friendly controls (touch + pointer) Each mission uses a different mechanic so players do history, not only click through it.

Challenges we ran into

  • Click / touch reliability on entrance screens (layering, pointer-events, hidden screens blocking input)
  • Flag canvas sizing when the parent was still display: none (zero width until resize)
  • Shared stage overlay between missions (complete button listeners conflicting; win panel invisible without .is-in)
  • Progress format mismatch between the map (array) and external games (object) — unlocks stayed locked
  • Balancing tone: educational and respectful, but still fun to play

Accomplishments that we're proud of

  • A full cinematic shell: waving Red-White flag, bilingual flow, campaign map
  • Five distinct missions, each tied to a real historical beat
  • Dual mode (Learn + Game) so the same story works for class and for play
  • Shipping a playable demo on GitHub Pages under tight hackathon time

What we learned

  • History games need clear feedback (especially when a “win” panel is invisible)
  • Cross-page progress must use one shared localStorage contract
  • Input on the web (mouse, touch, keyboard) has to be designed and tested early
  • Small CSS details (opacity, z-index, hidden) can break the whole player journey

What's next for IndoPendence Journey

  • Physical keyboard support on the Proclamation typing stage
  • Stronger polish and difficulty curves on Rengasdengklok and later missions
  • Audio (ambient + key sounds) and optional teacher / classroom mode
  • More chapters (e.g. deeper Rengasdengklok narrative, regional stories)
  • Accessibility improvements and wider device testing
Share this project:

Updates

Submission history