Developer Mode

Developer Mode is a bundle of features created by Bungie West to help them develop Oni: a console line for entering scripting commands, manual camera controls, and various debugging features. It was traditionally activated with the cheat code thedayismine, but see "Unlocking it" and "Activating it" below before trying the code.
Despite being hinted at by a crate texture (right) and appearing on a leaked list of cheat codes during beta testing, this cheat code did not work upon Oni's release, and it was long believed that Developer Mode had been cut from retail versions of Oni. However, Dev Mode is actually present in all available versions of Oni. It just needed to be unlocked, as the community learned back in 2006.
Below you will find download links, unlocking instructions, and finally an overview of the Developer Mode's features. For Dev Mode features lurking in the PS2 version of Oni, first discovered in 2017, see Oni (PlayStation 2).
Unlocking it
...by downloading a patch
Windows: You can install the Daodan DLL to unlock Developer Mode; note that the Anniversary Edition installs the Daodan DLL automatically.
Mac: The Intel build of Oni already has Dev Mode unlocked; note that the Anniversary Edition installs the Intel build automatically.
...by doing it yourself
Activating it
Unlock cheats
Even once Developer Mode is unlocked, it must be activated in-game through a cheat code. Cheats are normally disabled until you finish the full version of the game, but cheats are enabled all the time when the Daodan DLL is installed in Windows or when using the Mac Intel build.
Enter the cheat code
Enter the Data Comlink (default key F1) and look for a confirmation message after typing the Developer Mode cheat thedayismine (or killmequick if you followed the DIY tutorial above). You can also just type x when the Daodan DLL or Mac Intel build is being used.
Using the console
~ ` |
§ ½ |
° ^ |
2 |
U.S. QWERTY |
Danish QWERTY |
German QWERTZ |
French AZERTY |
By default, Oni auto-binds the "console" toggle to the key to the left of the numeric row. On U.S. QWERTY keyboards, this is the key with a grave accent, `, in the lowercase position and a tilde, ~, in the uppercase position. It is usually called the "tilde key" by users even though it's really the "grave accent key".
On non-U.S. keyboards, that key may not be present. The default key for your layout is depicted to the right:
- Danish QWERTY: The ½ key to the left of the numeric row.
- German QWERTZ: The circumflex accent key, ^.
- French AZERTY: The 2 key to the left of the numeric row.
Or you can simply add a line like "bind z to console" to key_config.txt in your Oni folder and you'll be able to open the console with that key. In some cases, this bound key will not close the console, but pressing the grave accent key will, oddly enough.
Console output glitch
When Developer Mode is active, Oni prints debug messages about in-game events along the bottom-left of the screen. Past messages scroll up the screen and fade. In some situations, messages don't fade (e.g. if character debugging is enabled or you are currently using the console line).
The easiest way to check whether console output works at all is to press F8: the character class change is acknowledged with a console message.
If you don't see anything, console output is broken in your version of Oni. The old WinXP patch (no longer offered because it is superseded by the Daodan DLL) was known to disable console output. In Windows demo Oni, both console output and console input are invisible (i.e. you can enter script commands, but you're "blindfolded").
Features
Many of the features listed below no longer work as intended, either due to changes made to the code before shipping Oni or due to the absence in retail Oni of developer resources that the features were intended to call upon, such as level0_Tools. Nevertheless, some of these features are helpful for modders, most notably the camera controls and dev console.
Hotkeys
Below are Oni's hardcoded mappings for Developer Mode functions. The Alt key (Option key on Macs) can be used in place of Ctrl. Ctrl is called "Strg" on German keyboards.
The "U.S. QWERTY" column gives the standard hotkeys (the keys intended by the American developers to be pressed). In the "German QWERTZ" and "French AZERTY" columns, the hotkeys differing from U.S. QWERTY are shown. If you have another type of keyboard that you would like to have incorporated into the table, feel free to add a column (or ask for it on the talk page).
If a hotkey's functionality is not present in vanilla Oni but has been restored in Windows using the Daodan DLL or on the Mac via the Feral Intel build, it will be signified with a green checkmark. Stuff that doesn't work has been grouped at the end of the table.
(1) This dev feature does not fully function in Windows, so the only non-occluding quads that disappear are console screens.
(2) This dev feature does not fully function in Windows, so the non-sound-occluding quads remain visible. However, the second aspect of this feature, which marks furniture with a red texture to indicate that it is partially sound-occluding, still works.
(3) On Macs, Draw Every Frame Mode speeds up the game almost to the extent of Fast Mode, but with glitchy animations.
(4) Please see Talk:Developer Mode § Insert key on Macs.
(5) The profiler is an external library that may be placed next to Oni.exe: vtuneapi.dll in Windows, Metrowerks' Profiler Carbon.lib on Classic Macs.
(6) "Animation freezing" operates upon the main character and means two things:
- a) The character's position and pose remain exactly the same as they were at the time of freezing, along with collision shapes (spheres and body parts) and other stuff.
- b) The actual character, unless "pinned" with chr_pin_character=1, will keep moving with the same velocity as at the time of freezing.
- For regular (grounded) animations, the vertical velocity is zero and the horizontal velocity is determined by the animation frame that was playing at the time of freezing.
- If airborne (jumping or falling), the current airborne velocity (both vertical and horizontal) at the time of freezing is maintained.
- Wall collision is disabled, as well as gravity acceleration and the "in-air" timer (so you can't die from falling for too long while frozen).
- Floor collision still works, as well as the "off" timer that starts when you step off a ledge, and the downward velocity that is applied then (see ONCC for details on this downward velocity).
- If one sets chr_pin_character=1, then animation debugging works exactly as intended: there is no drifting, and one can conveniently advance through the frames of the current animation.
- If one does not set chr_pin_character=1, then the frame-freezing functionality does not allow one to study animations, and instead provides a powerful (and risky) teleporting gimmick.
(7) The bindings for Secret X/Y conflict with the Ctrl+Shift+Y binding for the performance display, but this doesn't matter because the Secret X/Y/Z keys are either not implemented in Oni or were removed during development.
Camera controls
Note that the camera controls have default mappings, given below, but unlike the developer hotkeys, they are custom-bindable. In fact, on Macs, the default numpad bindings need to be customized or they won't work at all. See note HERE about how to bind these keys and fix the Mac numpad controls. Also, the definitions of panning left and right are reversed, as NumPad4 will turn the camera to the left, but its action is called "man_cam_pan_right", and vice versa for NumPad6....
After detaching the camera with Enter and flying it away from Konoko, the End key teleports Konoko to the camera position and attaches the camera to her position again. If you turn off collision with "chr_nocollision 0 1" before teleporting, Konoko will not fall out of the air when teleported to the camera position (just don't jump with collision off...).
Windows
|
Mac
|
Runtime scripting
Almost anything that you can write in a BSL script you can enter at runtime with the console. One major thing you can't do is register new variables and functions. You can only call existing functions and get/set the values of existing variables. "Existing" means either built-in ones (see BSL:Functions and BSL:Variables), or ones found in the level scripts, or ones defined by scripts you may have added to the current level or to IGMD/global. You can also run an external file of BSL commands by entering "+" and then the path to a file (relative or absolute).
While typing on the console line, you'll see a suggested autocompletion for the command you're typing; Tab accepts the autocomplete, and then Tab or Shift-Tab will cycle forward/backward through adjacent commands in ASCIIbetical order (A…Z comes before a…z). Previous commands from the current session can be retrieved with the up/down arrows. You can't insert/delete text in the middle of a command; you have to use Backspace. Copy and Paste are not available either.
If you press an illegal key during console input (such as F1), the input display will freeze; hit Tab a few times to fix.
Cheating
There are a few commands which you can type in as equivalents to regular cheat codes, and more that you can't do with cheats:
- "chr_nocollision 0 1" and "chr_nocollision 0 0" enable/disable no-clip, allowing you to walk through walls. When in no-clip mode, you can't fall; thus, jumping makes you flail in midair, and eventually you die (so try not to jump).
- "give_powerup shield" gives you a force shield (which you can't get with fatloot).
- See Cheats for the BSL equivalents to various other cheats.