The ARES heads-up display (HUD) is designed to be highly configurable to suit a wide range of usage needs. This chapter will walk you through the process of tweaking it to your liking.
How the Interface Works
The HUD consists of 4 primitives, 124 single-surface mesh rectangles, and 128 eight-surface mesh strips.
Type | Link range | Notes |
---|---|---|
Primitives | 1–4 | Kernel ring, services ring, user memory ring, and mouselook crosshair |
Rectangles | 5–128 | Used for most UI elements |
Strips | 129–256 | Used mainly for displaying VariaType text |
The majority of these links are assigned to specific system functions, such as displaying the compass or the menu system. These assignments are documented in detail in The ARES Operating System: Interface Architecture. Not all links have fixed assignments—many are reserved for HUD-based user applications, such as wizards, mantra, or wander. In the future it will be possible to play board games, manage HCS inventory, and control a wide range of Nanite Systems equipment by installing HUD applications.
Building the Interface
The ARES interface is generated by two programs in the system services rings, called _interface and _variatype. These two scripts set the size, position, color, rotation, and textures of most parts in the HUD. _interface is responsible for the majority of UI elements, and also handles certain "real-time" widgets like the compass, altimeter, speedometer, and target tracking. _variatype is mainly responsible for managing the text you see in menus and alert messages. (This is similar to, but more sophisticated than, XyzzyText.) In some versions of ARES, the _variatype daemon also manages the device bar.
Refreshing the UI
Like most programs in ARES, _interface and _variatype read their configurations from the LinksetData database. LinksetData entries are not continuously monitored for updates, so when you are customizing your settings, you will be using the following commands after every change:
- Save changes to your local.db file (the importance of local.db is explained below)
- @db load local.db
- @service interface reconfigure
Sometimes you'll need to replace interface with the names of other daemons, such as status, repair, or variatype. These exceptions will be noted below.
General workflow for customizing ARES
Customizing ARES consists of modifying database entries, and then restarting the affected daemons. For safety we recommend the following process.
Accessing user memory: To edit any of the files in your ARES installation, you need to access the inventory of Link #3, which is the user memory prim. Here are the steps:
- Press Ctrl-3 to open the Edit window. (On Mac, the Ctrl key is labeled Command.)
- Press Ctrl-Shift-E to turn on Edit linked mode.
- Click the model badge at the bottom-middle of your ARES HUD. (this was Part 1 in Tutorial: The ARES interface)
- Switch the Edit window to the Content tab. (If you do not see the tabs, click the thin, wide button with a down arrow, at the bottom of the Edit window, to expand it.)
Look through existing .db files: Scroll through the contents of user memory until you find relevant <name>.db files. For this chapter we're mainly interested in two files, local.db (where you'll be storing your modifications) and interface.db (which contains default UI settings).
Make sure you save everything you do in local.db: Almost all customization in ARES is done with the database management utility, @db. Although it is faster to make changes to your configuration by directly telling @db to make them, these changes could get lost or reverted when you install a new version of the OS. Therefore it is a good idea to write your settings in a special notecard (we recommend the name local.db, and a file with this name has already been provided for you), and use db indirectly by using the @db load <filename> command.
Import your local.db file: This can be done with the command @db load local.db so long as you have permission to modify the database. (See Operating ARES: Security for more information on security permissions.)
Restart affected services: Although there are a few parts of ARES that check the database before acting, the vast majority of ARES software requires that you run a special command to force a configuration refresh, as it would be prohibitively expensive to monitor the database for updates. In this chapter, the most important command of this type is @service interface reconfigure.
Keep going: You probably won't get every change you want implemented right away. Experimenting, repeating, and tweaking are all part of the process.
Interface Settings
For a visual glossary of the elements of the ARES user interface, see Tutorial: The ARES interface (HUD).
Setting | Default | Definition |
---|---|---|
interface.sound.volume | 1.0 | The volume of sounds played by the UI. |
interface.sound.go | bd99a429-e579-0367-57c7-5dda70605ad0 | The sound played when successfully entering a new menu. Also used by main controller, if it has a screen; run @device probe to reload sound settings on the controller. |
interface.sound.deny | edf4ea86-3472-6c85-ad0c-c9b154c86f5d | The sound played when a menu action fails because of inadequate permissions. Also used by main controller, if it has a screen; run @device probe to reload sound settings on the controller. |
interface.sound.act | ad78297b-25a7-ba88-65b3-bfecb20f50a8 | The sound played when a menu action (other than navigating to a new menu) succeeds. Also used by main controller, if it has a screen; run @device probe to reload sound settings on the controller. |
interface.sound.menu-open | 5724f680-4c89-110f-4ab5-fd4e0d48e44c | The sound played when opening the SYSTEM MENU interface. |
interface.sound.menu-close | b3a1c106-c602-fba6-895e-e9b440d78c86 | The sound played when closing the SYSTEM MENU interface. |
interface.sound.shield-down | 348fcd3d-7993-54fb-720c-c5ebc42de505 | An alarm sound played repeatedly while the unit's shield has been overloaded and is not able to block incoming threats. |
interface.sound.env-alarm | 5db9d9d6-6eda-485e-6436-e97dfdc1983c | An alarm sound played repeatedly while the unit is overheating or freezing. |
interface.sound.damage | d248834e-ae0d-a844-8a98-de6cdaa67760 | The sound played whenever the unit loses integrity. |
interface.sound.repair | 5b93518c-2a6d-baef-3fc2-ee3af6cf74a4 | The sound played whenever the unit gains integrity. |
interface.sound.alert | 83f5fcc7-3084-853c-8402-218b0f45abd2 | The sound played when an alert (e.g. consent request) appears. |
interface.sound.alert-dismiss | 08d80c61-8c9e-3a3b-7855-4f8d17ccc791 | The sound played when an alert is removed. Note that the standard NS ARES Alert Response gestures also play sounds, and that those sounds are audible to nearby avatars. |
interface.sound.test | 971afde2-73e2-5dd8-6c8a-6c7ee25c7411 | A test sound played when @id volume is used. |
interface.compass.enabled | 1 | Display the compass when turning? 1 = yes, 0 = no. |
interface.compass.offset | <0, 0, 470> | Coordinates for displaying the compass widget. |
interface.gauges.offset | <0, 0, -448> | Coordinates for displaying the main status bar, including model badge and gauges. |
interface.height | 1008 | Calibrated height (in pixels) of the SL camera viewport while the top menu bar is visible. |
interface.height-mlook | 1027 | Calibrated height (in pixels) of the SL camera viewport while all UI is hidden. |
interface.devices.offset | <0, -860, 0> | Coordinates for displaying the devices bar. Run @reset device to apply changes to this setting. |
interface.devices.scale | 2 | The size of the devices bar. 1 will show the icons at 16x16 px, 2 will show them at 32x32 px, etc. Run @reset device to apply changes to this setting. |
interface.altimeter.enabled | 1 | Show the altimeter widget when moving up and down? 1 = yes, 0 = no. |
interface.altimeter.offset | <0, 380, 0> | Coordinates for displaying the altimeter widget. |
interface.speedometer.enabled | 1 | Show the speedometer widget when moving? 1 = yes, 0 = no. |
interface.speedometer.offset | <0, 408, -226> | Coordinates for displaying the speedometer widget. |
interface.crosshair | 3 | Crosshair to display in mouselook (0 = off, 1–12 = various graphics, 17 = ballistic) |
interface.sexuality.offset | <0, 0, -364> | Coordinates for displaying the TESI Sexuality interface (if installed.) Run @service sexuality reconfigure to apply changes to this setting. |
interface.warning.offset | <0, 768, 384> | Coordinates for displaying the fixed warning messages (LOW BATTERY, RADIATION DANGER, etc.) |
interface.menu.offset | <0, -540, 448> | Coordinates for displaying the menu system. Run both @service interface reconfigure and @service variatype reconfigure after adjusting this setting. |
interface.alert.offset | <0, 768, 416> | Coordinates for displaying alert messages. Run both @service interface reconfigure and @service variatype reconfigure after adjusting this setting. |
interface.alert.time | 10 | Duration in seconds that alert messages should linger on the screen before being automatically dismissed. Alert messages that require input will never automatically dismiss. Run @service variatype reconfigure after adjusting this setting. |
interface.sitrep.enabled | 1 | Display the sitrep bars? (1 = yes, 0 = no) |
interface.sitrep.offset | <0, 839, 237> | Coordinates for displaying the sitrep bars. |
interface.fov | 60 | Field-of-view (in degrees) of the SL viewport. Required for accurate target tracking. |
interface.font | psychic-instability | The name of the VariaType font to use for displaying menus and alerts on the HUD. Run @db font for a list of available fonts. Run @service variatype reconfigure after adjusting this setting. |
interface.boot.size | <512, 256, 0> | The size, in pixels, of the "ARES" logo boot screen displayed during kernel resets. Run @reset proc after adjusting this setting. |
interface.boot.animate | 1 | Is the boot screen animated? (1 = yes, with 8 frames; 0 = no). Run @reset proc after adjusting this setting. |
interface.double-print | 0 | Attempt to print all VariaType messages twice? (1 = yes, 0 = no). Mitigates packet loss causing gaps in menu and alert text. Run @service variatype reconfigure after adjusting this setting. |
interface.badge | undefined | Specify an alternative graphic to use for the model badge. If no value is specified, ARES will check your LSD:id.model setting and choose one that matches from LSD:badge. See the file badge.db for a list. |
interface.devices.icon | (various) | Icons used for devices. These mainly consist of two-character codes corresponding to X and Y coordinates on the i_device interface asset, but you may also provide a UUID for a custom texture. Devices may override their displayed icon by sending the icon <UUID> message over the light bus. Run @service variatype reconfigure after adjusting icon settings. |
Screen Coordinates
ARES uses screen coordinates measured in pixels to position and size UI elements. For sizes, these are expressed as:
<width, height, 0>
For positions, these are:
<depth, up, right>
Higher depth values are further away, and will cause elements to become layered behind each other. This is usually 0.
An up value of 0 is the vertical middle of the screen.
A right value of 0 is the horizontal center of the screen.
Interface Assets
ARES makes reference to several image files, stored in link 2 (the System Services ring) to build and display the user interface. After any changes, you must run @service interface reconfigure to reload them. These files may be replaced in the event of an OS update, so keep backups handy.
Except where noted, all images should be white on a transparent background.
Image | Size (px) | Use |
---|---|---|
i_alert | 512x512 | Top row: alert icons. Rest of image: alert button prompts. Run @service variatype reconfigure to reload this image. |
i_bignums | 1024x128 | Digits used to display ammo and integrity counters while in mouselook. Run @service repair restart to reload this image. |
i_boot | any; must match LSD:interface.boot.size | Image to display during kernel restarts. If LSD:interface.boot.animate is 1, ARES will assume this contains a 2x4 = 8 frame animation. Run @reset proc to reload this image. |
i_cladding-backdrop | 1024x128 | Image is tinted black and displayed behind main status bar to improve legibility against bright backgrounds. |
i_cladding-left | 1024x256 | Background bar for left gauges (BODY, RPM, THERMAL) |
i_cladding-right | 1024x256 | Background bar for right gauges (CRYO, LOAD, VOLTAGE) |
i_compass | 1024x64 | Compass texture. Bottom half is displayed at top. |
i_crosshair | 256x256 | Crosshair textures. Right quarter is used for "ballistic" crosshair (#17). Run @service repair restart to reload this image. |
i_device | 512x512 | 16x16 image containing various device icons, referenced by LSD:interface.device.icon. |
i_fixed | 256x1024 | 32 different warning messages to display in the fixed warning section of the screen. |
i_mlook | 128x64 | 'INTEGRITY' and 'AMMUNITION' labels displayed when in mouselook. |
i_sexuality | 1024x128 | Background image of Sexuality interface. |
i_sitrep | 256x256 | 8 different bars displayed on sitrep indicator. |
i_target | 512x256 | Target lock and navigation waypoint indicators. |
i_working | 1024x1024 | 256 frame animation played in top-left area above main status bar while disk activity is occurring or the unit is in the !working state. (See ARES Tutorials: Command line basics - Effector commands) |
m_anchor | 512x256 | 4 different states for the SYSTEM MENU access widget (SYSTEM MENU, CLOSE MENU, DISCONNECT, and CONNECTING ...). Run @service variatype reconfigure to reload this image. |
m_main | 512x512 | Background image for system menu access widget. Only the middle 420x292 pixels of this texture are displayed. Run @service variatype reconfigure to reload this image. |