BLACK ICE TRACE Design
Concept
BLACK ICE TRACE is a turn-based terminal hacking game written in KEC Lisp. The player breaks into a small corporate network, steals enough data, and jacks out before trace reaches 100. The game is intentionally command driven so it fits the current host primitives: printed output, command-line args, strings, and file-backed state.
Rules
The run contains five network nodes. Each node is an alist with a name, security
rating, data value, ICE rating, and status. Status progresses from :unknown to
:scanned, :rooted, and :looted.
The player is an alist with trace, stealth, credits, turn count, current node, and a jack-out flag. Each command consumes a turn unless the game is already over:
- Scan reveals a node and adds low trace.
- Crack attempts to root the current node, with security and ICE affecting risk.
- Siphon steals data from a rooted node.
- Spoof spends stealth to reduce trace.
- Pivot moves to another node.
- Jack out ends the run and wins only if the player has enough credits.
The player wins by jacking out with at least 300 credits. The player loses if trace reaches 100 before jacking out.
Implementation Shape
The game will be split into a small reusable library and a runner:
examples/black-ice-trace-lib.lspdefines pure state helpers, render helpers, command application, and dashboard rendering.examples/black-ice-trace.lsploads the library, applies one command fromargs, prints a dashboard, and saves state for the next invocation.tests/examples/black-ice-trace.lspexercises deterministic helpers and a short scripted victory/loss path.
The library uses alists as records because KEC Lisp has no vectors, structs, or hash tables. Lists are short enough that linear lookup is fine and keeps the example idiomatic for the current Core.
Expected Language Friction
The first version avoids raw keyboard controls, screen clearing, cursor positioning, sockets, and a continuous stdin prompt. Those would make the game feel more like a live TUI, but the current standalone host is better suited to a stateful command loop driven by repeated CLI invocations.