net builder detail (Net Builder)
NET Builder Authoring (Staff/Builder)
Builders can author NEW NET content -- external topology, hosts,
sections, directed passages, passive ICE, Hostile ICE, accounts, Data
Vault designation (including retention and paid storefront), software
content variants, and hardware spawning -- entirely through in-game
commands. No Python editing is required for this content. Everything
created this way survives a Server reload/restart.
STABLE IDS vs DISPLAY NAMES
Every piece of content has a machine-stable ID (used in commands)
separate from its player-facing display name. IDs never change
once created; display names can be edited freely.
EXTERNAL TOPOLOGY vs HOST
The external NET (Z-plane coordinate space, Nodes, ingresses,
gateways) is built with @nettopo. A HOST is the internal
section-set (Login, CPU, Data Vault, ...) attached to one Node,
built with @nethost. A Node must exist before you can attach a
host to it.
PERMANENT ROOMS
Each host section is backed by one real, permanent Evennia Room --
created (or reused) by @nethost/reconcile. Builder-authored
configuration is just DATA; reconcile is what turns it into an
actual walkable place.
DIRECTED BOUNDARIES -- CRITICAL
A passage between two sections is DIRECTIONAL. A -> B and
B -> A are two completely independent boundary records, each
with its own required access level, passive ICE, Krunch grant,
ICE repair threshold, and Hostile ICE. Creating one direction
NEVER creates or affects the other. This is deliberate: a corridor
can be wide open walking IN and heavily defended walking OUT.
PASSIVE ICE vs ICEB SOFTWARE
Passive ICE (@netice) is the boundary's own static defense --
a configured strength value. ICEB cyberdeck programs (Chipper,
Rhino, Krunch, etc.) are what a RUNNER uses to bypass, disable, or
destroy that defense. They are not the same thing.
HOSTILE ICE (HICE)
A HICE (@nethice) is a construct that CAN spawn to defend one
specific directed boundary -- attach it with @nethost/hice.
Like passive ICE, it is coupled to ONE direction only; the reverse
passage never inherits it.
HOST ACCOUNTS
@nethost/account-add creates a real login account on a host.
Access level 0 is a completely LEGAL authenticated account -- it
is never treated as "no account".
DATA VAULT DESIGNATION
@nethost/vault-set marks which ONE section of a host is its
Remote Data Vault (where help remote/help download/
help upload operate). The area must already exist on that
host.
DATA VAULT RETENTION (persistent vs consume-on-download)
Every vault has a DEFAULT retention policy set with
@nethost/vault-retention <net>/<host> = <policy>, where policy
is persistent (the remote file survives download -- default,
matches every pre-existing vault) or consume_on_download (the
remote file is removed, but ONLY after a download/purchase
actually succeeds -- never on a failed attempt). Any single stored
file can override the vault's default with
@nethost/vault-retention <net>/<host> <file#> = <policy>.
PAID DATA VAULT (storefront)
A vault becomes a storefront by giving it a seller:
@nethost/vault-seller <net>/<host> = <economic_account_id>
(the account must already exist -- it is never silently created).
Then price individual files with
@nethost/vault-price <net>/<host> <file#> = <price|free>. A
priced file is refused by the ordinary help download command
(which never silently charges anyone) -- players use help buy
instead, which validates funds, transfers credits through the
canonical economy service, then downloads. A failed purchase
(insufficient funds, missing seller) charges nothing and never
consumes a one-shot entry. @nethost/vault-add seeds a file
directly (software or text); @nethost/vault-remove deletes one.
@NETSOFT -- software content variants
@netsoft/clone <new_id> = <existing_id> creates a new software
definition by cloning an existing one, then
@netsoft/set <id> <field> = <value> tunes SAFE fields only
(display_name, source_name, storage_size, base_effectiveness,
running_speed, copy_difficulty, notes). You can NEVER invent a new
mechanic this way -- a clone inherits its source's behavior_id
(the stable MECHANICAL identity that selects a real runtime
adapter, separate from software_id, the stable CONTENT
identity) unchanged by default, and @netsoft/set <id> behavior =
<behavior_id> may only repoint it to another ALREADY-REGISTERED
behavior -- never an arbitrary string, path, or callable.
Every currently implemented software mechanic in this catalog is
now migrated to the behavior registry -- clone ANY existing
program and it genuinely runs for its real effect, under your
clone's OWN software_id and display name, exactly like storing/
trading/selling it already works. @netsoft/show reports
"Executable: yes" and "Builder Cloneable: yes" for every current
source. New content using an already-registered mechanic is
builder-authorable this way; a genuinely NEW mechanic still
requires a programmer to implement and register it.
@NETHARDWARE -- hardware index
Read-only list/show/spawn over the EXISTING donor cyberdeck
hardware catalog and its matching Item prototypes. Never a second
hardware system. @nethardware/list [family],
@nethardware/show <source_id>, @nethardware/spawn <source_id>.
@NETHOST/CHECK -- validation
@nethost/check <net>/<host> is a READ-ONLY report that flags:
duplicate boundary IDs, boundaries referencing missing areas,
negative access/Krunch/ICE-repair levels, out-of-range SurfStream
difficulty, areas with no permanent Room yet, a Data Vault
referencing a missing area, priced files with no configured
seller, and a configured seller account that no longer exists. It
never assumes every route must be bidirectional -- a one-way
passage is not itself a problem.
STAFF DEBUG / RESET CONTROLS (Builder-only, never player-facing)
@nethost/ice-state <net>/<host> <boundary_id> inspects a
boundary's disabled/destroyed protection flags.
@nethost/ice-disable / /ice-destroy explicitly set those
flags for testing; /ice-restore clears both. /hice-state
inspects whether Hostile ICE is currently active on a boundary and
its remaining strength; /hice-reset despawns/clears it. These
all use the existing state APIs -- never raw Attribute mutation.
VALIDATION / RECONCILIATION
@nethost/reconcile creates any missing permanent Rooms for a
host's currently configured sections. It is safe to run repeatedly
(idempotent) and never deletes anything.
QUICK EXAMPLE
@nettopo/create test_net = Builder Test Network
@nettopo/plane test_net 1 = Public NET | 0,20,0,20
@nettopo/terrain test_net 5,5,1 = lane
@nettopo/terrain test_net 1,1,1 = lane
@nettopo/node test_net/corp_test = 5,5,1 | Test Corporate Host
@nettopo/ingress test_net/default = 1,1,1 | Test Entry
@nethost/create test_net/corp_test = Test Corporate Host
@nethost/area-add test_net/corp_test cpu = CPU
@nethost/connect test_net/corp_test login_to_cpu = login -> cpu | east
@nethost/connect test_net/corp_test cpu_to_login = cpu -> login | west
@nethost/access test_net/corp_test cpu_to_login = 200
@netice/create wall_2_0 = Wall 2.0 | 250
@nethice/create queen_spider = Queen Spider 1.4 | 200
@nethost/ice test_net/corp_test cpu_to_login = wall_2_0
@nethost/hice test_net/corp_test cpu_to_login = queen_spider
@nethost/account-add test_net/corp_test guest = 0 | guestpass
@nethost/vault-set test_net/corp_test = cpu
@nethost/reconcile test_net corp_test
@nethost/check test_net/corp_test
For a complete step-by-step build of a small corporate host from
nothing, see help net builder tutorial.
See also: help @nethost, help @nettopo, help @netice,
help @nethice, help @netsoft, help @nethardware,
help buy
Cyberdecks