Skip to content

feat(online): Show the connection settings in the options menu and keep scroll speed and FPS limit in Options.ini - #655

Draft
tintinhamans wants to merge 24 commits into
GeneralsOnlineDevelopmentTeam:mainfrom
tintinhamans:arctic/go/feat/network-options-menu
Draft

tintinhamans wants to merge 24 commits into
GeneralsOnlineDevelopmentTeam:mainfrom
tintinhamans:arctic/go/feat/network-options-menu

Conversation

@tintinhamans

@tintinhamans tintinhamans commented Oct 24, 2026 •

Copy link
Copy Markdown

Merge after #646. Includes #651, closed as folded into this PR.

Adds a Network section to the options menu for the settings from #646, with Online and LAN tabs: Proxy (Automatic, Disabled, Custom), Server (Automatic, Custom), and the LAN IP. The resolved proxy or host shows in the disabled fields. Cancel after a failed Accept test drops only the connection changes. Clicks on the part of an open combo box list outside its parent now reach the list, which the new dropdowns need. Text in text entries and combo boxes is centred vertically in the field. The options panel now fits inside the shell frame, 399 by 511 units with the same padding around and inside every section.

Shell checkboxes drew about 1 source pixel up and left of their row, and filled slider blocks had a 2x2 transparent notch. ZZ_GeneralsOnline_CheckboxSliderArt.INI redefines the affected images with a fixed 16x16 GeneralsOnline_CheckboxSliderArt.tga.

The proxy login from #646 now has its own Menus/ProxyLogin.wnd in the style of the game's message boxes: caps title, a disabled Proxy row, the "Use Windows login" checkbox, username and password, Remember My Password, one fixed message area and caps buttons, with 15 units of padding. It is 260 units wide, and status and error messages are centred across the full width. ProxyLogin.cpp drops the layout code (868 to 587 lines).

The game version moves from the options menu to the bottom left of the shell frame. It is drawn on the frame on every shell screen that has one and is gone in game. Full screen windows that end at 799 or 599 in the 800x600 layouts now reach the screen edge when scaled, and so does the control bar background, so the options screen and the area under the control bar no longer leave 3 to 5 unfilled pixel rows at 2560x1440. Fills skip their 1 pixel inset when the border is invisible at scaled resolutions. Stretched images now sample half a texel inside their rect, so the main menu frame no longer picks up its transparent neighbours in the shared texture at 2560x1440. 800x600 draws images unchanged.

Settings cleanup: the unused stats_overlay is removed. The FPS limit moves from settings.json to RenderFpsLimit in Options.ini (an old value is migrated, and a value below 60 is raised to 60). It now applies in every game (online, LAN, skirmish, campaign, replay), and menus and the shellmap stay capped at 60. Offline, the game speed no longer follows the render rate: the logic time scale is on from startup (the approach of TheSuperHackers#2903), so the simulation stays at 60 logic frames per second at any render limit, and the logic time scale hotkey no longer turns the setting off. The skirmish game speed slider now runs from 30 to 120 logic frames per second in steps of 2 (60 is normal, the last position is unlimited), and still saves the FPS pref in retail units (half of that, 61 for unlimited), so retail reads the same file. Scripted FPS limits stay in retail units and are doubled. Both set the logic rate instead of the render limit, speeds above the render limit are capped by it, and a restart keeps the chosen speed. -noFPSLimit now means uncapped. Network games still run on the network frame rate. camera.move_speed_ratio is removed and migrated into ScrollFactor in Options.ini as old * ratio * (width / 2) / (1.6 * 400), clamped below at 1 like upstream TheSuperHackers#1262 (TheSuperHackers#1262), so 1.0 at 2560x1440 gives 100. The right mouse scroll drag is now measured at 800x600, so the scroll speed no longer depends on the resolution. The Scroll speed slider goes up to 300, since scrolling no longer speeds up with FPS or resolution.

Deployment: the core pack with this OptionsMenu.wnd, ProxyLogin.wnd and MainMenuVersion.wnd needs this code. Without the pack the retail options menu stays, the version stays in it, and settings.json still works.

Tested: z_generals builds. An offline skirmish through the UI rig keeps 60 logic frames per second (measured over 10 s) at RenderFpsLimit 60, 144, uncapped and 30 (raised to 60), while it renders at 60, 144 and about 760 frames per second; the menus stay at 60 with an uncapped limit. With a render limit of 240, the skirmish slider at 30, 60 and 120 gives 30.0, 60.0 and 119.4 logic frames per second. Through the UI rig: the options menu inside the frame at 2560x1440, 1280x720 and 1024x768, the version on the main menu, options, skirmish and replay screens and gone in game, the screen edges before and after at 800x600, 1280x720 and 2560x1440, the proxy login with the right and wrong password and the Windows login, and a migration run (old settings.json to the new shapes, Options.ini gained RenderFpsLimit and ScrollFactor).

@tintinhamans
tintinhamans force-pushed the arctic/go/feat/network-options-menu branch 2 times, most recently from e9b3142 to fcd3e33 Compare October 25, 2026 02:38
@tintinhamans
tintinhamans force-pushed the arctic/go/feat/network-options-menu branch 2 times, most recently from 4002010 to 9198a6b Compare October 25, 2026 11:15
@tintinhamans tintinhamans changed the title feat(online): Show the connection settings in a Network section of the options menu feat(online): Show the connection settings in the options menu and keep scroll speed and FPS limit in Options.ini Oct 25, 2026
@tintinhamans
tintinhamans force-pushed the arctic/go/feat/network-options-menu branch 2 times, most recently from 78c4077 to 116f34e Compare October 26, 2026 15:39
tintinhamans and others added 20 commits October 27, 2026 14:32
@tintinhamans
tintinhamans force-pushed the arctic/go/feat/network-options-menu branch from 116f34e to eff2278 Compare October 28, 2026 01:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants