WatchTower monitoring is built from small reports sent by the in-world terminal. Each report is intentionally compact. The system favors frequent safe updates over giant payloads that might crash the script or hit Second Life HTTP limits.
Land & Presence
The Land Worker gathers information about the terminal’s current parcel and region. It reports the region name, parcel name, SLURL, terminal position, parcel avatar count, region avatar count, region capacity, FPS, time dilation, lag score, and map tile data.
This data is useful for owners because it answers:
- Is my land online?
- Is the terminal still in the right place?
- How many avatars are in the parcel or region?
- Is the simulator performing normally?
- Can I jump directly to the location with an SLURL?
SLURL and position
A location should include an SLURL whenever possible. The SLURL lets an owner or staff member teleport to the area being monitored. The terminal position should be shown as a simple x/y/z coordinate. If the terminal is used as a landing-point monitor, owners should place it near the location they actually care about.
Region Map
The Region Map uses simulator/global position data to identify where a terminal is in the Second Life grid. Map data can help show multiple protected locations visually. It can also help distinguish locations with similar names.
Map accuracy depends on the simulator data returned to LSL and the terminal’s current position. If the terminal is moved, a later land snapshot should refresh the map position.
People Online
The Scanner Worker reads avatars in the region and parcel. The safe version does not try to send every avatar every time. It sends a small batch, tracks an offset, and rotates through the list over multiple cycles.
The safe scanner should use these rules:
| Safety rule | Reason |
|---|---|
| Maximum 5 avatars per scan batch | Keeps JSON small and memory stable. |
| Rotate through the region list | Busy regions still get covered over time. |
| Include parcel-present and region-present | Helps separate nearby region traffic from land visitors. |
| Avoid huge names/lists | Protects against Stack-Heap Collision. |
| Drop oversized payloads | Better to miss one batch than crash the object. |
What avatar data means
WatchTower can report that an avatar was seen by the scanner in the region or parcel. It should be described as **seen**, **last seen**, or **present in scan**. It should not be described as perfect attendance, proof of identity beyond avatar UUID/name, or a record of private behavior.
Useful fields include:
- Avatar UUID
- Display name
- Username / legacy name when available
- Position
- Distance from terminal
- Parcel-present flag
- Region-present flag
- Timestamp
Lag Meter & Health
The lag/health view should combine simulator performance and terminal health. Simulator performance comes from values such as region FPS and time dilation. Terminal health comes from script free memory, heartbeat age, queue state, and last successful HTTP send.
Suggested lag score meaning:
| Score | Meaning |
|---|---|
| 80–100 | Healthy or normal. |
| 60–79 | Mild stress; watch if events are active. |
| 40–59 | Noticeable lag; owners may want to reduce load. |
| 0–39 | Serious performance issue or bad data state. |
Region lag is not always caused by the owner’s land. It can come from neighboring objects, region load, pathfinding, scripts, avatars, attachments, or temporary grid issues. WatchTower should present lag as a signal, not as a guaranteed cause.
Machine Monitoring
Machines are WatchTower-related objects that report to the dashboard. A machine can be a terminal, payment station, relay, gate, or future add-on object. Machines should be tied to an owner account and, when possible, a location.
Recommended machine record fields:
- Machine UUID / object key
- Machine type
- Object name
- Owner UUID
- Owner name
- Region
- Parcel
- SLURL
- Script version
- Last heartbeat
- Last event type
- Free memory
- Token state
- Dashboard status
Handling stale machines
A stale machine is not always broken. The region may have restarted, the owner may have picked up the object, scripts may be disabled temporarily, or the subscription may have ended. The dashboard should show the last seen time and suggest the next step rather than immediately calling it failed.
Recommended stale-machine guidance:
- Wait one update cycle.
- Check whether the region restarted.
- Touch the terminal and choose **Status**.
- Use **Health** or **Heartbeat** from the menu.
- Confirm the object still has its `WTTOKEN`.
- Re-register only if the token is missing or invalid.
Why small reports are better
Second Life scripts have limited memory. A single script building a huge JSON payload can fail with Stack-Heap Collision. WatchTower avoids that by splitting work into small scripts, using maximum queue sizes, sending one HTTP request at a time, staggering timers, checking free memory before big work, and dropping oversized payloads instead of risking a crash.
