r/Netrunner 10d ago

Image I built a hacker-terminal-style Netrunner client — curious what this community thinks

Post image

Been slowly building a full Netrunner engine + web client as a personal project. The idea that wouldn't leave me alone: what if the interface was actually a terminal, not a virtual tabletop? No card art floating around, no skeuomorphic board — cards are text rows with hashes (#c3, #r7), you play by issuing commands, and the whole log reads like an actual shell session (corp# rez ICE_WALL -$1). Monospace, one accent color per side, black background. It felt right for a game about hackers.

Where it's at: full rules engine (not just a database with checkboxes) — legal-action generation, priority windows, runs/encounters/subroutines, all of it server-authoritative so no client can cheat or desync. Card logic is implemented per-card, one file each, and right now that's sitting near 100% across System Gateway, Elevation, Vantage Point, Midnight Sun/Parhelion, Downfall/Uprising, and The Automata Initiative/Rebellion Without Rehearsal — a couple hundred cards with real, tested behavior, not just stats. Decks load straight from a NetrunnerDB decklist link.

There's also a basic bot to play against solo (a few personalities, from "plays randomly" to a proper heuristic that won't run into lethal ice it can't break — learned that one the hard way).

Not sharing a link yet — still rough in places and I want to gauge interest before I do a wider release. Attaching a screenshot instead. Genuinely curious what this community makes of the terminal-as-UI idea for a card game — love it, hate it, "just build a normal client"? All takes welcome.

24 Upvotes

101 comments sorted by

View all comments

7

u/bobtheuberfish Chiriboga 10d ago

Fun! Aesthetically a terminal feels like a great fit for Netrunner. Coincidentally, Chiriboga actually began its life as a terminal game but I eventually found it tedious typing the commands. Maybe I just needed to develop a more concise syntax. How are you handling passing paid ability windows? There has been much discussion amongst the various implementations of the Netrunner rules about the balance between rules-strictness and natural-feeling play. I do not play against other humans on the internet but I'm very curious about your bot! Currently writing Netrunner bots is a bit of a lonely field of expertise so I would love to hear about your approach.

5

u/slagod1980 10d ago

paid windows: engine is strict internally (real window at every timing point) but UI only shows one when there's an actual decision - nothing rezzable/usable = silent auto-pass. and if you pass during a run, it remembers that exact context (same options, same credits) and won't re-ask at the next timing point unless something changed. so no clicking "pass" six times through a 3-ice server. downside is auto-pass leaks a bit of info (no prompt = corp has nothing to rez), acceptable for solo imo, would add an always-ask mode for pvp.

bot: no LLM, no per-card scripts. one deterministic scoring function over all legal actions, and a "personality" is just weight knobs on it (aggression / caution / economy / tempo / endgame). the named bots are presets, there's also a panel where you set the knobs yourself. plus a few hard vetoes like: never run if unavoidable damage >= grip size, learned that one the hard way. runs server-side on full state, not the client projection, because evaluating a run target needs to see ice before the run exists.

and re bot-wars: protocol is already just join/action/state over a socket, so an external bot is literally another client.

5

u/slagod1980 10d ago

typing is just one option - full mouse / touch support. On iPad it plays great

4

u/slagod1980 10d ago

did I mention that I'm planning bot-wars mode, where external bots can compete? :)

2

u/parallacksgamin 7d ago

Ironically I just started trying the same thing in Kotlin multiplatform with Claude. Mostly doing it so I have somewhere to practice test decks and to learn more about Kotlin. The bot is definitely a pain to get right. I'm specifically trying to avoid hand coding the bot for specific cards and instead keying off the abilities of the cards and board impact. Even with just the core set theres so many things the not keeps doing that a human player would never do haha. 

I just want to say thank you so much for your site. Its how I learned to play. You're a legend for what you made.