NetDynamics est un terrain de jeu réseau orienté données pour les transports UDP fiables. L'application a été créée pour tester et déboguer une bibliothèque réseau propriétaire, mais elle prend également en charge ENet comme alternative open source.
NetDynamics permet de générer jusqu'à 100 000 entités dynamiques, de traiter efficacement les données et de restituer des graphiques à l'aide du traitement par lots d'appels de dessin. L'application génère une énorme quantité de données à transférer sur un réseau ou en boucle à l'aide du transport UDP qui prend en charge la livraison séquentielle de messages fiables/peu fiables. L'objectif principal est de déterminer les points problématiques, les goulots d'étranglement ou les bugs dans un transport réseau et de les visualiser en temps réel.
L'approche globale est basée sur le système de composants d'entité où une entité n'est qu'un identifiant découplé des données et de la logique. NetDynamics est une application client-serveur qui synchronise la représentation visuelle des entités entre les connexions. Le serveur sérialise et transmet aux clients de gros lots de composants qui sont essentiellement les données de l'entité. Les systèmes sont utilisés pour la logique et pour traiter les composants des entités désignées.
Le serveur a la pleine autorité sur toutes les entités, les clients ne peuvent participer à la population d'un monde qu'en envoyant un message approprié. Le serveur peut également générer des entités et les détruire localement avec une synchronisation plus poussée entre les clients. Le serveur envoie des mises à jour d'état pour les entités à un intervalle fixe (20 mises à jour par seconde par défaut). Les clients utilisent l'interpolation pour reproduire le mouvement fluide des entités entre les mises à jour d'état en fonction des composants de position et de vitesse. L'extrapolation n'est pas implémentée, la perte de paquets sera donc perceptible.
L'application est conçue pour générer du trafic de manière exponentielle avec des centaines de milliers de messages réseau. Il n'est pas intentionnel de remarquer une dégradation des performances du thread principal lorsqu'un transport réseau est soumis à une charge élevée. Ainsi, un transport monothread fonctionnera toujours avec des latences plus élevées en fonction de la fréquence d'images de l'application. Déplacer la logique de transport vers un thread dédié distinct ou la rendre indépendante du framerate de toute autre manière résoudra ce problème, mais cela dépasse le but de NetDynamics.
Téléchargez l'application et définissez les paramètres souhaités dans le fichier settings.ini
. Exécutez l'application, utilisez le bouton gauche de la souris sur le serveur ou le client pour générer des entités, utilisez le bouton droit de la souris sur le serveur pour détruire les entités.
Pour tester les performances de rendu et de traitement d'une application initiale afin d'obtenir une différence visuelle dans la consommation d'un temps d'image par la logique réseau, vous pouvez simplement générer des entités sur le serveur sans aucune connexion.