Options.ini¶
Read at startup. Most can also be changed in game under Options > Game Options and apply on
Accept. NewRadar and BlipSize need a restart.
Camera¶
UseCustomMaxCameraHeight = NoYesletsMaxCameraHeightreplaceGameData.ini's value, 670 in Contra. AlsoMax Camera Heightin Options.MaxCameraHeight = 670210 to 1000. Single player, skirmish and campaign. Multiplayer uses the host's limit, orGameData.ini's.
Display¶
HealthBarDisplayMode = ClassicClassic|Damaged|Always.Damagedshows bars only on hurt objects,Alwayson everything.AlliedDecalMode = HouseHidden|House|Army. Shows allies' general power decals once fired, tinted in player colour (House) or faction colour (Army).Hiddenis retail. Enemy decals stay hidden. NeedsComboBoxAlliedDecalsandAlliedDecalsLabelinOptionsMenu.wndfor the menu control.NumericalHealth = NoYes prints hit points beside the health bar, wherever a bar shows.SelectionCircle = NoYes draws a green ring under selected objects. The D3D9 build draws a hexagon fitted to the object's collision shape with a shader instead, on cards withps_2_a.DefensesRangeCircle = NoYes shows an armed structure's widest attack range, upgrades included, while placing it. Wall pieces get one ring each. The D3D9 build draws the ring with the same shader asSelectionCircle, on cards withps_2_a.ObjectDecals = YesNo hides ground decals requested withDisplayDecal. Independent of shadow settings.SmartPips = NoYes keeps ammo and passenger pips visible on own units whenever there is something to show.BuildTimerDisplayMode = NoneNone|Seconds|Auto. Countdowns on build queue and special power cameos.Autoswitches to MM:SS past a minute.NewRadar = NoYes gives an RA3 style radar: outlined blips, larger structures, dark waterline, two-tone ground, 256x256 grid.BlipSize = LargeSmall|Large.Smallis 3/5 px unit/structure,Large5/7. Only withNewRadar.BorderlessWindow = NoYes runs a frameless centred window at the selected resolution. Also the Borderless checkbox beside Resolution.-winstill gives a captioned window.Windowed = NoYes runs a movable window with a title bar at the selected resolution, like-win. Also the Windowed checkbox beside Borderless; checking one clears the other.-winstill forces it on. NeedsCheckWindowedinOptionsMenu.wndfor the menu control.
Notes
- A blue bar under a building's health bar shows production progress; on supply gatherers it shows
cargo. Own objects, when selected or moused over, or always with
HealthBarDisplayMode = Always. DamagedandAlwaysbars andSmartPipshide while a script letterboxes the screen, as campaign cinematics do.NewRadarcannot hide roads, since they are painted into the terrain textures. Bridges still draw.SelectionCircleandDefensesRangeCircleneed a mod-sidePlainRingSelection.tga(white or greyscale ring with alpha).DisplayDecalneeds the.tganamed byDecalTexture; there is no default.- The
DefensesRangeCirclecheckbox needsCheckDefensesRangeCircleinOptionsMenu.wnd.
Hotkey overlay¶
Draws each cameo's hotkey letter on the cameo.
KeyboardOverlay = NoYes shows the letters.KeyboardOverlayRed = 255Letter colour, 0-255 per channel.KeyboardOverlayGreen = 255KeyboardOverlayBlue = 255KeyboardOverlayBackdrop = YesDraw a translucent plate behind the letter.KeyboardOverlayBackdropRed = 0Backdrop colour, 0-255 per channel.KeyboardOverlayBackdropGreen = 0KeyboardOverlayBackdropBlue = 0KeyboardOverlayBackdropOpacity = 1280-255; 128 is 50%.
Shows the hotkey actually registered, so a dropped duplicate is not advertised.
Grid hotkeys¶
Keys each cameo by its slot in the command bar instead of its ampersand letter, so keys stay put.
GridHotkeys = NoYes keys cameos by slot position.GridHotkeyLayout = QWERTYUIOASDFGHJKLOne key per slot, in reading order.GridHotkeyColumns = 9Command bar width, needed to map the column-ordered slots to the row-ordered layout. 0 disables remapping.NonGridHotkeys =Keys to leave out of the grid, e.g.SGX. Separators are ignored, soSGX,S,G,XandS G Xare all the same.
An excluded slot falls back to its string file letter, or gets no hotkey if that letter is also a grid key.
Stop, Guard, Attack Move and Evacuate always keep their string file letter. A grid slot on the same key swaps with them and takes the unit order's grid key. Production buildings have no such buttons, so the whole grid works unchanged.
Reverse move hotkey¶
Caps Lock arms a reverse move for the whole selection; the next terrain click drives there in
reverse, like the REVERSE_MOVE button. Pressing Caps Lock again or arming attack move cancels it.
TOGGLE_REVERSEMOVEin CommandMap.ini rebinds it. The Caps Lock default only fills an empty slot.KEY_CAPSis a new CommandMap key name. The Caps Lock state still toggles.- The cursor uses a
MouseCursor ReverseMoveblock from Mouse.ini if present (e.g.Image = SCCMove,Texture = SCCMove), else the move cursor.
Needs a locomotor with CanMoveBackwards = Yes. ReverseMoveIgnoreAngleThreshold in GameData
decides whether goals in front are also reversed to.
Smart selection¶
A row of small cameos above the command bar: one per unit type with a count, or one per object for a single-type selection. Single-object cameos show health, ammo clip segments and veterancy. Up to 16 cameos; counts past 999 show no badge. Reskins share a cameo.
SmartSelection = YesNo hides the row and unbinds its keys.-
SmartSelectionUseMouse = YesYes keeps only a cameo's units on double click, No on Ctrl+Shift+click. -
Left click: show that type's (or object's) command set. The whole group stays selected; map orders go to everyone, bar commands go to the focused object or type. Plain orders (move, attack move, guard, stop, scatter, cheer, formation, waypoints, enter, dock, repair, heal) always go to everyone. A building placed from a focused dozer is built by it, with the other dozers helping.
- Right click the pushed-in cameo: back to the group's common commands. Right click another cameo: drop it from the selection.
- Double click (or Ctrl+Shift+click with
SmartSelectionUseMouse = No): keep only that cameo's units. - Tab and Shift+Tab (
SMART_SELECTION_NEXT_TYPE/SMART_SELECTION_PREV_TYPEin CommandMap.ini) step the focus through the row.
Command group row¶
A row on the command bar frame with one cameo per non-empty command group (1-9, then 0). Each shows the group's most common unit, its number and live member count. Shown whenever any group has members.
-
SmartCommandGroup = YesNo hides the row.SmartSelection = Nohides it too. -
Left click selects the group; double click also centres the camera on it.
Action lines¶
A faint line from each selected unit to where its order sends it, fading in from the unit and ending in a small dot. Units moving together share one line. Lines last as long as the order and follow a chased target.
-
ActionLines = OffOff|All|AttackOnly. Game Options > Action lines.AttackOnlydraws attack and attack move orders only. -
Green: move, enter, dock, repair. Pink: attack move. Red: attack. Blue: guard.
- No line draws to a target in fog or shroud.
- A waypoint path draws one line per leg. With
Allit replaces the white path shown while Alt is held. - Credit to olcayseygan, author of Generals Reforged.
Input¶
CastMode = NormalNormal|QuickCast|QuickCastWithIndicator.QuickCastfires a targeted ability at the cursor on the hotkey press.QuickCastWithIndicatoraims with a decal while held and fires on release.
Notes
- Superweapons, structure placement, rally points and beacons are excluded from quick cast.
- A cast pressed during cooldown is queued and fires when the ability is ready, never earlier.
- Shift+click queues five units. Shift+click a queue entry cancels all of that type; Shift+click a passenger cameo unloads all of that type.
Clipboard paste¶
Ctrl + V pastes into any text field: in game chat (Enter, Shift+Enter for allies), lobby chat,
names, and so on.
Notes
- Pastes obey the field's filters; hidden fields still show asterisks.
- Text is truncated to fit the field.
- A multi-line paste stops at the first line break.
Command line¶
-loadreplay <file>starts straight into a replay with menus and Options loaded.<file>is a name in the Replays folder or an absolute path. Unreadable replays or missing maps show a message box.-loadsave <file>also accepts an absolute path, and shows a message box on failure.
Rendering¶
TheSuperHackers' texture filter option replaced this fork's version in the August 2026 merge:
TextureFilter = BilinearNone|Point|Bilinear|Trilinear|Anisotropic. Also in the in-game options menu.AnisotropyLevel = 22|4|8|16. Only withTextureFilter = Anisotropic. Renamed from the pre-mergeAnisotropicLevel— update Options.ini by hand; the old key is silently ignored.
Notes
- An unknown
TextureFiltervalue falls back toNone, so typos are visible.AnisotropyLevelrounds down to a valid step. - The level is clamped to what the device supports.
- Fork fixes on top: settings survive a device reset (alt-tab, window toggle), and a driver that supports anisotropic for only min or mag filtering falls back to linear for the other.
- The terrain follows
Anisotropictoo, blend edges and the lower detail settings included, so distant ground stays sharp. It used to keep the mod's filtering. In the other modes the terrain still filters as the mod'sBilinearTerrainTexandTrilinearTerrainTexsay. - Roads follow
Anisotropicas well. Their mips blend smoothly even withTrilinearTerrainTex = No, and their bump maps stay sharp in the distance.
The terrain draws every texture a map uses from one atlas, with a border of copied pixels around each
texture so filtering at a texture's edge reads the texture and not its neighbour. Anisotropic filtering
reads further along the view than the original 4-texel border covers, so steep distant ground can pick
up a faint line of the next texture every few cells. The mod's GameData.ini sets the border:
TerrainAtlasBorder = 4Texels around each texture, rounded up to a multiple of 4, from 4 to 32. Cheat builds apply a change while a map runs.
A wider border keeps higher anisotropy clean but fits fewer textures. The atlas is at most 2048 texels square:
TerrainAtlasBorder |
Clean at the full-size mip | Clean at the next mip | 256-texel textures that fit |
|---|---|---|---|
| 4 (the original) | 8x | 4x | 49 |
| 8 | 16x | 8x | 36 |
| 12 | 16x | 8x | 25 |
| 16 | 16x | 16x | 25 |
| 32 | 16x | 16x | 16 |
A 512-texel texture takes the room of four 256-texel ones. A texture that does not fit draws wrong, and the render log names it, so a map with many large textures needs a smaller border.
Shadow mapping, specular, terrain glint, HQ sky cloud shadows, stochastic terrain, normal and glow maps, per-pixel lights, soft particles, flame and laser shading, per-map colour grading, planar mirrors and the other features that need the Direct3D 9 build are on Direct3D 9 Features.
Bloom¶
Soft glow around additive particles (fire, muzzle flashes, tracers, lasers, explosions) and Add
blended meshes such as building lights. Smoke and alpha blended effects do not glow. Needs no shader
support.
Bloom = NoYes turns the glow on. AlsoBloomon the Shaders page, applied on Accept.BloomStrength = 0.50 to 1. 0 is off. The box besideBloomon the Shaders page.BloomDebug = NoYes shows only the blurred glow buffer on black, to see what feeds it.Debug viewon the Shaders page.
Menu controls need CheckBloom, TextEntryBloomStrength and CheckBloomDebug in OptionsMenu.wnd;
build/move_bloom_to_shaders_wnd.py moves them onto the Shaders page and build/bloom_row_wnd.py
puts the strength box beside the checkbox.
Notes
- Costs fill rate in proportion to on-screen additive particles.
- Off while
AntiAliasingis above 1 on the Direct3D 8 build. The Direct3D 9 build glows with MSAA on too, and blurs through a pixel shader where the card has one. - Particles hidden behind terrain or buildings do not glow.
- Additive meshes on skinned models (infantry and other bone-deformed meshes) do not glow.
- Retail night models keep their lights in the opaque pass and add the lit skin on top. The game swaps the two passes at load, so the lights glow and the walls do not.
Vertical sync¶
VSync = YesWaits for the monitor's refresh before showing each frame, which stops tearing. No shows frames as soon as they are drawn. Without the key, vsync is on in fullscreen and off in a window, as before. AlsoVertical syncin the advanced display options, applied on Accept. NeedsCheckVSyncinOptionsMenu.wndfor the menu control.
Anti-aliasing¶
AntiAliasing = 0Multisample anti-aliasing: 0 off, 2, 4 or 8 samples. AlsoAnti-aliasingunder Detail in the options menu, applied on Accept without a restart; a sample count the card lacks falls back to off. NeedsAntiAliasingLabelinOptionsMenu.wndandComboBoxAntiAliasingnot hidden for the menu control. Ambient occlusion is off while it is on.
Low latency mode¶
LowLatency = NoYes lets the game prepare at most one frame ahead of the graphics card, instead of the driver's usual three, so the screen answers the mouse sooner. Can cost a little frame rate. AlsoLow latency modein the advanced display options, applied on Accept. NeedsCheckLowLatencyinOptionsMenu.wndfor the menu control. Direct3D 9 build only.
Smooth unit motion¶
The game logic runs 30 times a second. Above that frame rate, units, projectiles and turrets draw between their last two logic positions instead of jumping once per logic frame, so they move smoothly at 60, 144 Hz and up. Health bars, status icons, attached effects and the camera lock follow the drawn model. Only drawing changes; the simulation does not, so it cannot desync.
SmoothUnitMotion = YesNo draws units at their logic positions, as before. AlsoSmooth unit motionin the advanced display options, applied on Accept. NeedsCheckSmoothUnitMotioninOptionsMenu.wndfor the menu control.
Skirmish, campaign and replays run the logic at the game speed and render up to FramesPerSecondLimit
from GameData.ini. The skirmish game speed slider sets the logic rate, 30 being normal speed; the
campaign starts at 30. Mission scripts that set an FPS limit change the logic rate the same way, and
the main menu map always runs at 30. Setting the slider to -- leaves the game uncapped, with the
logic stepping once per drawn frame, so there is nothing to smooth.
Notes
- Units are drawn up to one logic frame (33 ms) behind the simulation.
- Single player, skirmish and replays only. Online and LAN games draw as before.
- Teleports, transport and tunnel exits, garrison exits and newly spawned objects snap into place.
- The environment variable
CONTRA_INTERPOLATION=0turns it off regardless of the option.
Model animations between keyframes¶
Model animations advance every drawn frame and blend between keyframes, independent of Smooth unit
motion. A bone that holds still and then jumps, such as a runway light stepping from bulb to bulb,
jumps instead of sliding along the runway.
Notes
- A step counts as a jump when it is at least 1 unit long and more than 4 times the steps before and after it, so loop restarts and bones hidden by moving them away jump too. Two such steps in a row count as one jump split over two frames.
- Applies to uncompressed animations; compressed ones mark their jumps in the file.
- Rotation still blends.
Laser ground glow¶
Each laser beam lights the terrain along its length with up to twelve dynamic lights in the beam's colour (house coloured when the laser asks). Terrain only; units, buildings and roads are not lit. The Direct3D 9 build lights it with a shader instead, see Laser ground glow.
LaserRef = NoYes turns the glow on. AlsoLasers light the groundon the Shaders page, applied on Accept. NeedsCheckLaserRefinOptionsMenu.wndfor the menu control.
Colour and intensity come from GameData.ini, overridable per W3DLaserDraw module with
GroundGlowColor and GroundGlowIntensity. A non-zero module value wins, then GameData.ini, then
the default:
LaserGroundGlowColor = R:0 G:0 B:0Light colour. Black derives it from the beam layers' colours weighted by width, times the laser texture's average colour, normalised to full brightness.LaserGroundGlowIntensity = 70%How strongly the colour is added to the ground.LaserGroundGlowRadius = 0How far the light reaches from the beam, in world units. 0 takes it from the beam, as below. AlsoGroundGlowRadiuson the module.
Notes
- Each light's reach is
GroundGlowRadiuson the module, elseLaserGroundGlowRadius, else the laser'sOuterBeamWidth, at least 15, plus a 6 unit soft edge. Long beams spread and dim their twelve lights. - The terrain takes up to 64 dynamic lights a frame, of all kinds.
- In the Direct3D 9 build, beams whose glows overlap light the ground together, so a spot several
lasers hit brightens modestly instead of compounding.
LaserGroundGlowOverlap = NoinGameData.inilights each beam on its own. See Laser ground glow.
Drag Selection¶
EasyMilitaryDrag¶
EasyMilitaryDrag = NoYes leaves builders out of a drag selection, so boxing over a base picks up the army without dragging workers along.
Builders are KINDOF_DOZER and KINDOF_IGNORES_SELECT_ALL, as for Select All.
KindOf = NOT_MILITARY marks any other unit as a builder for this option only. Select All still
picks it up.
Notes
- Ctrl while dragging selects only builders.
- A drag that would select only structures ignores the filter.