surveillance builder detail (Surveillance Builder)
Surveillance Builder
Surveillance is one generic physical-world subsystem. Quick Ops, properties,
businesses, authored sites and permanent city locations use the same services.
Create a system:
@surveillance/create corp_security = Corporate Security Cameras
Install cameras:
@surveillance/camera corp_security.lobby = corp_security | here | Lobby Camera
@surveillance/camera corp_security.loading = corp_security | #1234 | Loading Dock Camera
Install a physical console:
@surveillance/console corp_security = here | Security Camera Console
New consoles fail closed. Configure view, control and erase separately:
@surveillance/access #<console> = view | all()
@surveillance/access #<console> = control | perm(Security)
@surveillance/access #<console> = erase | perm(Admin)
Inspect and configure:
@surveillance/list
@surveillance/show corp_security
@surveillance/name corp_security = New Display Name
@surveillance/enable corp_security.lobby
@surveillance/disable corp_security.lobby
@surveillance/retention corp_security = 500
@surveillance/retention corp_security = unlimited
Retire a physical camera while preserving stored footage:
@surveillance/retire corp_security.lobby
Administrative footage erasure:
@surveillance/erase corp_security = corp_security.lobby
@surveillance/erase corp_security = all
The destructive staff erase operation requires Admin permission.
Player console commands, when the console grants the required access:
surveillance
surveillance monitor C01
surveillance playback C01
surveillance playback C01 P01
surveillance enable C01
surveillance disable C01
surveillance erase C01 P01
surveillance erase C01 all
Stable system/camera IDs are separate from display names and DBREFs.
Cxx/Pxx values are local display IDs only.
The physical camera and recording services are NET-agnostic. NET exposure uses
the generic device-endpoint layer; Quick Ops is only one binding consumer.
For a permanent builder-owned NET host, first create a host area named
cameras using the NET builder workflow. Then bind a physical camera:
@surveillance/netbind corp_security.lobby =
corp_net/corp_host/cameras | 1 | read
Optional capabilities are: read, enable, disable, erase_all. Read is mandatory.
Mutation capabilities are never granted automatically.
Remove that persistent endpoint with:
@surveillance/netunbind corp_security.lobby = corp_net/corp_host
The binding lives in the generic persistent NET builder registry and is replayed
after reload/restart. It does not create a duplicate camera or duplicate footage.
Building