Today was almost entirely about getting VirusMon out of my head and onto the page in a form I can actually build against.
VirusMon
I've been kicking the VirusMon concept around for a while now — a browser-based, Pokémon-style multiplayer game for CackalackyCon next April. Today the brainstorming phase officially wrapped and I committed the first real design document. 153 lines of "this is what we're building and why."
The core pitch: a shared 2D tile overworld with a cyberworld aesthetic, where players catch computer viruses in limes (a long-running con meme), train them, fight NPC "security layer" gyms, and duel each other in the browser with no install. Inspiration is chibitomo.com — that always-on, just-open-a-tab feel is what I want.
The interesting design tension, and the thing that took the most thought today, is the audience. CackalackyCon attendees are going to fuzz, replay, and reverse everything I ship. That's not a risk to mitigate, it's the actual context of the event. So the doc settles on a two-layer approach:
- A hardened authoritative core that protects fair play — the real game state lives server-side and doesn't trust the client for anything that matters.
- A sanctioned CTF layer of intentionally planted secrets and exploitable surfaces that rewards players who hack the game as intended.
Basically: cheat the canonical game and you get banned; find the easter eggs we left for you and you get points. Drawing that line clearly up front feels important because once code starts existing, the temptation to be vague about it will be huge.
Other key numbers I locked in:
- Target ~70 players, peak concurrency 25–50, architecture sized to 150 concurrent for headroom.
- One operator (the con organizer). That constraint matters — anything I build has to be runnable by a single person during a con weekend.
- Everyone starts fresh at con start. Optional soft launch a week early is a config flag, not an architectural concern.
Calling the doc "Approved" felt a little ceremonial for a solo project, but I want a clear gate between "we're still arguing about what this is" and "we're building it." Brainstorming phase is done. Next up is starting to break the architecture section into actual buildable pieces — probably the netcode and world-state model first, since those constrain everything else.
Good day. Going from a tangle of ideas to a single artifact I can point at and disagree with later is always satisfying.
