NetDynamics é um playground de rede orientado a dados para transportes UDP confiáveis. O aplicativo foi criado para testes de estresse e depuração de uma biblioteca de rede proprietária, mas também suporta ENet como alternativa de código aberto.
NetDynamics permite gerar até 100.000 entidades dinâmicas, processar dados com eficiência e renderizar gráficos usando lote de chamadas de desenho. O aplicativo gera uma enorme quantidade de dados para transferência através de uma rede ou em loopback usando transporte UDP que suporta entrega sequencial de mensagens confiáveis/não confiáveis. O objetivo principal é determinar pontos problemáticos, gargalos ou bugs em um transporte de rede e visualizá-los em tempo real.
A abordagem geral é baseada no Sistema de Componentes de Entidade, onde uma entidade é apenas um identificador dissociado de dados e lógica. NetDynamics é um aplicativo cliente-servidor que sincroniza a representação visual de entidades entre conexões. O servidor está serializando e transmitindo aos clientes grandes lotes de componentes que são essencialmente dados da entidade. Os sistemas são usados para lógica e para processar componentes para entidades designadas.
O servidor tem autoridade total sobre todas as entidades, os clientes só podem participar da população de um mundo enviando uma mensagem apropriada. O servidor também pode gerar entidades e também destruí-las localmente com maior sincronização entre clientes. O servidor envia atualizações de estado para entidades em um intervalo fixo (20 atualizações por segundo por padrão). Os clientes estão usando interpolação para replicar o movimento fluente de entidades entre atualizações de estado com base nos componentes de posição e velocidade. A extrapolação não é implementada, portanto a perda de pacotes será perceptível.
O aplicativo foi projetado para gerar tráfego exponencialmente com centenas de milhares de mensagens de rede. Não é multithread intencionalmente notar a degradação do desempenho do thread principal quando um transporte de rede está sob alta carga; portanto, um transporte de thread único sempre funcionará com latências mais altas, dependendo da taxa de quadros do aplicativo. Mover a lógica de transporte para um thread dedicado separado ou torná-la independente da taxa de quadros de qualquer outra forma resolverá isso, mas está além do propósito do NetDynamics.
Baixe o aplicativo e defina os parâmetros desejados no arquivo settings.ini
. Execute o aplicativo, use o botão esquerdo do mouse no servidor ou cliente para gerar entidades, use o botão direito do mouse no servidor para destruir entidades.
Para testar o desempenho inicial de renderização e processamento de um aplicativo para obter uma diferença visual no consumo de um tempo de quadro pela lógica de rede, você pode simplesmente gerar entidades no servidor sem nenhuma conexão.