Development mode

From SRB2 Wiki
Jump to: navigation, search
A screenshot of devmode 4095, the full version of development mode.

Development mode (commonly referred to as devmode, after the console command that activates it) is a special mode, exclusive to Single Player, used for testing and development of levels in SRB2. It prints debug information into the console and displays many internal attributes of the game on the HUD. Additionally, it allows skin and color changes in Single Player and unlocks several console commands and variables that would be considered cheating in a regular game, such as setting the player's lives or changing the character's abilities. Because of this, enabling development mode activates the cheat protection, disallowing any secrets to be unlocked for the rest of the SRB2 session. Development mode cannot be activated in netgames.

Feature flags

Development mode's features are split into twelve parts. Each part has its own set of debug messages and/or HUD attributes for debugging a particular feature or component of the game, and is enabled by toggling on the corresponding flag. The values of multiple flags can be added together for a particular combination of features. Either the decimal or hexadecimal values can be used with the devmode command – e.g. devmode 4095 (or devmode 0xFFF) will turn all of development mode's features on, and devmode 0 will turn all of them off.

Decimal Hexadecimal Flag name Description
1 0x01 Basic Displays basic information on the HUD, such as the player's map coordinates and angle.
2 0x02 Detailed Displays more detailed information on the HUD, such as the player's X/Y/Z momentum, scale and ceiling/floor Z heights.
4 0x04 Randomizer Displays information for random seeds on the HUD.
8 0x08 Render Prints rendering-related debugging messages into the console.
16 0x10 NiGHTS Basic Displays basic information for NiGHTS mode on the HUD, such as timers for power-ups, links and bumpers, amount left in the drill meter, and displaying milliseconds as well as seconds for the time left as NiGHTS. Also prints messages into the console signaling when the Ideya Drone displays the "GOAL" sign or not.
32 0x20 NiGHTS When playing as NiGHTS Super Sonic, axis transfers are displayed in-game as a rail ring sparkle trail stretching outwards from the point of the axis transfer and at the height of the player. When the player is transferred to another axis, "TRANSFER!" is displayed in the center of the screen. Also prints information on mares, axes and axis transfers into the console.
64 0x40 PolyObj Prints PolyObject-related debugging messages into the console.
128 0x80 Gamelogic Prints miscellaneous debugging messages related to game logic into the console. This includes messages relating to actions.
256 0x100 Netplay Prints netplay-related debugging messages into the console.
512 0x200 Memory Prints memory-related debugging messages into the console. Also displays the amount of heap memory used on the HUD.
1024 0x400 Setup Prints setup/initialization-related debugging messages into the console. This includes information for level-loading, loading files into the game, loading ghosts for Record Attack, MD5 computing, etc.
2048 0x800 Lua Prints Lua-related debugging messages into the console.

Console commands requiring development mode

A number of console commands/variables require development mode to be enabled to function, because they modify gameplay in a way that could be considered cheating. Due to this, they cannot be used in netgames (with the exception of ringslinger). These commands/variables include:

Commands

Variables

* If Pandora's Box has been unlocked, these console commands/variables will be available regardless of whether development mode is turned on or not.

Attributes

When some of development mode's feature flags are turned on, the values of certain game attributes are displayed on the HUD. This section lists the attributes displayed by enabling particular flags.

Basic

  • X: Shows the X-axis position in fracunits of the player on the map.
  • Y: Shows the Y-axis position in fracunits of the player on the map.
  • Z: Shows the Z-axis position (height) in fracunits of the player on the map.
  • A: Shows the yaw angle that the player is facing on the map in degrees, going counter-clockwise relative to East (0). It does not translate the same way as hoops.

Detailed

  • SHIELD: Shows the current value of pw_shield for the player, in hexadecimal form:
