Skip to content

Visualization Guide

NoneGiven edited this page Jul 11, 2022 · 58 revisions

MphRead can visualize various forms of information that are hidden during gameplay, such as invisible entities, collision meshes, and entity volumes. Refer to the Viewer Controls guide for a full list of the keyboard shortcuts available for navigating these visualization modes.

Contents:

Invisible Entities

Several entity types are always invisible, and a few others can either have models or be invisible. Invisible entities still have a position in 3D space, and often have an orientation value as well. Toggling invisible entity display with I will make MphRead render these entities with a recolored version of pick_wpn_missile, an unused model in MPH.

Platform

Always invisible: No

platform-1 platform-2

Invisible platforms are used for spawning beams hazards, or as targets for other entities to track (such as effect-spawning objects, or beams spawned by other platforms).

Object

Always invisible: No

object-1 object-2

Invisible objects are used to spawn effects, or as scan points for environmental features.

Note that invisible scan point objects are not the same as the objects used for lore scans. The former have no model, while the latter use the AlimbicGhost_01 model while the Scan Visor is active. Additionally, some objects use the GhostSwitch model while the Scan Visor is active.

Player Spawn

Always invisible: Yes

player-1 player-2

Player spawns are invisible entities located at coordinates where players can spawn. The player receives the orientation value of the chosen spawn point as well as its position when spawning there.

Item Spawn

Always invisible: No

item-1 item-2

Item spawns hold information for spawning item instances. Most are invisible, but some in single-player mode use the items_base model.

Enemy Spawn

Always invisible: Yes

enemy-1

Enemy spawns hold information for spawning enemy instances. Enemy spawns are always invisible, but they can also spawn a special enemy type during initialization that serves as the visible spawner model. These use the EnemySpawner model by default, and use the PlantCarnivarous_Pod model when spawning Barbed War Wasps.

Trigger

Always invisible: Yes

trigger-1

Triggers are invisible entities which send messages to other entities. There are five different subtypes, one of which has an associated volume that serves as the trigger area.

Always invisible: Yes

area-1

Area volumes are invisible entities which are similar to the volume subtype of triggers. They have an associated volume and send messages when the volume is entered or exited.

Morph Camera

Always invisible: Yes

morph-1

Morph camera entities are invisible entities with an associated volume. The game camera becomes fixed at the entity's position and swivels to face the player while they are within the volume and in alt form.

Flag Base

Always invisible: No

flag-1

A flag base entity is the dropoff point for scoring in Capture and Bounty modes. It has an associated volume used to determine when a player has dropped off an Octolith flag.

This entity is technically only visible in Bounty mode. In that mode, it uses the flagbase_cap model, while the flagbase_bounty model at the pickup point is drawn elsewhere by an Octolith flag entity. In Capture mode, each team has a flag base entity and an Octolith flag entity at the same position, and in that mode, the latter is responsible for drawing the flagbase_ctf model.

Teleporter

Always invisible: No

teleporter-1

Teleporters are usually visible, and use one of the TeleporterMP, TeleporterSmall, or Teleporter models. In practice, the only invisible teleporters are some small teleporters in single-player. Additionally, because single-player teleporters require a destination teleporter in the target room, one-way teleports are accomplished with a disabled, invisible teleporter as the destination.

destination-1

In multiplayer, each teleporter has an invisible destination point within the arena, and this can also be visualized by MphRead.

Light Source

Always invisible: Yes

light-1

Light source entities are associated with volumes which override the room light colors on player entities inside them.

Camera Sequence

Always invisible: Yes

camera-1 camera-2

Some camera sequence entities are responsible for initiating in-game cutscenes, while others behave similarly to morph camera entities. The latter entity type overrides the game camera in order to track the player in alt form, but unlike morph cameras, the camera is not fixed at one point. All camera sequence entities must be activated externally (usually by a trigger or area volume) as they don't have associated volumes of their own.

Volumes & Planes

