Startup arguments and init.txt

Halo Custom Edition's and Standalone's startup can be customized through the combination of arguments and console scripting. Using these options allows you to quickly configure Halo for various testing or server hosting scenarios.

init.txt

Both Standalone and Custom Edition will automatically load the file init.txt if present and run all lines within it as console commands at startup. They will also be present in the console history. Create the file in your mod tools/HEK root. It supports comments with ; and can include empty lines. Example contents are:

; set the "ting" hit noise to full volume
multiplayer_hit_sound_volume 1
; launch directly into a map (custom edition)
map_name a30 ; SP map
sv_map bloodgulch slayer ; MP map
; launch directly into a map (standalone)
game_variant slayer ; if MP
map_name levels\test\bloodgulch\bloodgulch ; tag path to scenario

Similarly, Sapien loads editor_init.txt. If using the OpenSauce mod, use the file name initc.txt instead. The game can load a different file with the -exec <filename> argument.

Arguments

Halo accepts command line/shortcut arguments to customize how the game launches and what features are enabled. From a terminal or Windows command prompt, such arguments are provided after the executable name, e.g. haloce.exe -screenshot to run the game with screenshot mode enabled. These arguments can also be added in Windows by editing a shortcut to the Halo executable.

With H1CE many of these settings can be configured in-game, so it is not usually necessary to provide them as arguments. However, -vidmode is useful for the H1A standalone build which cannot be configured in-game.

How to add arguments to a shortcut (Windows)

Windows users looking to avoid having to use the command prompt can create a shortcut to halo.exe, haloce.exe, or haloceded.exe and edit it's target to provide these arguments. Be sure to place them after the EXE, and separate each argument with spaces:

Dialog box showing how to add arguments to a Windows shortcut

Arguments list

The following is a comprehensive list of arguments. Not all are not documented in Halo's Readme.rtf or -help output. Many arguments below are not applicable to the H1A standalone build which does not include a fixed function rendering pipeline or networking.

Graphics options

ArgumentDescription
-adapter xForces the game to run fullscreen on a multi-monitor adaptor.
-refresh rSets the refresh rate.
-use00An even simpler graphics mode than -useff, disabling shader detail maps.
-use11Forces the game to run as a shader 1.1 card. Additionally degrades visual quality by disabling model self-illumination, "animated lightmaps" (dynamic lights?), per-pixel fog, and specular lighting.
-use14Forces the game to run as a shader 1.4 card. Disables bumped mirrored surfaces and some video effects become two-pass.
-use20Forces the game to run as a shader 2.0 card. This is the intended shader version with all graphical features enabled. You probably won't need to specify this manually unless the game is having difficulty detecting your graphics card type.
-use2aSimilar to -use20
-useffForces the game to run as a fixed function card. This is the most basic feature set, further disabling shadows, refractive camouflage, and lens flares, with very basic fog, water, and lighting. This may improve performance on resource-constrained systems, but at great cost to visual quality.
-vidmode w,h,r or -vidmode w,hForces the game to run at a given width, height, refresh rate. If refresh rate is not provided, or is provided with a value of 0, the refresh rate is assumed to be 60. The use of -vidmode forces V-Sync, but this can be disabled again by saving video settings with "No V-Sync" ingame.
-width640Forces the game to run at 640x480.
-window or -windowedRuns the game in a window.

Connection options

ArgumentDescription
-connect ip:portThe game will automatically connect to the given server after loading.
-cport xClient port address used when joining games. Defaults to 2303. If the port is set to 0, the game will use random client ports. See the Network Setup settings under the In-Game Settings section.
-ip x.x.x.xServer IP address used when you have multiple IP addresses (e.g. multiple network interfaces in your machine). Behind NAT, this should refer to the private IP configured for port forwarding.
-passwordThe password for the server we're trying to connect to. Not to be confused with the sv_password command for dedicated servers, which goes in the file executed by the -exec argument.
-port xServer port address used when hosting games. Defaults to 2302. See the Network Setup settings under the In-Game Settings section.

Other

