All Projects → nxrighthere → Netdynamics

nxrighthere / Netdynamics

Licence: ms-pl
Data-oriented networking playground for the reliable UDP transports

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Netdynamics

Entitas Sync Framework
Networking framework for Entitas ECS. Targeted at turnbased games or other slow-paced genres.
Stars: ✭ 98 (+50.77%)
Mutual labels:  gamedev, networking, entity-component-system
Enet Csharp
Reliable UDP networking library
Stars: ✭ 464 (+613.85%)
Mutual labels:  gamedev, networking, udp
Enet
⚡️ ENet reliable UDP networking library
Stars: ✭ 202 (+210.77%)
Mutual labels:  gamedev, networking, udp
Laminar
A simple semi-reliable UDP protocol for multiplayer games
Stars: ✭ 530 (+715.38%)
Mutual labels:  gamedev, networking, udp
Valvesockets Csharp
Managed C# abstraction of GameNetworkingSockets library by Valve Software
Stars: ✭ 273 (+320%)
Mutual labels:  gamedev, networking, udp
Goben
goben is a golang tool to measure TCP/UDP transport layer throughput between hosts.
Stars: ✭ 391 (+501.54%)
Mutual labels:  networking, udp
Networker
A simple to use TCP and UDP networking library for .NET. Compatible with Unity.
Stars: ✭ 408 (+527.69%)
Mutual labels:  networking, udp
Hp Socket
High Performance TCP/UDP/HTTP Communication Component
Stars: ✭ 4,420 (+6700%)
Mutual labels:  networking, udp
Libzt
ZeroTier Sockets - Put a network stack in your app
Stars: ✭ 486 (+647.69%)
Mutual labels:  networking, udp
Defaultecs
Entity Component System framework aiming for syntax and usage simplicity with maximum performance for game development.
Stars: ✭ 286 (+340%)
Mutual labels:  gamedev, entity-component-system
Cnp3
Computer Networking : Principles, Protocols and Practice (first and second edition, third edition is being written on https://github.com/cnp3/ebook)
Stars: ✭ 471 (+624.62%)
Mutual labels:  networking, udp
Entitas Csharp
Entitas is a super fast Entity Component System (ECS) Framework specifically made for C# and Unity
Stars: ✭ 5,393 (+8196.92%)
Mutual labels:  gamedev, entity-component-system
Game Networking Resources
A Curated List of Game Network Programming Resources
Stars: ✭ 4,208 (+6373.85%)
Mutual labels:  gamedev, networking
Godex
Godex is a Godot Engine ECS library.
Stars: ✭ 307 (+372.31%)
Mutual labels:  gamedev, entity-component-system
Web Udp Public
Public demand for Web UDP
Stars: ✭ 312 (+380%)
Mutual labels:  networking, udp
Artemis Odb
A continuation of the popular Artemis ECS framework
Stars: ✭ 628 (+866.15%)
Mutual labels:  gamedev, entity-component-system
Ngtcp2
ngtcp2 project is an effort to implement IETF QUIC protocol
Stars: ✭ 589 (+806.15%)
Mutual labels:  networking, udp
Librg
🚀 Making multi-player gamedev simpler since 2017
Stars: ✭ 813 (+1150.77%)
Mutual labels:  gamedev, networking
Anette
Simple haxe network library
Stars: ✭ 35 (-46.15%)
Mutual labels:  gamedev, networking
Drop watch
Monitor reasons why and where linux drops UDP packets
Stars: ✭ 289 (+344.62%)
Mutual labels:  networking, udp

alt logo

GitHub release PayPal Coinbase

NetDynamics is a data-oriented networking playground for the reliable UDP transports. The application was created for stress testing and debugging a proprietary networking library, but it also supports ENet as an open-source alternative. You can see it in action here.

Purpose

NetDynamics allows to spawn up to 100,000 dynamic entities, efficiently process data, and render graphics using draw call batching. The application generates a huge amount of data for transfer over a network or on loopback using UDP transport that supports sequenced reliable/unreliable message delivery. The primary goal is to determine problematic spots, bottlenecks, or bugs in a network transport and visualize it in real-time.

How it works?

The overall approach is based on the Entity Component System where an entity is just an identifier which decoupled from data and logic. NetDynamics is a client-server application which synchronizes visual representation of entities across connections. The server is serializing and transmitting to clients large batches of components that essentially are entity's data. The systems are used for logic and to process components for designated entities.

The server has full authority over all entities, clients can only participate in the population of a world by sending an appropriate message. The server can spawn entities as well, and also it can destroy them locally with further synchronization across clients. The server is sending state updates for entities at a fixed interval (20 updates per second by default). Clients are using interpolation to replicate the fluent movement of entities between state updates based on the position and speed components. Extrapolation is not implemented so packet loss will be noticeable.

The application is designed to generate traffic exponentially with hundreds of thousands of network messages. It's not multi-threaded intentionally to notice performance degradation of the main thread when a network transport is under high-load, thus a single-threaded transport will always perform with higher latencies depending on the application's framerate. Moving transport logic to a separate dedicated thread or making it framerate independent in any other way will solve this, but it's beyond the purpose of NetDynamics.

Usage

Download the application and set the desired parameters in the settings.ini file. Run the application, use the left mouse button on server or client to spawn entities, use the right mouse button on server to destroy entities.

For testing an initial application's rendering and processing performance to get a visual difference in consumption of a frame time by networking logic, you can simply spawn entities on server without any connections.

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].