Many entities have associated volumes that are used to check for collision with the player or other entities. MphRead can cycle through various types of volume and plane display with Z.

Note: Alt+H can be used to limit volume display to the selected entity, if any. See the section below for information about entity selection.

Light Volumes

  • Index 1 (Light 1)
  • Index 2 (Light 2)

light-vol-1 light-vol-2

Light source entities have an associated volume that will override one or both of the room lights for player entities inside it. MphRead colors the volume according to the light color. If one of the entity's lights is disabled, meaning the room light is left unchanged, the volume will be colored black.

Trigger Volumes

  • Index 3 (Parent event)
  • Index 4 (Child event)

trigger-vol-1 trigger-vol-2

If a trigger entity has the volume subtype, MphRead can display it colored according to the messages it will send. If the message is of type 0 (none), the volume will be colored black.

Area Volumes

  • Index 5 (Inside event)
  • Index 6 (Exit event)

area-vol-1 area-vol-2

MphRead will display area volumes colored according to the messages they send. If a message is of type 0 (none), the volume will be colored black. Examples of the colors used can be found on the entity page.

Morph Camera Volumes

  • Index 7

morph-vol-1

The associated volume of a morph camera entity will be colored yellow. The morph camera becomes active while the player is in alt form and inside this volume.

Jump Pad Volumes

  • Index 8

jump-vol-1 jump-vol-2

Jump pads have an associated volume which is used to test for collision with the player and activate the jump pad acceleration. MphRead displays this volume in green.

Teleporter Volumes

  • Index 9

tele-vol-1 tele-vol-2

Teleporters will warp the player when they enter a certain spherical area. After being teleported, the player must move away a slightly greater distance before they can activate the teleporter again. The former area is visualized in red. The latter is not currently visualized, nor is the teleporter's animation activation radius.

Enemy Hit Zones

  • Index 10

hit-zone-1 hit-zone-2

Most enemies have volumes that are checked for collision with beams in order to inflict damage, and often for collision with the player as well. These volumes are displayed in red. A handful of enemies spawn a special child enemy type to act as either a weak spot or a secondary collision volume.

Object Effect Volumes

  • Index 11

effect-vol-1

Some objects use a volume to determine whether to spawn their effect based on where the camera is. MphRead displays these volumes in red.

Flag Base Volumes

  • Index 12

flag-vol-1 flag-vol-2

The flag base entity uses a volume and checks for player collision for its dropoff point. These volumes are displayed in white.

Defense Node Volumes

  • Index 13

defense-vol-1 defense-vol-2

The nodes in the Defender and Nodes game modes use a volume to determine whether a player is occupying them. These are displayed in white.

Room Kill Plane

  • Index 14

kill-plane-1 kill-plane-2

Each room has a height value defined in metadata, below which players will be automatically killed. This is displayed in purple. Note that separately, area volumes can send a message to kill a player on contact.

Coordinate Limits

  • Index 15 (Player)
  • Index 16 (Camera)

coord-limit-1 coord-limit-2

Multiplayer rooms have defined coordinate minimums and maximums beyond which the player or free camera can't move. This creates a bounding box for habitable space in the room. If a player falls below the minimum Y coordinate, they are automatically killed. If the player or camera attempts to move past any of the other limits, they are instantly clamped back to them. The player bounding box is visualized in red, and the camera bounding box in pink.

Room Node Bounds

  • Index 17

node-bounds-1

Room model nodes are culled (left out of the drawing process) based on the position of the camera and whether it is looking at a certain axis-aligned bounding box around each node. These volumes are displayed in red for the node which is currently selected. See the section below for information about node selection.

Room Portals

  • Index 18

portal-1 portal-2

Portals are planes which are used to control the partial rendering of rooms when the camera crosses them. Some are normally rendered as the hexagonal force fields that become more transparent the closer to player is to them, and some are invisible. When display is enabled, the force field portals will be rendered in purple, and the invisible portals will be rendered in green.

Collision

