Ich entwickle ein Online-Multiplayer-Spiel. Es funktioniert gut, wenn ich es im lokalen Netzwerk teste, aber bevor ich es freigebe, möchte ich testen, wie die Benutzererfahrung für jemanden funktioniert, der keine so gute Verbindung zum Server hat. Wie kann ich eine schlechte Internetverbindung mit hoher Latenz, geringer Bandbreite, Jitter und gelegentlichem Paketverlust in einer lokalen Umgebung simulieren?
networking
testing
Philipp
quelle
quelle
Antworten:
Ich denke, Dummynet ist das, wonach Sie suchen. Dummynet ist ein Netzwerkemulationstool, mit dem Bandbreitenbeschränkungen, Verzögerungen, Paketverluste und vieles mehr simuliert werden können. Sie können einfach auswählen, welchen Datenverkehr Sie abfangen möchten, und die Einschränkungen konfigurieren, z. B. um den gesamten eingehenden TCP-Datenverkehr auf 2 MBit / s zu beschränken
Sie sehen, dass die Auswahl des Datenverkehrs von der bekannten ipfw-Firewall vorgenommen wird und die Pipes die Einschränkungsfunktionen bereitstellen.
Es ist für FreeBSD, Linux und Windows verfügbar.
quelle
Network Link Conditioner
Wenn Sie einen Mac verwenden, können Sie Network Link Conditioner verwenden.
Sie können verschiedene Fälle von schlechten Internetverbindungen simulieren, einschließlich Edge und 3G.
Darüber hinaus können Sie Ihre eigenen Profile mit Ihren eigenen Einstellungen erstellen:
Es ist ein kostenloser Download in Xcode (gehen Sie zu Xcode → Entwickler-Tool öffnen → Weitere Entwickler-Tools… und laden Sie die Hardware-IO-Tools für Xcode herunter ).
quelle
Wenn Sie unter Linux arbeiten, können Sie mit netem alle möglichen Probleme mit dem Netzwerk simulieren, z. B. hohe Latenz, geringe Bandbreite, Paketverluste und viele andere.
Es gibt eine Option für Windows mit dem Namen NetLimiter, aber ich habe sie nicht verwendet und kann daher nicht dafür bürgen.
Habe gerade eine Mac App namens SlowlyApp gefunden .
quelle
Unbeholfen , für Windows Vista & 7.
quelle
Unter Windows können Sie den SoftPerfect Connection Emulator ausprobieren . Dies ist im Grunde ein Treiber, der sich zwischen Ihrer Anwendung und der Netzwerkschicht (ähnlich wie Wireshark / WinPCAP) für die ausgewählte Netzwerkkarte einfügt und eine begrenzte Bandbreite, Latenz, Paketverlust und andere Dinge simulieren kann. Die Benutzeroberfläche ist einfach und unkompliziert.
Es ist ein kommerzielles Produkt, aber mit der Testversion können Sie 30 Sekunden lang "Interferenzen" auslösen, die ausreichen sollten, um zu beurteilen, ob dieses Tool das tut, was Sie wollen.
Eine weitere plattformübergreifende Option ist DummyNet , das sich ähnlich verhält (über ipfw), jedoch etwas weniger benutzerfreundlich ist.
Ich denke, dieser Teil der Frage könnte als "Wie gehe ich mit der Netzwerklatenz in meiner Anwendung um?" Eine häufig angewandte und wirksame Technik ist das Dead Reckoning . Der verlinkte Artikel erklärt es besser als ich, aber die Grundidee ist, dass Ihre Kunden durch einen Algorithmus simulieren, wo sich jede Entität befinden sollte und was sie tun sollte. Wenn eine Entität von diesem Algorithmus abweicht (z. B. Spielereingabe, serverseitiges Ereignis usw.), sendet sie ein Update an jeden Client.
quelle
Ich habe es eine Weile nicht mehr benutzt, aber ich habe Charles benutzt, um das zu testen. Es handelt sich um eine Anwendung mit verschiedenen Netzwerkdiagnosetools, einschließlich der Simulation der von Ihnen genannten Probleme: "Eine schlechte Internetverbindung mit hoher Latenz, geringer Bandbreite, Jitter und gelegentlichem Paketverlust".
quelle
Wenn Sie mit Fiddler vertraut sind und sich nur für HTTP / 1 interessieren, können Sie dieses Skript erstellen.
Fiddler unterstützt HTTP / 2 nicht. Wird HTTP / 2 abgefangen, wird der gesamte HTTP-Datenverkehr auf HTTP / 1 heruntergestuft.
quelle