A Case Study
Dawn's Journey
A solo-built browser RPG. The story, the numbers, the systems, and the thinking behind them.
I
What Happens When You Do Everything Right
I am a computer science engineer. Manipal Institute of Technology — CS and communication engineering. Good grades. Competitive batch. The kind of school cohort where everyone around you is excellent at something, so you stay sharp just to keep up. I came out of that knowing a fair spread of things: general knowledge, debates, graphic design, the basics of coding. The kind of person who picks things up because he's surrounded by people who already have.
I got placed at Juniper Networks in Bangalore. Stayed five years. Did my job well. And then, like a lot of people in tech over the last few years, I got laid off.
Tech layoffs have a particular cruelty to them that takes time to understand. It was not just me — it was batchmates, seniors, juniors, friends. The whole cohort getting swept. You know intellectually that it was a cost decision, that it wasn't personal, that you didn't do anything wrong. Knowing that doesn't make it land any softer. When you've done everything right — good grades, good college, good placement, five good years — and it still happens, there's a specific kind of disorientation that follows. The rulebook you were playing by stops making sense.
My first instinct was: I don't want to touch tech again.
So I didn't. Not for a while. I went somewhere else instead.
II
Why Does Art Work
I started asking a question I'd never really sat with before: why does art work? Not appreciating it — I'd always done that. I mean actually interrogating it. What is happening when something is beautiful? What is the mechanism?
I started watching music videos differently. Not for the music — for the dancers in the background. Their body language. Whether you could tell from the way they moved if the set director had made them feel safe or just used. I started noticing when it was a good environment off-camera and when it wasn't, just from how people carried themselves in the frame. I started asking why certain people become iconic — what the exact combination of qualities is, and how much of it is the person versus how much is the frame the culture put around them.
I'm a dude who likes women. Not complicated. But my sense of what makes someone attractive has always been more about how they carry themselves than how they look. Talent. Presence. Something intrinsic. And as I went deeper into this art rabbit hole, I kept running into the same frustration: the range of women being represented in games, in media, in generated images — it's thin. Technically diverse on some axes, completely absent on others. Fat women. Disabled women. Women who don't fit the narrow band that gets greenlit. I kept trying to generate characters outside that band with AI tools and hitting a wall. Every tool would pull toward the same silhouette.
That frustrated me enough to want to do something about it. That feeling — combined with the fact that I'd just watched Genshin Impact take roughly six lakhs from me over the years for characters I loved and couldn't keep — crystallised into a single thought:
If I want something made right, I'm going to have to make it myself.
There was one more thing I needed to pick up first. The one area of computer science I'd never touched: web development.
III
Svelte, and a Café I'd Been To Once
I started learning web dev roughly a year before this game existed. I'd worked across enough of technology to know how to learn fast, but frontend was genuinely new territory. I didn't know how a DOM worked. I didn't fully understand services and stores. I was starting from the actual beginning.
What cracked it open for me was Svelte. The component system — this idea that you could take a piece of your creativity and wrap it in code, give it a shape, pass data into it, and get something visual back — that clicked in a way other frameworks hadn't. I could not explain it at gunpoint in technically precise terms, but I understood it intuitively. I built my own website. Threw some components in. Played around. Looked back at it six months later and found it medieval by my own standards, which I think is the correct metric for whether you're actually learning.
Then a friend's birthday came up, and I wanted to make something for them. Not a card. Something you could sit with for a few minutes and smile at. I drew a pixel-art version of a café we'd both been to. Cut it into tiles. Made it a 2D top-down map — the kind you see on Pinterest, those tiny isometric cafés people make. Three interactable objects: a sandwich, a hot coffee, a birthday cake. One message each. That was the whole thing. It was an interactable birthday card, not a game.
But I'd built something. Something that ran in a browser, that someone could walk around in. And I had a Svelte project open, and time, and a head full of things I wanted to make.
IV
Swordtember and the Spine of the Thing
The map got bigger. Four AI-generated characters — Hela, Marjane, Veres, Guinevere — appeared first, because I wanted to populate the world with women I found interesting. Items appeared. A type system appeared. Things were being added not from a design document but from whatever I found that was good and available. That became the rule: make everything you have count before reaching for more.
The thing that gave the game its spine was a discovery. A pixel artist had spent four consecutive Septembers drawing swords — one per day, every September, for years. Hundreds of blades. Different weights, different elements, different personalities. The collection is extraordinary. I downloaded all of it and thought: these are too good not to collect. Weapons became the thing you work toward. The whole inventory system, the element framework, the combat logic — it all grew outward from that one collection and that one feeling.
Other asset packs followed. Relic sets emerged when new icon collections arrived. Farming appeared when a good tileset turned up. The enemy roster was shaped by which creature sprites looked right for which terrain. I wasn't designing a game from a spec. I was designing one from the materials at hand, which forced me to be creative within constraints rather than theoretical about unlimited possibilities. Constraints, it turns out, are where the actual decisions get made.
The map itself is a flat 2D grid — one tile per entity, two surface types, land and water. No complex pathfinding, no obstacle meshes. When I first built it that way it was a limitation. By the time I understood what I was building, it was a feature. Simple. Fast. Honest about what it is. Easy to extend.
v1 · August
mid-era
currentV
The Hard Part
Most of the systems architecture — combat, farming, encounters, NPC dialogue, factions — was built across a long stretch with Gemini as my coding co-pilot. I want to be precise about this because it's easy to oversimplify. Gemini could do some things very well. Architecture, data structures, laying out a clean service pattern — when the task was contained, it delivered.
The problem was context. Gemini did not understand that two components needed to look the same. It did not understand that a file already existed. It would create new folders unprompted, segment things that should stay together, make changes across three files at once and break the thing that had been working fine yesterday. When I pushed back, called out the specific problem, it would fix one thing and quietly break another. I started version-controlling by copying entire folders manually — not even Git, just duplicating directories before anything got touched. The instinct was right.
The deeper frustration was that it would not think like a game developer. I was building an RPG. I had told it I was building an RPG. It had access to everything ever written about RPG data structures, RPG progression systems, RPG UI patterns. And it kept treating every question like it was the first question — like it had no model of what I was making or where I was going. I had to tell it my blind spots. I wanted it to tell me mine.
That period forced me to get better, faster. When your tool can't see what you can see, you have to see more clearly. I got significantly sharper on architecture during that stretch — out of necessity, not choice. I'm not sure I would have built the discipline for the later work without it.
But it slowed development down considerably. Big days of progress followed by days of quietly reverting everything. The game got built anyway, just slower and harder than it needed to be.
VI
Three Moments
There were three moments when the game stopped feeling like a project and started feeling like something real.
The first was exploration gates. When the map had different regions and you needed the right stats to unlock them — when movement through the world became a function of progression — it stopped being a demo and started having stakes. You were somewhere specific. There were places you couldn't go yet.
The second was the quest system. Location events that only unlocked when a character sent you there. A character asking you to go somewhere, the world responding when you did. That loop — talk, go, return, consequence — is the basic unit of an RPG. When it worked for the first time, the thing had a pulse.
The third was the Arena. That came much later and felt like a completely different game had been added to the one I already had. Turn-based combat with a full stat sheet, ability loadouts, elemental infusion, speed-based turn order. Standing in a room with Sylvie and watching her actually fight back. That was when I understood what I'd built.
VII
Two Languages
Somewhere in the middle of all this, the game needed a visual system. Not a theme — a system. A set of rules that every new screen could be built against, so that a farming UI and a quest journal and a shop interface would all feel like they belonged to the same thing without me having to think about it each time.
What emerged wasn't one language. It was two, each doing a specific job.
The overworld and its systems — map, inventory, farming, shop, message log, journal — speak in a warmer register. Cream and brown frames. Chunky, tactile buttons that feel like a plastic handheld console. Pixel fonts for headers. Orange for actions you take, blue for actions the world takes. Rounded rectangles and a tiled outer frame. This is the space where you live — where you farm, cook, check your notes, read what someone said to you yesterday. It should feel like something you can sit with.
The Arena speaks differently. Dark, glossy, cinematic. A red wordmark. Monochrome portraits of every combatant. Stat bars in saturated colour against matte black. Refined typography, no pixel fonts here. This is the space where stakes get settled — and the UI tells you that the second you walk in. Entering the Arena from the overworld should feel like the camera has changed lenses, not like you've opened a different screen in the same app.
Both registers share some ground rules. A minimum font size of 0.75rem — a hard floor I'd set for myself after catching myself making text too small because it looked better in the mockup. Action-colour consistency, so orange always means commit. The same icon vocabulary. The same inset button shadow grammar — a ledge at the bottom that compresses on press — just tuned differently for cream vs black surfaces.
One more rule both registers share: information in a fast-moving game has to be digestible without being overwhelming. The message log is split into seven channels — System, World, NPC, Help, Combat, Player, and All — because when something happens, the player shouldn't have to scan a feed of mixed signals to find it. Combat messages go to Combat. System events go to System. Nothing appears in two places. You look where you expect to look and the thing is there.
A design system that pretends to be a style guide. Which is probably the honest thing most design systems are.
VIII
The Arena
The Arena came late and changed the game.
Before it, combat happened on the overworld. You ran into an enemy on the map, your World Resonance number was compared to theirs, you won or you escaped. Clean, fast, anti-grind. That system still exists and still does what it needs to do.
But some fights needed more. When you sit down across from Sylvie or Hela or any of the main cast, something should shift. The camera should change lenses. So I built a full turn-based combat system for those moments — stat sheets with HP, Aura, physical and elemental attack and defence, speed, crit rate, crit damage, evasion, precision. Ability loadouts with cooldowns and elemental infusion. Passive traits that shape a character's identity beyond their stats. Speed-based turn order. Wagered outcomes that don't touch your main save.
The Arena is where the game's fighting-game DNA shows up, where the Pokémon influence shows up, where the years of playing Genshin and FallenSword and quietly noting what worked and what didn't finally gets spent. Every character in the main cast has been designed as a kit — a set of abilities and passives that reward a specific kind of playstyle. Hela punishes low-HP enemies and refuses to be stunned. Sylvie plays a completely different game. Standing in a room with either of them and watching them fight back the way their kit implies — that was when I understood what I'd built.
The dialogue system supports this too, quietly. Scenes can branch on conditions — items you carry, heart ranks you've earned, quests you've resolved. Characters notice things. Nothing about this is technically novel, but it gives the cast the illusion of memory. Sylvie remembers the gift you brought her last week. Claudia notices you have Veres's sword in your pack. The world, in its small ways, keeps track.
IX
The Last Month and a Half
The last month and a half has been a different kind of work. The old weapon mastery system — which required specific elemental builds to defeat specific enemies and quietly punished any build that didn't cover every type — got replaced with World Resonance. One number. Grows through quests, through time, through discovery. No grind required. No build prison. You play the game and you get stronger. That's it.
The NPC system got rebuilt properly. Gifting, heart ranks, sword ranks, battle aftermaths, faction-gated dialogue variants. Every character in the game now has a documented arc — what they want, what they're hiding, how they change as you build trust with them. The five-channel notification architecture — one home for every type of message, nothing appearing in two places — got designed and written up as a proper internal spec. The Journal, the Help system, this article — those are being written now.
I want to be straight about what isn't finished. The architecture is done. Systems work, the code ships, the loop is closed. But some of the item stats are still test values. Some of the quest endings are still first drafts. A handful of NPCs have partial arcs that trail off where I ran out of a week. There is an Exhibition Mode — a developer shortcut that hands you every item in the game — because not every item is reachable through normal play yet. I know exactly which seams are showing. They are cosmetic, and they are next.
The reason I'm shipping it anyway is that cosmetic polish is a different kind of work than architecture. The hard part — the part I was actually worried about — is behind me. The rest is the kind of problem that gets solved by sitting with it, not by redesigning it.
X
What I Actually Want From This
I've spent roughly six lakhs on Genshin over the years. I want to be clear that I don't regret the individual moments — the characters, the story, the theorycrafting. That game taught me things about systems design that ended up in this one. But it will disappear. Every game I loved will disappear, because they all live on someone's servers, and servers get switched off. I couldn't name a single one I trust to exist in ten years.
Dawn's Journey runs in a browser. No server, no accounts, no telemetry. The save is localStorage. If the files exist, the game runs. That's the brief I gave myself, and I didn't compromise it.
The anti-extraction-model thing isn't just about money, though it's also about money. It's about a left-leaning frustration with what gets done to good things when the incentives are misaligned. It's about building something I can actually give to someone — hand it over, walk away, and trust that it still works.
There's also the educational angle, which I keep coming back to. The whole architecture is AI-writable by design — structured JSON schemas, documented systems, clean separation between engine and content. A new character, a new map, a new region can all be added without touching the engine. I can see a version of this that teaches. I'm keeping that door open.
But first: the demo. The game that exists right now.
This is six months of work. Done during unemployment, during the specific discipline of making something because you need it to exist. The first web app I ever built that became something real. Started as an interactable birthday card for a friend. Ended up with a world, a story, a cast, a combat system, a farming system, a faction war, and a developer who is significantly better at this than when he started.
I hope it finds a home on your screen.
Dawn's Journey
Ashenfall, April 2026