ArgumentDescription
-? or -helpDisplays a list of most arguments. Will fail if using a modified strings.dll, e.g. with the Chimera mod
-consoleEnables the developer console, which can be opened with the ~ (tilde) key. This console can be used to enter Halo script commands. Most client mods like HAC2 and Chimera enable this automatically.
-devmodeEnables developer mode commands (Custom Edition only). This also prevents Internet gameplay when mods are not used. Most client mods like HAC2 and Chimera enable this mode automatically.
-exec example.txtCauses the game or dedicated server to run the file of console commands on startup.
-name <name>Sets the name of the player profile.
-nogammaDisables adjustment of gamma. The in-game gamma slider will not affect the brightness of the game if this switch is used.
-nojoystickDisables joystick/gamepads.
-nonetworkDisables the Multiplayer menu item in the main menu. With a modified ui.map which adds a Campaign menu, this setting will actually disable that menu item instead.
-nosoundDisables all sound.
-novideoDisables the .bik videos which play at game startup (retail). This option can also prevent Custom Edition crashes when using the Mesa graphics driver. The mod Chimera sets this option automatically.
-nowindowskey or -nowinkeyPrevents the Windows key from opening the start menu and minimizing the game.
-path <path>Sets the path for which Halo looks for profiles and gametypes, normally %USERPROFILE%\Documents\My Games\Halo[ CE]. Chimera users can also set this in chimera.ini.
-safemodeDisables as much as possible from the game in case you're experiencing crashes.
-screenshot or -screenshotsEnables the "Print Screen" key to generate TGA format screenshots in Halo's screenshots directory.
-timedemoA benchmarking mode which runs sped-up intro cinematics of several hard-coded maps (ui, a30, b30, c10, and d20) and appends benchmarking output to the file timedemo.txt in Halo's directory. Replacing the stock maps with custom maps works as well. The duration of -timedemo is affected by the framerate.

Vestigal and unknown arguments

These additional arguments are found in game executable, but seem to have no effect. They were likely used during the game's development but were removed for its final release.

ArgumentDescription
-checkfpuWas possibly used to debug the machine's floating point unit (FPU).
-noSSEMay have been used to disable certain branches of code with SIMD instructions. Unknown if this has any effect now.
-testcrashBring up a crash dialog? No effect.
-usefxfileLoad shaders from DirectX .fx files. Pre-release versions of Halo PC contain .fx files in a SHADERS\FX folder. Does not work in release versions.
-userefInitializes D3D device type as the reference software implementation (development only)

Appendix: timedemo output

The -timedemo argument produces a file timedemo.txt in Halo's root directory. An example can be seen below:

Date / Time: 4/15/2020 12:00:35 AM (84994718ms)
2700MHz, 1024MB, 512M ATI Unknown (DeviceID=0x9874) Driver=22.19.180.513 Shader=3.0
C:\Program Files (x86)\Microsoft Games\Halo Custom Edition\haloce.exe -timedemo   (Version=1.0.10.621)
Frames=4700
Total Time=114.21s
Average frame rate=41.15fps
Below  5fps= 15% (time)  0% (frames) (17.200s spent in 15 frames)
Below 10fps= 15% (time)  0% (frames)
Below 15fps= 16% (time)  0% (frames)
Below 20fps= 20% (time)  2% (frames)
Below 25fps= 28% (time)  6% (frames)
Below 30fps= 30% (time)  7% (frames)
Below 40fps= 34% (time)  12% (frames)
Below 50fps= 49% (time)  27% (frames)
Below 60fps= 82% (time)  71% (frames)
###Sound Options###
Hardware Acceleration= No
Sound Quality= Normal
Environmental Sound= No
Sound Variety= High
###Video Options###
Resolution= 1280 x 720
Refresh rate= 60 Hz
Framerate throttle= No Vsync
Specular= Yes
Shadows= Yes
Decals= Yes
Particles= Off
Texture Quality= High

For further information, please visit the timedemo FAQ at: http://halo.bungie.net/site/halo/features/hpcperformancefaq.html

Note: Each time -timedemo is run, the output is appended to the output file, meaning any previous content is not overwritten. The output says Particles= Off even if your particles setting is otherwise High, suggesting some of these options are hardcoded. The Bungie FAQ link is now a 404 page.

Acknowledgements

Thanks to the following individuals for their research or contributions to this topic:

  • nToss (Information on timedemo and vidmode)