Skip to content

Merge upstream/main into the macOS and iOS fork - #6

Open
msnow345 wants to merge 8 commits into
mainfrom
merge-upstream-0.3
Open

Merge upstream/main into the macOS and iOS fork#6
msnow345 wants to merge 8 commits into
mainfrom
merge-upstream-0.3

Conversation

@msnow345

Copy link
Copy Markdown
Owner

Brings in five upstream commits and keeps the fork's macOS/iOS work intact.

Upstream commits merged:

Conflicts resolved

File Resolution
CMakeLists.txt Dropped OPENTS_EXPERIMENTAL_X64 (upstream promoted x64 to supported); kept OPENTS_EXPERIMENTAL_NATIVE. enable_language(RC) stays inside if(WIN32) — no other toolchain here has a resource compiler.
code/CMakeLists.txt Dropped the x86-only FATAL_ERROR guard; kept the iconv link.
code/goptions.cpp Kept the RmlUi presenter over upstream's OwnerDraw dialog proc. Upstream's new Network_Quality_Text_ID() merged cleanly and is now used by the presenter.
code/dropship.cpp Kept Host_Milliseconds() over timeGetTime().
code/language/language.rc Dropped the dialog templates the UI migration removed; TXT_CONNECTION_QUALITY_STATUS and TXT_CONNECTION_QUALITY_RUNG merged cleanly.
docs/BUILDING.md Dropped the now-obsolete "Experimental x64 build" section; kept the native and iOS sections.

Follow-on changes the merge required

code/nettime.cpp is new upstream and called ::timeGetTime() through <mmsystem.h>, which does not build off Windows. It now reads Host_Milliseconds() from hostclock.h, the same seam the rest of the engine uses.

Upstream's adaptive timing retires Session.LatencyFudge as a live control — session.h now marks it "legacy synchronized option retained for event and replay compatibility" — and replaces the WOL Connection slider with a read-only readout of the negotiated rung. Keeping our side of the goptions.cpp conflict would have left the RmlUi screen offering an editable slider for a setting nothing reads any more. The presenter now computes the rung and quality from NetTiming::Connection_Quality_For_Settings, the caption states them through TXT_CONNECTION_QUALITY_RUNG, the slider is inert, and resume no longer queues a LATENCYFUDGE event. This matches what manual/content/systems/network-synchronization.md already says the control does.

Verification

  • cmake --build build/native --target OpenTS — succeeds.
  • cmake --build --preset ios-device — succeeds.
  • Not run: the game itself, and the tests/ harnesses, which are MSVC-only (/MT, /EHsc, kernel32) and do not build off Windows. That is unchanged from main, not introduced here, but it does mean the documented cmake --build build/native fails on the harnesses while the OpenTS target succeeds.
  • Upstream's pointer-width commit (Remove assumptions about the width of long and of pointers OpenTS-Developers/OpenTS#154) overlaps this fork's LP64 work. Both sides' static_assert size and offset guards survive the merge, which a successful 64-bit build is direct evidence for.

🤖 Generated with Claude Code

https://claude.ai/code/session_01SMFrbHFBcGcMut3cddJ8S3

gunnarbeutner and others added 8 commits September 11, 2026 11:05
…velopers#154)

* Take the dissolve alpha minimum in DWORD rather than unsigned long

* Pin the trigger action's Value field to a fixed width

* Format the generated type name the way MSVC's %p does
* Add private-link RTT estimation

* Back off private network retransmissions

* Persist retransmission backoff and age RTT samples

* Keep retransmitting private packets past the connection timeout

* Drop RTT sample aging from the retransmission estimator

* Seed the RTT estimate from an ambiguous first acknowledgement

* Bound the first retry so the timeout allows three transmissions

* Seed the provisional RTT estimate from the last transmission

* Seed the provisional RTT estimate from the first transmission again

* Fix private-link recovery after timeouts and latency increases

* Tighten transport timing documentation and comments
* Add adaptive network timing policy

* Adapt multiplayer frame timing

* Show adaptive connection quality

* Document adaptive network timing

* Harden adaptive timing against stale links and divergence

* Execute events between send frames on the next send frame

* Hold timing when a measured link's RTT report lapses

* Continue timing descent one rung per evaluation

* Report each player's longest wait and hold improvement while it lasts

* Request acknowledgements until every link measures its round trip

* Draw the -MPDEBUG overlay after the render at any resolution

* Log network timing reports, evaluations and events

* Remove the legacy latency slowdown from the frame pacing

* Draw the -MPDEBUG overlay in the screen render pass

* Document the mirrored Connection slider

* Preserve deferred multiplayer events in recordings

* Tighten adaptive timing documentation and comments
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