Value (Hex) Shield/other details
0 No shield
1 Whirlwind Shield
2 Attraction Shield
3 Elemental Shield
4 Armageddon Shield
5-7 Unimplemented S3&K Shields
8 Pity Shield
100 Fire Flower power-up (value can be combined with values for all other shields including Force)
200 - 2FF Force Shield (200 + no. of extra hits before losing shield; 200 = 1 hit left, 2FF = 256 hits left)
  • SCALE: Shows the player's current scale as a percentage of the normal scale (normal scale is 100%, small scales are < 100%, and large scales are > 100%).
  • DASH: Shows the player's spindashing speed as a fraction of the player character's maxdash value, displayed as such: dashspeed/maxdash
  • AIR: Shows both underwater and space countdown timers (pw_underwater and pw_spacetime), showing how many tics the player has left to survive before drowning/suffocating. When the player is neither underwater or in space, they will both be 0. These are displayed as such: underwater, spacetime
  • FLAGS: Shows which of the player's flags are currently turned on. Four such flags are shown here, represented by four pieces of colored text that turn green when on and red when off:
    • JM is for whether the player is holding the jump button or not.
    • JD is for whether the player is currently in a "jumping" state at all.
    • SP is for whether the player is spinning or not.
    • ST is for whether the player is charging up a spindash or not.
  • CEILZ: Shows the ceiling height in fracunits of the lowest tangible ceiling above the player's head.
  • FLOORZ: Shows the floor height in fracunits of the highest tangible floor below the player's feet.
  • CNVX: Shows the X-axis momentum of the player produced by a conveyor belt or wind/current.
  • CNVY: Shows the Y-axis momentum of the player produced by a conveyor belt or wind/current.
  • PLTZ: Shows the Z-axis momentum of the player produced by a moving platform the player is standing on.
  • MOMX: Shows the X-axis momentum of the player not from a conveyor belt or wind/current.
  • MOMY: Shows the Y-axis momentum of the player not from a conveyor belt or wind/current.
  • MOMZ: Shows the Z-axis momentum of the player.
  • SPEED: Shows the combined X-axis and Y-axis momentum of the player.

Randomiser

  • Init: Shows the initial random seed value, in hexadecimal form.
  • Seed: Shows the current random seed value, in hexadecimal form.
  • ==: Shows the next P_RandomFixed output value, converted to a decimal number between 0 and 1, that would be given with the current random seed value.

Memory

  • Heap used: Shows the total heap memory used, in KB.

Automap

A screenshot of GFZ1's automap.

Pressing the Tab key while in development mode will show the automap, which is a map of the level as viewed from above. This feature is retained from Doom, where it was a regular game feature that could be used in normal gameplay. However, since SRB2's map layouts are largely straightforward and exploration is rewarded with hidden items, the automap feature can only be activated via development mode. Unlike in Doom, the full map is shown even if the player has not visited certain areas yet.

Keep in mind that the automap will not work in any significantly large map, which includes several of SRB2's official stages.

Key

The automap displays Objects and linedefs in the map in a variety of colors to highlight what they are exactly:

Map items Displayed as
Objects
  • Normal: Green triangles
  • Player: Green triangle with a white arrow
One-sided linedefs
  • Normal: Dark Red lines
  • Not Climbable: Dark Lavender lines
Two-sided linedefs
  • Normal: Grey lines
  • Not Climbable: Steel Blue lines
Two-sided linedefs
w/ differing ceiling heights
  • Normal: Yellow lines
  • Not Climbable: Zim lines
Two-sided linedefs
w/ differing floor heights
  • Normal: Brown lines
  • Not Climbable: Beige lines
"Thok barrier" linedefs
(two-sided linedefs w/ height 0 on one side)
  • Normal: Red lines
  • Not Climbable: Lavender lines

Controls

Several keys perform actions inside the automap:

Key Action
Tab Toggles on/off the automap: if in normal view, start up the automap; if not, exit the automap and return to normal view.
Arrow keys If follow mode is off, these can be used to move the portion of the map viewed with the automap. Otherwise, these do nothing.
F Toggles follow mode, which is enabled by default. If follow mode is on, the map is centered on the player and moves with them; if it is off, the arrow keys can be used to move the portion of the map viewed with the automap separately from the player itself, though this doesn't necessarily stop the player from moving.
G Toggles grid lines.
= Zooms in.
- Zooms out.
0 Toggles between the current zoom level being used and the maximum limit for zooming out.

If one of these keys has also been mapped to a gameplay function (e.g., running or jumping), the above table overrides that key's default behavior during automap mode. All other keys can be used as normal, however.

NiGHTS development mode

A screenshot of NiGHTS development mode.

As NiGHTS Super Sonic, development mode (with the "NiGHTS" flag set) illustrates the behavior of transferring Axes. It displays the Axis Transfers as the game interprets them, a wall starting at the center of the Axis that Super Sonic breaks off, and stretching infinitely through the point of the relevant Axis Transfer. Crossing the wall registers the Axis Transfer. Transferring Axes will cause "TRANSFER!" to be displayed in the center of the screen as well. The player actually gets hurt by the visual cue of the wall created by development mode, so it is recommended to activate God mode in this situation.