Skip to content

Network layers and various improvements#28

Open
Extremelyd1 wants to merge 8 commits intomainfrom
steam-p2p
Open

Network layers and various improvements#28
Extremelyd1 wants to merge 8 commits intomainfrom
steam-p2p

Conversation

@Extremelyd1
Copy link
Owner

This PR contains the implementation of different network layers to allow SSMP networking to occur over Steam P2P and using UDP Hole Punching. There are various improvements to networking including optimizations, packet writing, abstractions, better interpolation, among others.
There is also a new project for a standalone Matchmaking server (MMS) that allows peers to find each other through the use of public and private lobbies. Eliminating the need for port forwarding or VLAN software in most cases.
The branch that will be merged has been the main development focus for several months.

diamondpixel and others added 8 commits December 15, 2025 08:55
* Erm new UI tbh, not even a rework..

* Small approved batch

* Smol approved batch

* Naming change.

* New struct, representing a connection.

* Deleted / Moved files

* Moved file

* Confirmed decent changes

* Confirmed decent changes

* Split up ConnectInterface

* Bug Fixes

* Made UI automatically add Steam tab if detected.

* Replaced the EndPoint with object? ThrottleKey

* Improved ConnectionDetails.cs

* Reverted back to Udp naming

* Reverted back to Udp naming

* Hooked Up disconnect button

* Made congestion and update manager not work with Steam

* Improved networking a bit

* Some further code cleanup

* Some further code cleanup

* More fixes to the code.

* Fixed ClientInfo missing on Server

* Fixed ClientInfo missing on Server and some bug fixes

* More fixes.

* More fixes.

* Changes

* Simpler Abstraction

* Mwehehehehehehehe i am going crazy

* Huge Re-work, reduced a-lot of things and simplified. Improved Steam pathway excluding it from UDP pipeline.

* Complete version of steam transport working.

* Removed ConnectionDetails

* Uncommented Steam intergration

* Fixed to use correct ContainsReliableData path

* Partial Code cleanup, re-added some missing comments, AuthUtil now uses MAC address to prevent exploiting the ban system. Removed some redundant print statements and dead imports.

* Removed Dangerous AuthUtil changes, some more fixes and clarifications

* Some more fixes on BanCommand, NetServer & SteamManager

* Requested changes in NetServer.cs

* Formatting/style and other small issues

* Applied fix requested fix.

* Change method signatures of server manager start hierarchy

---------

Co-authored-by: Extremelyd1 <10898310+Extremelyd1@users.noreply.github.com>
* RTT and Reliability abstraction and more general improvements.

* Update editorconfig with default values (#21)

* Bump actions/upload-artifact from 5 to 6 (#18)

Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 6.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](actions/upload-artifact@v5...v6)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump Hamunii.BepInEx.AutoPlugin from 2.0.1 to 2.1.0 (#15)

---
updated-dependencies:
- dependency-name: Hamunii.BepInEx.AutoPlugin
  dependency-version: 2.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Resolve various issues with dependencies and the modding template (#22)

* Re-formatted with projects .editorconfig

* feat: fix server-side transport capabilities, lazy-init managers

- Add RequiresX capability properties to IEncryptedTransportClient
- Server-side Steam clients now correctly skip UDP sequencing logic
- Lazy-init managers only when needed (saves memory for Steam)
- Remove HolePunch stubs (to be replaced with pre-processors)

* feat: Updated & Added Comments and applied requested changes.

* Fix some small issues
- Formatting
- Unused using directives
- Variable naming

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Extremelyd1 <10898310+Extremelyd1@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
… Steam P2P (#24)

* RTT and Reliability abstraction and more general improvements.

* Update editorconfig with default values (#21)

* Bump actions/upload-artifact from 5 to 6 (#18)

Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 6.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](actions/upload-artifact@v5...v6)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump Hamunii.BepInEx.AutoPlugin from 2.0.1 to 2.1.0 (#15)

---
updated-dependencies:
- dependency-name: Hamunii.BepInEx.AutoPlugin
  dependency-version: 2.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Resolve various issues with dependencies and the modding template (#22)

* Re-formatted with projects .editorconfig

* feat: fix server-side transport capabilities, lazy-init managers

- Add RequiresX capability properties to IEncryptedTransportClient
- Server-side Steam clients now correctly skip UDP sequencing logic
- Lazy-init managers only when needed (saves memory for Steam)
- Remove HolePunch stubs (to be replaced with pre-processors)

* HolePunch rough

* Added HolePunch and MasterServer

* feat: implement comprehensive multiplayer networking, matchmaking, and lobby management system with Steam integration and some improvements to the system

* feat: Fixed Steam's rich presence and added invite command.

* Added missing XML comments.

* Some small fixes

* Reverted to Using mod version

* Some more fixes.

* Some more fixes.

* Added Visibility option on MMS

* Applied requested fixes and ported Steam optimisations from future PR.

* Add and remove compiler warning suppression

* Fix formatting and standardize comments

* Remove unnecessary build configurations in solution

* Applied requested fixes.

* feat: Migrated to ManualResetEventSlim

* Final style, formatting, and logic cleanup

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Extremelyd1 <10898310+Extremelyd1@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* RTT and Reliability abstraction and more general improvements.

* Update editorconfig with default values (#21)

* Bump actions/upload-artifact from 5 to 6 (#18)

Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 6.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](actions/upload-artifact@v5...v6)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump Hamunii.BepInEx.AutoPlugin from 2.0.1 to 2.1.0 (#15)

---
updated-dependencies:
- dependency-name: Hamunii.BepInEx.AutoPlugin
  dependency-version: 2.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Resolve various issues with dependencies and the modding template (#22)

* Re-formatted with projects .editorconfig

* feat: fix server-side transport capabilities, lazy-init managers

- Add RequiresX capability properties to IEncryptedTransportClient
- Server-side Steam clients now correctly skip UDP sequencing logic
- Lazy-init managers only when needed (saves memory for Steam)
- Remove HolePunch stubs (to be replaced with pre-processors)

* HolePunch rough

* Added HolePunch and MasterServer

* feat: implement comprehensive multiplayer networking, matchmaking, and lobby management system with Steam integration and some improvements to the system

* feat: Fixed Steam's rich presence and added invite command.

* Added missing XML comments.

* feat; Extreme optimisations

* feat: Minor improvements

* Changed Buffer.BlockCopy to Array.Copy

* feat: more fixes :)

* More fixes.

* feat: more fixes

* feat: Even more fixes.

* Added proper Steam shutdown in SSMPPlugin.cs

* Added proper Steam shutdown in GameManager.cs

* Little MORE XDDD

* changed to use existing Packet instance

* feat: Updated with requested changes.

* Fixed not being able to reconnect to a lobby after quitting for Steam. Change data send type to k_EP2PSendUnreliable from k_EP2PSendUnreliableNoDelay for better bandwidth effeciency. Updated & enabled interpolation

* Added PredictiveInterpolation and deprecated PositionInterpolation

* Some small changes

* Minor improvements and removed un-used imports and functions.

* Remove unused class and clean up

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Extremelyd1 <10898310+Extremelyd1@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
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.

2 participants