Use Alt+K to enter collision display mode. A menu will be printed in the console showing the various display options. Use K to cycle through the options and J to update the value of the selected option.

It may be helpful to use entity selection to toggle visibility of a room/entity in order to see collision clearly. Additionally, Alt+Q can be used to cycle displaying collision faces and edges, edges only, and faces only.

Color

The color option allows choosing how to color the collision display. By default, all collision is red. The option can be cycled to color by entity type, by terrain type, or by entity interaction.

col-1 col-2

The opacity setting allows toggling between semi-transparent and opaque display of collision faces.

Collision Types

Entity

Cycle between displaying collision for the room, platforms, objects, or all three.

col-3

When coloring by entity type, room collision is yellow, platform collision is teal, and object collision is magenta.

Terrain

Cycle between displaying all terrain or only terrain of each type: metal, orange holo, green holo, blue holo, ice, snow, sand, rock, lava, acid, Gorea, unknown.

col-4 col-5

When coloring by terrain type, metal is gray, orange holo is orange, green holo is green, blue holo is blue, ice is light blue, snow is white, sand is yellow, rock is brown, lava is salmon, acid is pink, and Gorea is purple. The unknown 12th terrain type is never used in game.

Interaction

Cycle between displaying collision which interacts with anything, players, beams, or both.

col-6

When coloring by entity interaction, collision that interacts only with players is yellow, collision that interacts only with beams is green, and collision that interacts with both is purple.

Selection

Enter selection mode with M and use + or - to cycle through items. Information about the current selection will be printed to the console. The camera position can also be displayed while in selection mode by enabling it with Alt+C. Otherwise, this feature is off by default to prevent excessive flickering in the console window as the camera moves.

See Viewer Controls for a full list of the available commands.

Entity Selection

sel-1 sel-2

The first level of selection operates on entities. The first selection will always be the room (if any), followed by each entity in the order they were loaded. Selected entities will be highlighted in white. When an entity is selected, it can be manipulated by holding Alt and pressing the same keys used to move the camera.

Pressing 0 will toggle the entity's visibility. Pressing Alt+0 will toggle the entity's active state; some entities may have gameplay logic controlled by this state. For example, activating a camera sequence entity will cause its associated cutscene to begin.

sel-9

Press X to move the camera position to the selected entity's position. If an entity has a parent entity, that entity will be highlighted in red; if it has a child entity, that entity will be highlighted in blue. Press Ctrl+X to look at the parent entity if any, and press Ctrl+Shift+X to look at the child entity if any.

Note that in order to select invisible entities, invisible entity display must be toggled on.

Model Selection

sel-3 sel-4

When an entity is selected, press M to move one step down the selection hierarchy to the first model of the entity (a single entity can have one or more models). Selected models will be highlighted in pale yellow.

Node Selection

sel-5 sel-6

When a model is selected, press M to advance the selection hierarchy to the first node of the model. Selecting a node will highlight all the meshes belonging to that node in pale green.

Mesh Selection

sel-7 sel-8

When a mesh is selected, press M to advance the selection hierarchy to the first mesh belonging to the node. Selected meshes will be highlighted in pale pink.

Miscellaneous

Room Node Transforms

Room nodes can have transform values in the model file, but these values are not applied in game. Consequently, a few room nodes appear out of place, presumably due to their transform not being baked into the display list by mistake. N can be used to toggle room node transforms to see where the nodes were likely intended to appear.

room-1 room-2
This location is missing the geometry for some ice crystals. They appear underneath the map instead.

room-3 room-4
Collision for the ice is always present. With room node transforms toggled on, the geometry appears where the collision is.

Showing All Room Nodes

node-1 node-2

Normally, rooms are drawn by starting from a few specific root nodes -- partial room nodes and portal nodes -- and rendering down the tree from there. This leaves some nodes in the room models out of the drawing process altogether. These nodes, never visible in game, can be enabled with Alt+N.

Clone this wiki locally