Building Ashenforge
What it is, how I built it, and what a browser gauntlet taught me about game logic, Cloudflare, and fair daily challenges.
App · Ashenforge
What it is
Ashenforge is a dark-fantasy high-score game in the browser. You build a character, draft loot, fight a boss gauntlet, and climb a shared leaderboard. Runs are short. Choices are meant to be clear. A daily challenge puts everyone on the same run.
I wanted a little action-RPG flavor (builds, loot, tough choices, competition) without pretending I run a game studio with big always-on servers.
How I built it
I have curiosity, a lot of Cursor hours, and a preference for making something people can click. Since I don’t have a traditional engineering background, Ashenforge was me learning out loud.
Early versions felt unfair in a vague way I couldn’t explain. So I pushed toward clarity: show the win chance before you commit. Make loot something you can actually equip. Add a timed strike so skill matters, not only luck. When people can see the odds, random outcomes feel like tension instead of unfair surprise.
I also kept sessions short and easy to share. That forced me to learn ideas I didn’t have words for at the start: same starting conditions for everyone, runs you can repeat, and a leaderboard people can climb without creating an account first.
What I learned
The learning curve here wasn’t “game engines 101.” It was how to build a competitive browser game with AI.
I learned how to build game rules in TypeScript with Cursor instead of dropping in a heavy game library I didn’t understand. I couldn’t have written that engine from scratch on my own, and I’m honest about that. What I did learn is how to steer the work, ask better questions, and keep changing the rules until the game felt fair when I played it. I learned how to keep the “dice” in one place so a daily challenge can be the same for every player. I learned how to host a fast static site on Cloudflare Pages, then add small serverless functions and storage for a global leaderboard without standing up a traditional always-on game server. I learned how to make the game playable offline first, then sync scores when someone is online. I learned how to use Cursor to turn “this fight feels unfair” into concrete changes I could play again the same day.
The stack details mattered less than the habit: notice what’s unfair, change it with Cursor, play again.
Want the full picture of this app?
View Ashenforge →