Alex Weisberg
← Learning Log
5 min

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