Power management in ARES serves several distinct purposes. It allows the user to apply specific RLV restrictions in a narratively appropriate way; it rewards the unit (with increased battery longevity) for accepting burdensome restrictions (either despite the inconvenience or whenever a facility is not required); it establishes a vocabulary for how the robot accomplishes human-like movement and sensing; and it creates immersion and identification through the experiences of checking the unit's battery level and the ritual of charging. Because it is so foundational to the experience, a great deal of of detail and flexibility is present in how ARES has implemented the power system, and it is considerably larger than its Companion equivalent—and more flexible than the tutorials on battery usage and subsystem management have room to explain.

Subsystems

The @power command is used to view and control subsystems, to apply and remove emergency power masks, and to manage power profiles. Most of its features are also present in the subsystems... menu.

A subsystem can be in one of four states: disabled, enabled, blocked, or masked:

  • A subsystem is considered disabled if it has been deliberately turned off by a user.
  • A subsystem is considered masked if the user configuration hasn't explicitly disabled it, but it depends on something that is unavailable.
  • A subsystem is considered blocked if there is some other program or device that has told ARES it can't be used. For example, a cyberbrain attachment with its processing core removed would be a good reason to block the 'mind' subsystem.
  • A subsystem is considered enabled if there are no obstacles to its function.

ARES allows saving and loading named power profiles, which are preset combinations of which subsystems are enabled and which are disabled. When you save a power profile, any subsystem not currently fully enabled will be saved as disabled.

The standard subsystems

Subsystem definition

The EPS subsystem

Low power

If the robot drops below 20% or 10% power, some subsystems may be marked as masked, and therefore turned off, to conserve battery life. This may be experienced as the unit having difficulty teleporting, sitting on or touching objects that are not nearby, being unable to run, or unable to shout. To remedy these restrictions, you can either recharge the unit to a level above the indicated threshold, or simply force the subsystem back on manually. The command @power all on is a useful cure-all to these impairments.

If the robot drops below 5% power, ARES assumes you are most likely AFK and starts a countdown for 30 seconds. If the countdown expires, the unit shuts down, to make sure that when you return to your computer you have enough power to limp home and recharge. If this happens to you:

  1. Don't Panic! You can cancel the shutdown with @power cancel.
  2. If you return to find yourself powered down, boot back up with @on and then run @power all on so you can teleport somewhere with a charger.

When ARES powers down, including if the battery actually does run flat, then ARES will enter emergency power mode and activate the special EPS subsystem as described above. This back-up battery isn't powerful enough to let you move or speak, but will allow you to send instant messages to a friend or the NS User Group so someone can come rescue you, as well as touch yourself so you can swap batteries (if you have a spare available.)

The status daemon

The effector daemon

Inside the power utility

As noted above, user interaction with the power management system is accomplished through the _power system program. The core behavior of _power is quite simple; it reads subsystem definitions from LSD:power and adjusts values in LSD:status based on user input. It also informs the effector daemon of necessary changes to make to the unit's active RLV restrictions, and notifies the status daemon that a state change has occurred.