NetDynamics — это ориентированная на данные сетевая площадка для надежного транспорта UDP. Приложение было создано для стресс-тестирования и отладки собственной сетевой библиотеки, но оно также поддерживает ENet как альтернативу с открытым исходным кодом.
NetDynamics позволяет создавать до 100 000 динамических объектов, эффективно обрабатывать данные и отображать графику с использованием пакетной обработки вызовов отрисовки. Приложение генерирует огромный объем данных для передачи по сети или по шлейфу с использованием транспорта UDP, который поддерживает последовательную надежную/ненадежную доставку сообщений. Основная цель — определить проблемные места, узкие места или ошибки в сетевом транспорте и визуализировать их в режиме реального времени.
Общий подход основан на системе компонентов сущностей, где сущность — это просто идентификатор, отделенный от данных и логики. NetDynamics — это клиент-серверное приложение, которое синхронизирует визуальное представление объектов между соединениями. Сервер сериализует и передает клиентам большие партии компонентов, которые по сути являются данными объекта. Системы используются для логики и обработки компонентов для назначенных объектов.
Сервер имеет полную власть над всеми объектами, клиенты могут участвовать в населении мира, только отправив соответствующее сообщение. Сервер также может создавать сущности, а также уничтожать их локально с дальнейшей синхронизацией между клиентами. Сервер отправляет обновления состояния объектов с фиксированным интервалом (по умолчанию 20 обновлений в секунду). Клиенты используют интерполяцию для воспроизведения плавного перемещения объектов между обновлениями состояния на основе компонентов положения и скорости. Экстраполяция не реализована, поэтому потеря пакетов будет заметна.
Приложение предназначено для экспоненциальной генерации трафика с помощью сотен тысяч сетевых сообщений. Многопоточный транспорт не используется намеренно, чтобы заметить снижение производительности основного потока, когда сетевой транспорт находится под высокой нагрузкой, поэтому однопоточный транспорт всегда будет работать с более высокими задержками в зависимости от частоты кадров приложения. Перенос транспортной логики в отдельный выделенный поток или каким-либо другим способом сделать ее независимой от частоты кадров решит эту проблему, но это выходит за рамки целей NetDynamics.
Загрузите приложение и задайте нужные параметры в файле settings.ini
. Запустите приложение, используйте левую кнопку мыши на сервере или клиенте для создания сущностей, используйте правую кнопку мыши на сервере для уничтожения сущностей.
Чтобы протестировать производительность рендеринга и обработки исходного приложения и получить визуальную разницу в потреблении времени кадра сетевой логикой, вы можете просто создавать объекты на сервере без каких-либо подключений.