MODERN MEDICINE GUI & PLAYER SYSTEMS

GUI & PLAYER SYSTEMS

CLIPBOARD

The player’s HUD went through many iterations throughout the course of the game. For most of development, objectives were permanently displayed in corner of the screen and other information was available through a gui shaped like a clipboard. This combined with dialogue, hotbar, and other visual elements made the screen feel very cluttered. To fix this and increase immersion, I moved many of these gui elements onto a physical clipboard that the player can equip at any time. The result is a clean feeling user interface, with the only permanent element being the player’s hotbar and some occasional elements appearing for dialogue and new objectives.

A clipboard
HUD elements displayed on the player’s clipboard.
A clipboard
When interacted with, lore documents display on the player’s clipboard. Equipping the clipboard again will return to the normal gui.
SCREEN GUIS

The toolbar, stamina indicator, and health bar are the gui elements which were not relocated to clipboard.

  • The toolbar displays all active items the player has, along with their count or fuel level. It has full cross platform support, and adds additional gui icons for controller navigation when needed.
  • The stamina indicator bar slides off the screen while the player is sprinting. If the player has full health, the bar disappears. For added tension, it slides off the screen using an exponential function - the stamina appears to degrade “slower” the closer the player is to running out.
  • The health bar displays the percentage of health the player has remaining. If the player has full health, the bar disappears. The player may purchase permanent health upgrades in the shop to increase their max health. The health bar reflects this.
The player ruuning through hallways, using items.
The player sprinting, healing, and using the toolbar.

The dialogue and objective notification guis are also drawn on the screen. The dialogue displays an avatar image, name, and typewrites the text. The speaker can either be a character with a 2D image, or a randomly selected player in the lobby. If a player is selected, their avatar’s bust is fetched from the Roblox website and cached into memory for future use. Dialogue sequences can also be sent to individual players or to the entire lobby. Sequences sent from the server are queued on the client, or all dialogue in the queue may be skipped to play the most recently received dialogue sequence if a flag in its metadata is set. The sequences are sent serialized with data such as: text, player (or custom character), image, sequence group, sequence id, playback speed, and pause delay (after the message has been typed out).

Notice how the text does not get resized as the typewriting process commences. This is done by converting the display text into the utf8.graphemes format and doing the typewriting by changing the MaxVisibleGraphemes property of the text box gui, rather than simply adding characters to its text string. This is not only more efficient, it also avoids the text scaling changing with each additional character. Rich text tags are also supported by this system. When iterating through graphemes, the rich tags are ignored (removed previously with a gsub).

Text being typed onto the screen.
The dialogue and objective gui (playback is 1.5x the recorded speed). Unknown is a character created for the game, hio555 is a player with randomly assinged dialogue lines.
LOBBY

The lobby has 3 core gui systems: the shop, achievements, and settings.

The shop gui displays all of the in-game purchases the player can make using both Robux (Roblox currency) and RVUs (Custom currency). The player can exchange Robux for RVUs in the shop, or earn RVUs by playing the game. The shop also displays examples of skins the player can purchase in viewport frames.

A gui shop.
Navigating through the lobby shop. Player currency is displayed…

The achievements gui displays every badge that is available in the game and whether the player has unlocked each specific badge or not. Discovered lore docs are also viewable from this gui. They are sorted by rarity, and the player can click on a document to access it again.

A gui menu.
The achievement gui displays all badges and discovered lore documents

The settings gui allows the player to customize their experience. They can enable or disable certain features, choose special chat tags to display by their name, and choose monster skins. If multiple skins for the same monster are selected, one will be chosen at random during the game when the monster spawns in. Monster skins are shared between all players in a current session, meaning if one player has the Crimson Larry skin enabled, all other players will be able to see it.

A gui menu.
The settings gui allows players to customize their experience.
CROSS PLATFORM SUPPORT

All gui elements were designed with cross platform support in mind. All gui buttons have their neighbors mapped to assist with controller navigation. When a controller is detected, button images will appear to help with navigation. The gui elements also work on touchscreen devices, as well as in VR.

A gui menu with controller support.
Navigating the lobby guis using a controller
Back