All Projects → nxrighthere → Benchmarknet

nxrighthere / Benchmarknet

Licence: mit
Benchmark for testing the reliable UDP networking solutions

Projects that are alternatives of or similar to Benchmarknet

Ignorance
Ignorance utilizes the power of ENet to provide a reliable UDP networking transport for Mirror Networking.
Stars: ✭ 158 (-23.3%)
Mutual labels:  unity, networking, udp
Mirror
#1 Open Source Unity Networking Library
Stars: ✭ 2,905 (+1310.19%)
Mutual labels:  unity, networking, udp
Goben
goben is a golang tool to measure TCP/UDP transport layer throughput between hosts.
Stars: ✭ 391 (+89.81%)
Mutual labels:  networking, udp, benchmarking
Ruffles
Lightweight and fully managed reliable UDP library.
Stars: ✭ 131 (-36.41%)
Mutual labels:  unity, networking, udp
Valvesockets Csharp
Managed C# abstraction of GameNetworkingSockets library by Valve Software
Stars: ✭ 273 (+32.52%)
Mutual labels:  unity, networking, udp
Networker
A simple to use TCP and UDP networking library for .NET. Compatible with Unity.
Stars: ✭ 408 (+98.06%)
Mutual labels:  unity, networking, udp
Enet Csharp
Reliable UDP networking library
Stars: ✭ 464 (+125.24%)
Mutual labels:  unity, networking, udp
Netcode.io.net
A pure managed C# implementation of the Netcode.IO spec
Stars: ✭ 201 (-2.43%)
Mutual labels:  networking, udp
2d Unity Experiments
A collection of visual Unity experiments with latest packages (URP, Shader Graph, Cinemachine, etc).
Stars: ✭ 107 (-48.06%)
Mutual labels:  unity, experimental
Ecs
ECS for Unity with full game state automatic rollbacks
Stars: ✭ 151 (-26.7%)
Mutual labels:  unity, networking
Udp Ue4
Convenience UDP wrapper for Unreal Engine 4
Stars: ✭ 94 (-54.37%)
Mutual labels:  networking, udp
Netstack
Lightweight toolset for creating concurrent networking systems for multiplayer games
Stars: ✭ 157 (-23.79%)
Mutual labels:  unity, networking
Litenetlib
Lite reliable UDP library for Mono and .NET
Stars: ✭ 2,179 (+957.77%)
Mutual labels:  networking, udp
Webviewhook
Exposed Unity Editor WebView API
Stars: ✭ 107 (-48.06%)
Mutual labels:  unity, experimental
Entitas Sync Framework
Networking framework for Entitas ECS. Targeted at turnbased games or other slow-paced genres.
Stars: ✭ 98 (-52.43%)
Mutual labels:  unity, networking
Forgenetworkingremastered
In short, Forge Networking is a free and open source multiplayer game (multi-user) networking system that has a very good integration with the Unity game engine. You wanna make a multiplayer game or real time multi-user application? This is the library for you.
Stars: ✭ 1,338 (+549.51%)
Mutual labels:  unity, networking
Computer Networking
Free resources for a self-taught education in Computer Networking
Stars: ✭ 201 (-2.43%)
Mutual labels:  networking, udp
Unity Fastpacedmultiplayer
Features a Networking Framework to be used on top of Unity Networking, in order to implement an Authoritative Server with Lag Compensation, Client-Side Prediction/Server Reconciliation and Entity Interpolation
Stars: ✭ 162 (-21.36%)
Mutual labels:  unity, networking
Quic.net
A .NET C# Implementation of QUIC protocol - Google's experimental transport layer.
Stars: ✭ 173 (-16.02%)
Mutual labels:  networking, udp
Hazel Networking
Hazel Networking is a low level networking library for C# providing connection orientated, message based communication via TCP, UDP and RUDP.
Stars: ✭ 194 (-5.83%)
Mutual labels:  networking, udp

alt logo

GitHub release PayPal Bountysource Coinbase

The application is no longer in active public development, all futher work moved to private, this repository turned into read-only mode for historical reference. It was a great experiment, thanks to all supporters and contributors.

BenchmarkNet is a console application for testing the reliable UDP networking solutions.

Features:

  • Asynchronous simulation of a large number of clients
  • Stable under high-loads
  • Simple and flexible simulation setup
  • Detailed session information
  • Multi-process instances

Supported networking libraries:

You can find the latest benchmark results on the wiki page.

How it works?

Implementation

Each simulated client is one asynchronous task for establishing a connection with the server and processing network events. Each task has one subtask which also works asynchronously to send network messages at a specified interval (15 messages per second by default). So, 1000 simulated clients are 1000 tasks with 1000 subtasks which work independently of each other. This sounds scary, but CPU usage is <1% for tasks itself, and every operation is completely thread-safe. The clients send network messages to the server (500 reliable and 1000 unreliable by default). The server also sends messages to the clients in response (48 bytes per message by default). The application will monitor how the data is processed by the server and clients, and report their status in real-time.

Parallelism degree

TPL performs load-balancing of the coarse-grained tasks with an awareness of oversubscription for clients. A custom scheduler with per core worker thread has no effect in this application because of the semi-continuous execution of tasks with a fixed re-scheduling interval. The server process is running with higher priority to let the operating system make optimal decisions.

Quality control

The application helps to determine many various problems:

  • Memory leaks
  • Deadlocks
  • Buffers exhaustion
  • Connections disruption
  • GC pressure
  • Bugs

Usage

Before launching the application set the desired parameters in the config file to override the default values. Run the application, select the networking library and set any number of simulated clients. Do not perform any actions while the benchmark is running and wait until the process is complete.

When you are going to perform a test with less than 256 simulated clients, it's highly recommended to switch GC mode from Server GC to Workstation GC. You can find more information in this article about how different GC modes are working.

You can use any packet sniffer to monitor how the data is transmitted, but it may affect the results.

Discussion

You can find the discussion in the thread on Unity forums.

If you have any questions, contact me via email.

Donations

This project has already had an impact and helped developers in an improvement of the networking libraries. If you like this project, you can support me on PayPal, Bountysource or Coinbase.

Any support is much appreciated.

Supporters

These wonderful people make open-source better:

supporters

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].