Added Server Browser and Lobby Server (#10, #45, #35), in-game chat (#8) and minor bug fixes (#36) - #46
Open
AMacro wants to merge 691 commits into
Open
Added Server Browser and Lobby Server (#10, #45, #35), in-game chat (#8) and minor bug fixes (#36)#46AMacro wants to merge 691 commits into
AMacro wants to merge 691 commits into
Conversation
This was referenced Sep 22, 2024
Open
Open
Jarnster
pushed a commit
to Jarnster/dv-multiplayer
that referenced
this pull request
Nov 27, 2024
Fix project board link in the README
AMacro
force-pushed
the
beta
branch
3 times, most recently
from
March 2, 2025 10:27
1e8fee4 to
48e900a
Compare
Changed to enable client side audio for snapping/plugging in
Replaces sbyte-based paint theme indices with uint-based theme IDs using FNV-1a hashing for unique identification. Updates all relevant serialisation, deserialisation, packet structures, and method signatures to use the new theme ID system. This change improves extensibility and avoids index collisions, allowing for more robust theme registration and lookup.
When SkinManager is installed and the player is a client, call SkinManger's BaseSpawn patch after spawning a TrainCar
Translated more terms to French
Block keyboard inputs from affecting character while chat is open
Move Persistent Jobs compatibility into a dedicated helper and replace reflection-based access with typed events and properties.
Tightens shutdown and unload handling across networking components by clearing client players explicitly, avoiding disposal work during world unload, and updating networked map/item teardown behaviour. Reduces teardown error logs.
Prevent attempts to add the same component more than once (decrease nuisance logging
Introduces WindPhysicsController to manage spring bone physics for networked player models with wind-based hair/cloth simulation. - Adds WindPhysicsController component that applies inertia and wind forces to SpringBone components based on car velocity and player position (inside/outside car) - Disables ambient random wind when player is on a car, replacing it with speed-based wind force - Detects broken windows to allow wind through when inside a car - Updates SpringManager to optionally compensate for root motion, preventing false swing from rig translation - Adds CompensateForRootMovement() to SpringBone for root-relative tip position tracking
Hide remote player models and name tags when they are far from the local player, then reactivate them when they come back within range. The client player manager now runs a periodic culling coroutine with hysteresis to avoid rapid toggling. Culled players still keep their transforms updated so they remain in sync when shown again.
Adds unload/teardown safety checks in player tracking, world map marker sync, train car cleanup, and server culling/spawner loops. The changes guard event unsubscriptions and component access with null checks, stop periodic coroutines when unloading starts, and clear train-car lookup caches during unload to avoid stale state and shutdown-time exceptions.
Fix issues with summoning the Hand Car with a player onboard. Extend train availability checks to return explicit in-use reasons and timeout values, including movement, occupancy, brakes, engine, recent use, and job assignment. Propagate this data through SpawnResponse so the server can return richer InUse failures and update the comms radio summon UI to show reason-specific feedback and countdown formatting for timeout-based blocks. Add a cooldown of 2 seconds for a failed summon to stop spam.
Introduce a trainset-level hard correction path when incoming car positions exceed a max delta, instead of always applying normal interpolation updates. The client now detects threshold breaches per car, temporarily makes rigidbodies kinematic, snaps to authoritative state, clears stale movement queues/stress, then resumes normal physics update processing on the next fixed step.
Raises `MAX_COUPLER_ITERATIONS` from 10 to 50 to give loose coupler attachment more time to converge. Adds a warning when tighten interactions arrive in an unexpected coupling state, plus extra debug logs around `LooseAttachCoupler()` (IDs, distance, iterations, and final coupled target) to improve diagnosis of coupling sync/timing issues.
Propagates an `isDerailed` flag through `InUse`, `LocoInUse`, and `OtherCarInUse` so player-spawned derailed cars are not blocked by normal in-use checks. This bypasses brake, engine-running, carriage, and coupled-car in-use gating for derailed demo scenarios while preserving existing behavior for non-derailed cars.
Make lobby request handling wait for refreshed Steam lobby data before processing, with explicit logging and early exits on refresh failures. Add a shared DVMP lobby check (`IsDVMP`) and use it to block non-DVMP joins. Also fix main-menu cancellation paths so direct IP connection state/buttons are correctly reset when popups are aborted.
Closer alignment with existing code styling for readability. Revert public fields back to private as they are not accessed outside of the class
Resolve the 'loadAfter' loop created by the current load order: - PersistentJobs loads after Multiplayer. - RemoteDispatch loads after PersistentJobs. - Multiplayer loads after RemoteDispatch. Check if RemoteDispatch is present and enabled, and if so, wait for it to be loaded prior to patching. Remove the hard 'loadAfter' dependency from `Info.json`
Persistent Jobs mod compatibility
Client player culling now adapts to the active camera context. The culling coroutine uses a shorter check interval when an external camera is active, and computes distance from the active camera transform.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
@Insprill
This is a consolidation PR that covers multiple issues.
Work is ongoing for #6 and #11.