NetDynamics는 안정적인 UDP 전송을 위한 데이터 지향 네트워킹 놀이터입니다. 이 애플리케이션은 독점 네트워킹 라이브러리의 스트레스 테스트 및 디버깅을 위해 만들어졌지만 오픈 소스 대안으로 ENet도 지원합니다.
NetDynamics를 사용하면 최대 100,000개의 동적 엔터티를 생성하고, 효율적으로 데이터를 처리하고, 그리기 호출 일괄 처리를 사용하여 그래픽을 렌더링할 수 있습니다. 이 애플리케이션은 순차 신뢰성/신뢰할 수 없는 메시지 전달을 지원하는 UDP 전송을 사용하여 네트워크를 통한 전송이나 루프백을 위한 엄청난 양의 데이터를 생성합니다. 주요 목표는 네트워크 전송에서 문제가 있는 지점, 병목 현상 또는 버그를 파악하고 이를 실시간으로 시각화하는 것입니다.
전반적인 접근 방식은 엔터티가 데이터와 논리에서 분리된 식별자일 뿐인 엔터티 구성 요소 시스템을 기반으로 합니다. NetDynamics는 연결 전반에 걸쳐 엔터티의 시각적 표현을 동기화하는 클라이언트-서버 애플리케이션입니다. 서버는 본질적으로 엔터티의 데이터인 대규모 구성 요소 배치를 직렬화하여 클라이언트에 전송합니다. 시스템은 논리에 사용되며 지정된 엔터티에 대한 구성 요소를 처리합니다.
서버는 모든 엔터티에 대한 모든 권한을 갖고 있으며, 클라이언트는 적절한 메시지를 전송해야만 세계 인구에 참여할 수 있습니다. 서버는 엔터티를 생성할 수도 있고 클라이언트 간 추가 동기화를 통해 로컬로 엔터티를 삭제할 수도 있습니다. 서버는 고정된 간격(기본적으로 초당 20개 업데이트)으로 엔터티에 대한 상태 업데이트를 보냅니다. 클라이언트는 보간법을 사용하여 위치 및 속도 구성 요소를 기반으로 상태 업데이트 간에 엔터티의 원활한 이동을 복제합니다. 외삽법이 구현되지 않아 패킷 손실이 눈에 띄게 나타납니다.
이 애플리케이션은 수십만 개의 네트워크 메시지로 트래픽을 기하급수적으로 생성하도록 설계되었습니다. 네트워크 전송에 부하가 높을 때 메인 스레드의 성능 저하를 알아차리기 위해 의도적으로 멀티 스레드를 사용하는 것은 아닙니다. 따라서 단일 스레드 전송은 애플리케이션의 프레임 속도에 따라 항상 더 높은 대기 시간으로 수행됩니다. 전송 로직을 별도의 전용 스레드로 이동하거나 다른 방식으로 프레임 속도에 독립적으로 만들면 이 문제가 해결되지만 이는 NetDynamics의 목적을 벗어납니다.
애플리케이션을 다운로드하고 settings.ini
파일에서 원하는 매개변수를 설정합니다. 애플리케이션을 실행하고, 서버나 클라이언트에서 마우스 왼쪽 버튼을 사용하여 엔터티를 생성하고, 서버에서 마우스 오른쪽 버튼을 사용하여 엔터티를 삭제합니다.
초기 애플리케이션의 렌더링 및 처리 성능을 테스트하여 네트워킹 논리에 따른 프레임 시간 소비의 시각적 차이를 얻으려면 연결 없이 서버에 엔터티를 생성하면 됩니다.