diff --git a/SourceCode/EngineChanges/command_line_arguments.md b/SourceCode/EngineChanges/command_line_arguments.md new file mode 100644 index 00000000..4d7b8d83 --- /dev/null +++ b/SourceCode/EngineChanges/command_line_arguments.md @@ -0,0 +1,41 @@ +# Added and Changed Command Line Arguments + +This page documents command-line arguments added or changed in TheSuperHackers engine source compared +with the retail source release. It does not repeat every retail command-line argument. + +## Added or Expanded Arguments + +| Argument | Value | Availability | Description | +| --- | --- | --- | --- | +| `-headless` | None | Release and debug builds | Runs the game without a window, graphics, input, or audio. Intended for replay simulation and can be combined with `-replay`. Also disables intro and sizzle playback. | +| `-replay` | Replay filename ending in `.rep` | Release and debug builds | Starts replay playback or simulation from the command line. The argument can be repeated, can include wildcards, and must refer to a file in the replay folder or one of its subfolders. It disables intro, sizzle, and shell-map startup and allows another game instance to already be running. | +| `-jobs` | Positive process count | Release and debug builds | Used with `-replay`. Runs replay simulations in separate processes, up to the supplied count at the same time. If omitted, replay simulations run sequentially in the same process. | +| `-noshaders` | None | Release and debug builds | Forces the low-feature GPU path by setting the chipset type used by the renderer. In the retail source this switch was exposed for Zero Hour; the current code exposes it for both Generals and Zero Hour. | +| `-forcefullviewport` | None | Release and debug builds | Forces full viewport mode by setting `ViewportHeightScale` to `1.0`. This supports Control Bar Pro style addons and mirrors the `GenTool/fullviewport.dat` integration. | + +Examples: + +```text +generals.exe -headless -replay "Last Replay.rep" +generals.exe -headless -replay "*.rep" -jobs 4 +generals.exe -forcefullviewport +``` + +## Changed Retail Arguments + +| Argument | Value | Current Behavior | +| --- | --- | --- | +| `-win` | None | Forces windowed startup. It is now parsed before the game window is created. | +| `-fullscreen` | None | Forces fullscreen startup. It is now parsed before the game window is created. | +| `-nologo` | None | Disables the startup logo and is now available in release builds. | +| `-noShellAnim` | None | Disables shell/window animations and is now available in release builds. | +| `-useWaveEditor` | None | Enables the water/wave editor mode and is now available from the non-debug engine-init argument table. | + +## CRC Replay Analysis + +| Argument | Value | Availability | Description | +| --- | --- | --- | --- | +| `-SaveDebugCRCPerFrame` | Output folder | Builds with `DEBUG_CRC` enabled | Stores CRC debug logging in a separate file for each frame. If the first CRC logging frame is unset, this sets it to `0`. The output folder is deleted and recreated for every started game. | + +`-SaveDebugCRCPerFrame` is intended for replay analysis and is commonly used with the existing CRC +debug arguments, for example `-ignoreAsserts -DebugCRCFromFrame 0 -LogObjectCRCs`. diff --git a/SourceCode/EngineChanges/debug_commands.md b/SourceCode/EngineChanges/debug_commands.md new file mode 100644 index 00000000..3ed46165 --- /dev/null +++ b/SourceCode/EngineChanges/debug_commands.md @@ -0,0 +1,42 @@ + + + +# Added and Changed Debug Commands + +This page lists debug commands whose player-facing availability, default binding, or behavior changed in +TheSuperHackers engine source compared with the EA retail source release. It does not repeat unchanged +debug commands from the [In-Game Debug Commands](ingame_debug_commands) page. + +Source-only debug commands with no current default binding are intentionally omitted. + +## New Commands + +| Command | Default Binding | Available In | Description | +| --- | --- | --- | --- | +| `DEMO_BEGIN_ADJUST_DEFAULTPITCH` | Ctrl+, | Generals and Zero Hour | Starts adjusting the default camera pitch. | +| `DEMO_END_ADJUST_DEFAULTPITCH` | Ctrl+, release | Generals and Zero Hour | Stops adjusting the default camera pitch. | + +## Newly Available in Generals + +These commands existed in the EA Zero Hour retail source, but not in the EA Generals retail source. The current +TheSuperHackers source exposes them for both Generals and Zero Hour. + +| Command | Default Binding | Description | +| --- | --- | --- | +| `DEMO_SHOW_AUDIO_LOCATIONS` | Shift+Alt+A | Toggles audio location markers. | +| `DEMO_TOGGLE_SUPPLY_CENTER_PLACEMENT` | Shift+Alt+Ctrl+S | Toggles supply-center placement logging/debugging. | +| `DEBUG_OBJECT_ID_PERFORMANCE` | Shift+Alt+Ctrl+Q | Runs ObjectID lookup performance tests. | +| `DEBUG_DRAWABLE_ID_PERFORMANCE` | Shift+Alt+Ctrl+A | Runs DrawableID lookup performance tests. | +| `DEBUG_SLEEPY_UPDATE_PERFORMANCE` | Shift+Alt+Ctrl+W | Reports the number of sleepy update modules. | + +## Changed Commands + +| Command | Default Binding | Changed Behavior | +| --- | --- | --- | +| `DEMO_REMOVE_PREREQ` | Alt+P | Retail toggled prerequisite checks for the local player only. The current source toggles the same state for every human player. In multiplayer, every client should apply the same state to avoid mismatches. | +| `DEMO_INSTANT_BUILD` | Alt+F | Retail toggled instant production for the local player only. The current source toggles the same state for every human player and ignores the command in multiplayer while any human player has production in progress. | +| `DEMO_FREE_BUILD` | Alt+B | Retail had the debug handler, but no default key binding. The current source generates a default binding and toggles zero-cost production for every human player. In multiplayer, every client should apply the same state to avoid mismatches. | +| `DEMO_GIVE_ALL_SCIENCES` | Shift+Alt+Ctrl+K | Retail granted all grantable sciences to the local player only. The current source grants them to every human player. In multiplayer, every client should run the command to avoid mismatches. | +| `DEMO_INSTANT_QUIT` | Alt+F4 or window close | Retail Generals closed directly from the window-close path, while retail Zero Hour routed close through this message. The current source routes close/end-session through `DEMO_INSTANT_QUIT` in both games and uses the current game quit flow. | + + diff --git a/SourceCode/EngineChanges/engine_changes.md b/SourceCode/EngineChanges/engine_changes.md new file mode 100644 index 00000000..4d8380ea --- /dev/null +++ b/SourceCode/EngineChanges/engine_changes.md @@ -0,0 +1,20 @@ +# Added and Changed Engine Features + +This section documents front-facing changes in TheSuperHackers engine source compared with the EA retail +source release. It focuses on changes that players, modders, map makers, and tool authors may need to use +or account for, such as configuration settings, command-line arguments, key bindings, debug commands, and +INI fields that were added, changed, or removed. + +Backend implementation details are intentionally left out unless they affect how the game is played, +configured, tested, or modded. + +## Pages + +- [Options.ini](options_ini): player-facing options stored in `Options.ini`. +- [Added/Changed Command Line Arguments](command_line_arguments): launch arguments added or changed by the engine. +- [Key Bindings](key_bindings): non-debug key bindings added or changed by the engine. +- [Debug Commands](debug_commands): in-game debug commands added or changed by the engine. +- [GameData.ini](gamedata_ini): mod-facing `GameData.ini` settings. +- [GameAudio.ini](gameaudio_ini): mod-facing `GameAudio.ini` settings. +- [InGameUI.ini](ingameui_ini): mod-facing `InGameUI.ini` overlay and styling settings. +- [Object Module Fields](module_fields): object module fields added for INI authors. diff --git a/SourceCode/EngineChanges/gameaudio_ini.md b/SourceCode/EngineChanges/gameaudio_ini.md new file mode 100644 index 00000000..35725439 --- /dev/null +++ b/SourceCode/EngineChanges/gameaudio_ini.md @@ -0,0 +1,13 @@ +# GameAudio.ini + +This page lists mod-facing `GameAudio.ini` settings added in TheSuperHackers engine source compared +with the retail source release. + +Boolean values use `Yes` or `No`. Percentage values use the existing INI percentage syntax, such as +`75%` or `100%`. + +| Name | Accepted Values | Default | Description | +| --- | --- | --- | --- | +| `Use3DSoundRangeVolumeFade` | `Yes` or `No` | `Yes` | Enables volume fading for 3D sounds as they approach maximum range, avoiding abrupt cutoff at the edge of the sound range. | +| `3DSoundRangeVolumeFadeExponent` | Real number | `4.0` | Controls the non-linear 3D sound range fade curve. Higher values make volume fall off more sharply near maximum range. | +| `DefaultMoneyTransactionVolume` | Percentage | `100%` in Generals, `0%` in Zero Hour | Sets the default money deposit and withdraw sound volume used when `Options.ini` does not contain `MoneyTransactionVolume`. | diff --git a/SourceCode/EngineChanges/gamedata_ini.md b/SourceCode/EngineChanges/gamedata_ini.md new file mode 100644 index 00000000..fad7a5c2 --- /dev/null +++ b/SourceCode/EngineChanges/gamedata_ini.md @@ -0,0 +1,16 @@ +# GameData.ini + +This page lists mod-facing `GameData.ini` settings added in TheSuperHackers engine source compared +with the retail source release. + +Boolean values use `Yes` or `No`. + +| Name | Accepted Values | Default | Description | +| --- | --- | --- | --- | +| `ViewportHeightScale` | Real number, usually `0.0` through `1.0` | `0.8` | Scales the tactical viewport height. `0.8` preserves the original control bar area; `1.0` makes the tactical view use the full screen height so custom control bars can overlay it. | +| `AllowMoneyPerMinuteForPlayer` | `Yes` or `No` | `No` | Allows regular player control bars to show money per minute when `Options.ini` has `ShowMoneyPerMinute=yes`. Observer control bars can show money per minute regardless of this setting. | +| `ObjectPlacementOpacity` | Real number, usually `0.0` through `1.0` | `0.45` | Controls the opacity of the build-placement preview object. | +| `ObjectPlacementShadows` | `Yes` or `No` | `Yes` | Enables shadows on build-placement preview objects. If disabled, increasing `ObjectPlacementOpacity` can help preserve preview contrast. | + +`ViewportHeightScale` is also forced to `1.0` by `-forcefullviewport` and by the `GenTool/fullviewport.dat` +compatibility check. diff --git a/SourceCode/EngineChanges/ingameui_ini.md b/SourceCode/EngineChanges/ingameui_ini.md new file mode 100644 index 00000000..45c0f59d --- /dev/null +++ b/SourceCode/EngineChanges/ingameui_ini.md @@ -0,0 +1,62 @@ +# InGameUI.ini + +This page lists mod-facing `InGameUI.ini` overlay styling settings added in TheSuperHackers engine +source compared with the retail source release. + +These settings style overlays that are enabled or disabled by the matching `Options.ini` font-size entries. +Positions use `X: Y:`. Colors use `R:<0-255> G:<0-255> B:<0-255> [A:<0-255>]`; +alpha is optional and defaults to `255`. + +## Network Latency + +| Name | Default | Description | +| --- | --- | --- | +| `NetworkLatencyFont` | `Tahoma` | Font used by the multiplayer network latency overlay. | +| `NetworkLatencyBold` | `Yes` | Enables bold text for the network latency overlay. | +| `NetworkLatencyPosition` | `X:3 Y:-1` | Overlay position. `X:3 Y:-1` uses the shared HUD anchor and draws inline with the other top HUD counters. | +| `NetworkLatencyColor` | `R:173 G:216 B:255 A:255` | Main text color. | +| `NetworkLatencyDropColor` | `R:0 G:0 B:0 A:255` | Drop-shadow color. | + +## Render FPS + +| Name | Default | Description | +| --- | --- | --- | +| `RenderFpsFont` | `Tahoma` | Font used by the render FPS overlay. | +| `RenderFpsBold` | `Yes` | Enables bold text for the render FPS overlay. | +| `RenderFpsPosition` | `X:3 Y:-1` | Overlay position. `X:3 Y:-1` uses the shared HUD anchor and draws inline with the other top HUD counters. | +| `RenderFpsColor` | `R:255 G:255 B:0 A:255` | Current render FPS text color. | +| `RenderFpsLimitColor` | `R:119 G:119 B:119 A:255` | FPS limit text color. | +| `RenderFpsDropColor` | `R:0 G:0 B:0 A:255` | Drop-shadow color. | +| `RenderFpsRefreshMs` | `1000` | Milliseconds between render FPS text refreshes. `0` updates every frame. | + +## System Time + +| Name | Default | Description | +| --- | --- | --- | +| `SystemTimeFont` | `Tahoma` | Font used by the local system time overlay. | +| `SystemTimeBold` | `Yes` | Enables bold text for the system time overlay. | +| `SystemTimePosition` | `X:3 Y:-1` | Overlay position. `X:3 Y:-1` uses the shared HUD anchor and draws inline with the other top HUD counters. | +| `SystemTimeColor` | `R:255 G:255 B:255 A:255` | Main text color. | +| `SystemTimeDropColor` | `R:0 G:0 B:0 A:255` | Drop-shadow color. | + +## Game Time + +| Name | Default | Description | +| --- | --- | --- | +| `GameTimeFont` | `Tahoma` | Font used by the game timer overlay. | +| `GameTimeBold` | `Yes` | Enables bold text for the game timer overlay. | +| `GameTimePosition` | `X:3 Y:-1` | Overlay position. The `X` coordinate is applied from the right edge of the screen. | +| `GameTimeColor` | `R:255 G:255 B:255 A:255` | Main timer text color. | +| `GameTimeDropColor` | `R:0 G:0 B:0 A:255` | Drop-shadow color. | + +## Player Info List + +| Name | Default | Description | +| --- | --- | --- | +| `PlayerInfoListFont` | `Tahoma` | Font used by the observer player information list. | +| `PlayerInfoListBold` | `Yes` | Enables bold text for the player information list. | +| `PlayerInfoListPosition` | `X:0.0 Y:0.5` | Normalized screen position. `X` and `Y` are multiplied by the current display width and height. | +| `PlayerInfoListLabelColor` | `R:125 G:124 B:122 A:255` | Label text color. | +| `PlayerInfoListValueColor` | `R:253 G:251 B:251 A:255` | Value text color. Player names still use player colors. | +| `PlayerInfoListDropColor` | `R:0 G:0 B:0 A:255` | Drop-shadow color. | +| `PlayerInfoListBackgroundAlpha` | `170` | Background rectangle alpha, from `0` to `255`. | diff --git a/SourceCode/EngineChanges/key_bindings.md b/SourceCode/EngineChanges/key_bindings.md new file mode 100644 index 00000000..89e5d617 --- /dev/null +++ b/SourceCode/EngineChanges/key_bindings.md @@ -0,0 +1,40 @@ + + + +# Key Bindings + +This page lists non-debug key bindings added or changed in TheSuperHackers engine source. Debug-only +bindings are intentionally omitted because debug commands are documented on the +[In-Game Debug Commands](ingame_debug_commands) page. + +The command names are the names used by `CommandMap.ini` unless the entry is marked as default-only. + +## CommandMap.ini Bindings + +| Command | Default Binding | Usable In | Description | +| --- | --- | --- | --- | +| `INCREASE_MAX_RENDER_FPS` | Ctrl+Numpad + | Everywhere | Increases the max render FPS preset. | +| `DECREASE_MAX_RENDER_FPS` | Ctrl+Numpad - | Everywhere | Decreases the max render FPS preset. | +| `INCREASE_LOGIC_TIME_SCALE` | Shift+Ctrl+Numpad + | Everywhere | Increases the logic time scale FPS, reducing slow motion. Ignored in network games. | +| `DECREASE_LOGIC_TIME_SCALE` | Shift+Ctrl+Numpad - | Everywhere | Decreases the logic time scale FPS, slowing the simulation. Ignored in network games. | +| `TOGGLE_PLAYER_OBSERVER` | M | Observer | Toggles observer view between all players and the player currently being looked at. Requires `PlayerObserverEnabled=yes`. | +| `TOGGLE_FAST_FORWARD_REPLAY` | F | Game | Toggles replay fast-forward. The current default map assigns this key even though the command existed in retail. | +| `TOGGLE_PAUSE` | P | Observer | Toggles pause in non-multiplayer games. | +| `TOGGLE_PAUSE_ALT` | Shift+P | Everywhere | Alternate pause binding that can be used while playing. | +| `STEP_FRAME` | O | Observer | Advances one frame and pauses again in non-multiplayer games. | +| `STEP_FRAME_ALT` | Shift+O | Everywhere | Alternate frame-step binding that can be used while playing. | +| `SELECT_NEXT_IDLE_WORKER` | Ctrl+I | Game | Selects the next idle worker for the observed or local player. | +| `TAKE_SCREENSHOT` | F12 | Everywhere | Saves a JPEG screenshot. JPEG quality is controlled by [`JPEGQuality`](options_ini). | +| `TAKE_SCREENSHOT_PNG` | Ctrl+F12 | Everywhere | Saves a lossless PNG screenshot. | + +## Default-Only Controls + +These controls are generated by the current default meta map, but do not currently have exposed +`CommandMap.ini` command names. + +| Default Binding | Usable In | Description | +| --- | --- | --- | +| Ctrl+Numpad 4 | Game | Rotates the camera left in a fixed increment. | +| Ctrl+Numpad 6 | Game | Rotates the camera right in a fixed increment. | + + diff --git a/SourceCode/EngineChanges/module_fields.md b/SourceCode/EngineChanges/module_fields.md new file mode 100644 index 00000000..e9716bda --- /dev/null +++ b/SourceCode/EngineChanges/module_fields.md @@ -0,0 +1,23 @@ +# Object Module Fields + +This page lists mod-facing object module fields added in TheSuperHackers engine source compared with +the retail source release. Existing retail fields are not repeated. + +Boolean values use `Yes` or `No`. + +## CrateCollide + +Available in Generals and Zero Hour. + +| Field | Accepted Values | Default | Description | +| --- | --- | --- | --- | +| `AllowMultiPickup` | `Yes` or `No` | Build-dependent | Allows multiple objects to pick up the same crate on the same frame. The default is enabled in retail-compatible or preserved-multi-crate-pickup builds, and disabled otherwise. | + +## CreateObjectDie + +The `CreateObjectDie` module exists in both Generals and Zero Hour. The added field below is available +only in Zero Hour. + +| Field | Accepted Values | Default | Description | +| --- | --- | --- | --- | +| `TransferSelection` | `Yes` or `No` | `No` | If the dying object was selected and the module creates a replacement object, selects the replacement object. This is useful for objects such as the Sneak Attack tunnel. | diff --git a/SourceCode/EngineChanges/options_ini.md b/SourceCode/EngineChanges/options_ini.md new file mode 100644 index 00000000..1b1f5e70 --- /dev/null +++ b/SourceCode/EngineChanges/options_ini.md @@ -0,0 +1,66 @@ +# Options.ini + +This page lists player-facing `Options.ini` entries that were added or changed in +TheSuperHackers engine source compared with the retail source release. + +Boolean values are written as `yes` or `no`; parsing is case-insensitive. + +## Display and Audio + +| Name | Accepted Values | Default | Description | +| --- | --- | --- | --- | +| `MoneyTransactionVolume` | Non-negative number. `100` is normal volume. | `100` in Generals, `0` in Zero Hour | Controls the deposit and withdraw money sound volume. `0` mutes these sounds. Values above `100` are not capped by `Options.ini` parsing. | +| `TextureFilter` | `None`, `Point`, `Bilinear`, `Trilinear`, `Anisotropic` | `Bilinear` | Selects the global texture filtering mode. Invalid names fall back to `None`. | +| `AnisotropyLevel` | Practical values are `2`, `4`, `8`, `16` | `2` | Selects anisotropic filtering level. Other integer values are clamped to `2` through `16` and rounded down to the highest supported power of two. | +| `ResolutionFontAdjustment` | Non-negative number. `100` means 100%. | Unset | Overrides the `GlobalLanguage.ini` resolution font adjustment. Negative values or an absent key use the `GlobalLanguage.ini` setting. | +| `JPEGQuality` | `1` through `100` | `80` | Controls JPEG screenshot quality. Values outside the range are clamped; PNG screenshots are unaffected. | + +## Shell and UI + +| Name | Accepted Values | Default | Description | +| --- | --- | --- | --- | +| `GameWindowTransitionSpeedMultiplier` | Number from `1` through `1000` | `1` | Multiplies game window transition speed for menu/window animations and whole-screen fades. Values below `1`, invalid values, and missing values use `1`; values above `1000` are clamped to `1000`. | + +## HUD Overlays + +Set a font size to `0` to disable that overlay. The visual styling for these overlays is configured in +[`InGameUI.ini`](ingameui_ini). + +| Name | Accepted Values | Default | Description | +| --- | --- | --- | --- | +| `NetworkLatencyFontSize` | `0+` | `8` | Controls the multiplayer network latency overlay font size. | +| `RenderFpsFontSize` | `0+` | `8` | Controls the render FPS and FPS limit overlay font size. | +| `SystemTimeFontSize` | `0+` | `8` | Controls the local system time overlay font size. | +| `GameTimeFontSize` | `0+` | `8` | Controls the game timer overlay font size. | +| `PlayerInfoListFontSize` | `0+` | `8` | Controls the observer player information list font size. | + +## Replays and Observer View + +| Name | Accepted Values | Default | Description | +| --- | --- | --- | --- | +| `ArchiveReplays` | `yes` or `no` | `no` | Copies finished replay files to the archived replay folder and renames them using a timestamp. | +| `PlayerObserverEnabled` | `yes` or `no` | `yes` | Enables observer player-view tracking and the observer player-view toggle. Set to `no` to disable the feature and its extra tracking work. | +| `ShowMoneyPerMinute` | `yes` or `no` | `no` | Shows money as current cash plus income per minute when allowed by [`GameData.ini`](gamedata_ini). Observer control bars can show it regardless of the `GameData.ini` player gate. | + +## Mouse and Scrolling + +`CursorCaptureMode` is not used by the current code. Use the four cursor-capture booleans below instead. + +| Name | Accepted Values | Default | Description | +| --- | --- | --- | --- | +| `UseRightMouseScrollWithAlternateMouse` | `yes` or `no` | `no` in Generals, `yes` in Zero Hour | Allows right mouse scrolling while Alternate Mouse mode is enabled. | +| `CursorCaptureEnabledInWindowedGame` | `yes` or `no` | `yes` | Captures the mouse cursor while in-game and windowed. | +| `CursorCaptureEnabledInWindowedMenu` | `yes` or `no` | `no` | Captures the mouse cursor while in menus and windowed. | +| `CursorCaptureEnabledInFullscreenGame` | `yes` or `no` | `yes` | Captures the mouse cursor while in-game and fullscreen. | +| `CursorCaptureEnabledInFullscreenMenu` | `yes` or `no` | `yes` | Captures the mouse cursor while in menus and fullscreen. | +| `ScreenEdgeScrollEnabledInWindowedApp` | `yes` or `no` | `no` | Enables camera scrolling when the cursor touches the screen edge while windowed. | +| `ScreenEdgeScrollEnabledInFullscreenApp` | `yes` or `no` | `yes` | Enables camera scrolling when the cursor touches the screen edge while fullscreen. | + +## Changed Retail Options + +| Name | Accepted Values | Default | Current Behavior | +| --- | --- | --- | --- | +| `AntiAliasing` | `0`, `2`, `4`, `8` | `0` | Selects the MSAA level. The current code treats the value as the actual multisample level, clamps it to `0` through `8`, and rounds down to the highest supported power of two. Retail treated this value as the options-menu position: `0` for off, `1` for low, and `2` for high. | +| `ScrollFactor` | `1+` | `50` | Controls keyboard camera scroll speed as a percentage. Retail clamped this to `0` through `100`; the current code clamps only values below `1` and no longer caps the upper limit. | +| `StaticGameLOD` | `Low`, `Medium`, `High`, `VeryHigh`, `Custom` | Recommended detail level when unset | Selects the static detail preset. The current code adds `VeryHigh` as a selectable preset above `High`; retail accepted only `Low`, `Medium`, `High`, and `Custom`. | +| `IdealStaticGameLOD` | `Low`, `Medium`, `High`, `VeryHigh`, `Custom` | Recommended detail level when unset | Stores the recommended static detail preset. The current code can write and read `VeryHigh`; retail accepted only `Low`, `Medium`, `High`, and `Custom`. | diff --git a/SourceCode/_Sidebar.md b/SourceCode/_Sidebar.md index 06bfa4e2..e2ddb4aa 100644 --- a/SourceCode/_Sidebar.md +++ b/SourceCode/_Sidebar.md @@ -5,7 +5,6 @@ - [How to Get Involved](how_to_involved) - [How to Contribution](https://github.com/TheSuperHackers/GeneralsGameCode/blob/main/CONTRIBUTING.md) - [Replays for testing](replay_testing) -- [New Configuration Options](new_configuration_options) - [In-Game Debug Commands](ingame_debug_commands) - [Community forks](forks) - [License](https://github.com/TheSuperHackers/GeneralsGameCode/blob/main/LICENSE.md) @@ -15,6 +14,17 @@ - [Known Issues](known_issues) - [Contact & Community](contact_community) +## [Added and Changed](engine_changes) + +- [Options.ini](options_ini) +- [Added/Changed Command Line Arguments](command_line_arguments) +- [Key Bindings](key_bindings) +- [Debug Commands](debug_commands) +- [GameData.ini](gamedata_ini) +- [GameAudio.ini](gameaudio_ini) +- [InGameUI.ini](ingameui_ini) +- [Object Module Fields](module_fields) + ## [Builds](build_guides) - [Build Configuration Overview](build_configuration) - [CMake Overview](cmake_guide) diff --git a/SourceCode/new_configuration_options.md b/SourceCode/new_configuration_options.md deleted file mode 100644 index aa585c6a..00000000 --- a/SourceCode/new_configuration_options.md +++ /dev/null @@ -1,65 +0,0 @@ - - - -# New Configuration Options - -Several new configuration options have been added to the game. The new configuration options can be -configured from the following locations: - -## Options.ini - -| Name | Description | Accepted Values | Default Value | -| ---------------------- | ---------------------------------------------------------------------------------------------- | -------------------------- | ----------------------------- | -| MoneyTransactionVolume | Controls the volume of money deposit and withdraw audio events. Set to 0 to mute these sounds. | 0-100 | 100 (Generals), 0 (Zero Hour) | -| SystemTimeFontSize | Controls the font size for system time display. Set to 0 to disable the system time display. | 0+ | 8 | -| GameTimeFontSize | Controls the font size for game time display. Set to 0 to disable the game time display. | 0+ | 8 | -| CursorCaptureMode | Controls when the game window captures the mouse cursor. | None, InGame, Always, Auto | Auto | - -## CommandMap.ini - -| Name | Description | Default Keybinding | -| ----------------------- | ---------------------------------- | ---------------------------- | -| TOGGLE_PAUSE | Toggles pause in replay playback | P | -| STEP_FRAME | Steps one frame in replay playback | O | -| SELECT_NEXT_IDLE_WORKER | Selects the next idle worker unit | Ctrl+I | - -## GameData.ini - -| Name | Description | Accepted Values | Default Value | -| ------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------- | ------------- | -| ViewportHeightScale | Controls the height scale of the tactical view. Used to hide the world behind the Control Bar for 'Control Bar Pro' Addons. | 0.0 - 1.0 | 0.8 | - -## Command Line Arguments - -| Argument | Description | -| ------------------ | -------------------------------------------------------------------------------------------- | -| -forcefullviewport | Forces full viewport mode for 'Control Bar Pro' Addons by setting ViewportHeightScale to 1.0 | - -## CursorCaptureMode Details - -The `CursorCaptureMode` option controls when the game window captures the mouse cursor, preventing it from -leaving the game window boundaries. This is particularly useful for windowed mode gameplay. - -| Mode | Behavior | -| ---------- | ------------------------------------------------------------- | -| **None** | Game window does not capture the cursor | -| **InGame** | Game window captures the cursor when playing and observing | -| **Always** | Game window captures the cursor always in menus and game | -| **Auto** | Applies mode "InGame" when Windowed, "Always" when Fullscreen | - -The cursor capture is automatically released when the game window loses focus (e.g., when Alt+Tab is used to -switch to another application). - -## ViewportHeightScale Details - -The `ViewportHeightScale` setting controls the height of the tactical view as a fraction of the screen height. -This feature is specifically designed to support 'Control Bar Pro' Addons that modify the game's interface. - -**Values:** - -- `0.8` (default): Traditional control bar mode, tactical view uses 80% of screen height -- `1.0`: Full viewport mode, tactical view uses entire screen height (control bar overlays the view) -- Custom values between `0.0` and `1.0` for custom control bar configurations - -**Integration with Control Bar Pro Addons:** -The game reads a `GenTool/fullviewport.dat` file to automatically enable full viewport mode when detected.