Skip to content

pro472/love-quest-rpg

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

3 Commits
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ’˜ A Love Story in Code

Because some feelings are too big for a text message.


Made with Love Built with No Install Runs Anywhere Vibes


A pixel-art RPG. A three-level apology. One real story. Built from scratch with nothing but JavaScript, a canvas, and way too many feelings.



๐Ÿ“– The Story Behind This

This didn't start as a "project."

It started as a feeling โ€” that hollow, restless kind you get when words stop being enough. When you've said sorry in every way language allows and it still doesn't feel like it captures the weight of what you actually mean.

So instead of another text, another call, another conversation that goes in circles โ€” this happened. A game. A whole world built from scratch, where every pixel placed was a sentence that couldn't be spoken out loud.

Three levels. Each one a different chapter of something real:

  • A sunlit park where you pick up pieces of yourself
  • A storm you have to fight your way through
  • A bridge you build, question by question, over a chasm you created

It's not a masterpiece of engineering. It's not the most technically complex thing ever written. But it was made with everything. And sometimes that's the most powerful language there is.

This project was built with the assistance of AI (Claude by Anthropic) โ€” for the logic, the patterns, the structure. But every story beat, every dialogue line, every design choice? That was entirely human. That part, no AI can write for you.


โœจ What Makes This Special

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                                                             โ”‚
โ”‚   ๐ŸŽฎ  A complete 3-level RPG โ€” in a single HTML file       โ”‚
โ”‚   ๐Ÿ“ฑ  Runs on any phone, tablet, or desktop                 โ”‚
โ”‚   ๐ŸŽจ  Hand-drawn pixel art sprites on HTML5 Canvas         โ”‚
โ”‚   ๐Ÿ’ฌ  Typewriter dialogue system with a character queue     โ”‚
โ”‚   ๐ŸŒ‰  A quiz mechanic that literally builds a bridge        โ”‚
โ”‚   ๐Ÿ˜ˆ  A boss fight against your own ego                     โ”‚
โ”‚   ๐Ÿ’•  Two endings โ€” both honest, both beautiful             โ”‚
โ”‚   โšก  Zero dependencies. Zero installs. Zero excuses.       โ”‚
โ”‚                                                             โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ“ฑ Running It โ€” Seriously, It's This Easy

On your phone (the whole point):

1. Download RPG.html
2. Tap to open it
3. It runs in your browser instantly

That's it. No app store. No install. No account. No loading screen that makes you question your life choices. Just download one file, tap it, and you're in.

Works on:

  • ๐Ÿ“ฑ Android (Chrome, Firefox, Samsung Browser)
  • ๐ŸŽ iPhone & iPad (Safari, Chrome)
  • ๐Ÿ’ป Any desktop browser
  • ๐Ÿ–ฅ๏ธ Literally anything with a modern browser

๐Ÿ—บ๏ธ The Three Levels


๐ŸŒธ Level 1 โ€” The Sunlit Park

"Picking up the pieces."

The world is still bright here. Walk through a park scattered with letters โ€” 14 of them, each one a fragment of something worth saving. Find the pink flower. Use it to melt the thorny vine that's been blocking the way forward.

A gentle level. The calm before everything else.


โ›ˆ๏ธ Level 2 โ€” The Stormy Maze

"Fighting through the noise."

The sky turns dark. Five storm clouds rage through a maze โ€” they represent everything ugly: the ego, the anger, the words said in the wrong moment. Shoot them down with heart projectiles. Clear the storm. Find what's waiting at the other end.

The hardest level to move through. That's intentional.


๐ŸŒ‰ Level 3 โ€” The Bridge of Promises

"Building something from nothing."

A chasm splits the world in two. The only way across is to answer honestly โ€” five questions, five chances to prove something. Each right answer lays another plank on the bridge. Then cross it. Face your own ego as a literal final boss. Watch it fall.

Make your choice. That part is real.


