Halo'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.
If this file is placed in Halo's installation directory, the game will execute all lines as console commands at startup. The game can be told to use another file with the
-exec argument. Example contents are:
;set the "ting" hit noise to full volume
;clear console output so the result of above is not shown
;launch directly into a map
sv_map bloodgulch slayer
Similarly, Sapien loads
If using the OpenSauce mod, use the file name
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.
Windows users looking to avoid having to use the command prompt can create a shortcut to
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:
The following is a comprehensive list of arguments. Not all are not documented in Halo's
-help output. Many arguments below are not applicable to the H1A standalone build which does not include a fixed function rendering pipeline or networking.
|Forces the game to run fullscreen on a multi-monitor adaptor.
|Sets the refresh rate.
|An even simpler graphics mode than
-useff, disabling shader detail maps.
|Forces 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.
|Forces the game to run as a shader 1.4 card. Disables bumped mirrored surfaces and some video effects become two-pass.
|Forces 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.
|Forces 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
|Forces 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.
|Forces the game to run at 640x480.
|Runs the game in a window.
|The game will automatically connect to the given server after loading.
|Client 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.
|Server 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.
|The 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
|Server port address used when hosting games. Defaults to 2302. See the Network Setup settings under the In-Game Settings section.
|Displays a list of most arguments. Will fail if using a modified
strings.dll, e.g. with the Chimera mod
|Enables the developer console, which can be opened with the ~ (tilde) key. This console can be used to enter Halo script commands and is similar to Sapien's console, though many Sapien-related commands have no effect. Note that most client mods like HAC2 and Chimera enable this automatically.
|Enables 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.
|Causes the game or dedicated server to run the file of console commands on startup.
|Sets the name of the player profile.
|Disables adjustment of gamma. The in-game gamma slider will not affect the brightness of the game if this switch is used.
|Disables 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.
|Disables all sound.
.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.
|Prevents the Windows key from opening the start menu and minimizing the game.
|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
|Disables as much as possible from the game in case you're experiencing crashes.
|Enables the "Print Screen" key to generate TGA format screenshots in Halo's
|A benchmarking mode which runs sped-up intro cinematics of several hard-coded maps (
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.
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.
|Was possibly used to debug the machine's floating point unit (FPU).
|May have been used to disable certain branches of code with SIMD instructions. Unknown if this has any effect now.
|Bring up a crash dialog? No effect.
|Load 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.
|Initializes D3D device type as the reference software implementation (development only)
-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=220.127.116.113 Shader=3.0
C:\Program Files (x86)\Microsoft Games\Halo Custom Edition\haloce.exe -timedemo (Version=18.104.22.1681)
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)
Hardware Acceleration= No
Sound Quality= Normal
Environmental Sound= No
Sound Variety= High
Resolution= 1280 x 720
Refresh rate= 60 Hz
Framerate throttle= No Vsync
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.
Thanks to the following individuals for their research or contributions to this topic:
- nToss (Information on timedemo and vidmode)