๐Ÿ•น๏ธ Controls

๐Ÿ“ฑ Mobile Touch Controls

Button Does
โฌ†๏ธ โฌ‡๏ธ โฌ…๏ธ โžก๏ธ Move the character
๐Ÿ…ฐ๏ธ ACTION Talk ยท Interact ยท Shoot hearts ยท Advance dialogue
โ“ HINT Get a nudge when you're stuck
๐Ÿ“– GUIDE Full step-by-step level walkthrough

๐Ÿ’ป Keyboard (Desktop)

Key Does
Arrow Keys Move
Space / Enter Action

๐Ÿ› ๏ธ Make It Yours

This game is fully customisable. Fork it. Change the names. Rewrite every line of dialogue. Make it your own love story, your own apology, your own celebration.

Here's where to look:

What to change Where to find it
Character names Search [Male Character] and [Female Character] โ€” replace everywhere
Intro story text game.init() โ†’ the text variable at the top
All dialogue lines Search 'Insert your custom dialogue' โ€” replace each one
MCQ questions mcq.questions array โ€” write your own questions and answers
Ending messages game.makeChoice() โ†’ update both the forgive and wait endings
Player speed this.speed = 1.6 in the Player constructor
Number of letters Level 1 setup โ€” the letters and positions arrays

๐Ÿ—๏ธ Under the Hood

Single HTML file (~1,700 lines)
โ”œโ”€โ”€ CSS         โ€” pixel-art rendering, responsive layout, animations
โ”œโ”€โ”€ HTML        โ€” canvas + UI overlays + on-screen controls
โ””โ”€โ”€ JavaScript
    โ”œโ”€โ”€ State machine     (INTRO โ†’ PLAYING โ†’ DIALOGUE โ†’ MCQ โ†’ END)
    โ”œโ”€โ”€ Player class      (movement, collision, animation, inventory)
    โ”œโ”€โ”€ Level class       (world setup, enemies, collectibles, drawing)
    โ”œโ”€โ”€ Dialogue system   (typewriter queue with cached DOM refs)
    โ”œโ”€โ”€ MCQ system        (quiz โ†’ bridge block counter)
    โ””โ”€โ”€ Game loop         (requestAnimationFrame + screen shake)

No frameworks. No bundler. No node_modules folder haunting your hard drive.

Just one file that does everything.


๐Ÿ’ก Technical Highlights

  • Zero-jank dialogue โ€” DOM elements are cached once at init, written to once per character reveal. No per-frame getElementById calls causing reflow.
  • Axis-split collision โ€” X and Y collision checked independently so the character slides along walls instead of stopping dead.
  • Diagonal normalisation โ€” movement vector is normalised so diagonal speed equals cardinal speed.
  • State-preserving modals โ€” hint and guide overlays save the previous game state and restore it on close, so opening a hint mid-dialogue doesn't break the story.
  • Anti-double-fire keyboard โ€” action key tracked with a keydown guard flag so holding Enter doesn't flood the game with events.

๐Ÿ“œ License

MIT โ€” completely open source. Take it, break it, rebuild it. Make someone cry happy tears with it.

The only rule: don't use it to hurt anyone. This whole thing was built on the opposite of that.


๐Ÿค Built With

Thing Why
HTML5 Canvas Drawing every pixel of the game world
Vanilla JavaScript Running every frame of logic
CSS Making the UI look like it belongs
Claude (Anthropic) AI assistance for logic patterns and code structure
One human heart Everything else


It's just code. But it isn't, really.

Some of the best things humans make start as something they needed to say and didn't know how.


โญ If this made you feel something โ€” leave a star. It means a lot.


forthebadge forthebadge forthebadge

About

A pixel-art RPG love story built in a single HTML file. 3 levels, real emotions, zero installs โ€” just download & open in any browser. Built with Vanilla JS + HTML5 Canvas & AI assistance. Made with way too many feelings. ๐Ÿ’˜

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages