Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Nox

Supermoderator

  • »Nox« ist der Autor dieses Themas

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

11

28.10.2008, 23:52

So habe das Projekt ein wenig umgebuat. Man kann nun den Client über die config.lua steuern. Wie man das ganze nutzt?
Man schreibt in die config.lua, was man gerne getestet haben möchte, startet lokal oder auf einen anderen Rechner den Server (wenn man RakNet und TCP testen will, muss man 2 getrennte Server starten. ggf. muss man eine Portweiterleitung einbauen usw.) . Der Port ist 5512 (sowohl für TCP als auch für RakNet). Während der test läuft, werden die aktuellen Messergebnisse ausgegeben und am Ende werden alle Testergebnisse nochmal zusammenfassend dargestellt.
Ich werde die Tage mich mal ran machen und entsprechende Messreihen aufnehmen. Ansonsten steht noch die Portierung auf Posix-Systeme aus. Auch könnte man die Ergebnisse vielleicht grafisch besser darstellen, aber dafür reichte erstmal die Zeit nicht. Interessant wäre auch eine Messung von der Systemauslastung und dem Datenverkehr, nur dafür habe ich noch keine portable Lösung parat.

Ich hoffe, dass das Progamm einigen weiterhilft. Wer Verbesserungen vorschlagen oder selbst was am Code machen will, braucht einfach nur bescheid sagen. Wer repräsentative Messungen macht, kann sie ja hier posten. Aber bitte mit entsprechender Berschreibung der Rahmenbedingungen.

P.S: Ich werde das ganze, wenn es Messergebnisse und Portierung gibt, dann unter zlib-Lizenz oder eine ähnliche Lizenz stellen.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Nox

Supermoderator

  • »Nox« ist der Autor dieses Themas

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

12

29.10.2008, 17:32

Beispielwerte für eine belastete Leitung (Server adsl 1000, Leitung voll ausgelastet, Client adsl 2000, Leitung komplett frei)

Zitat

RakNet Pingtest (unreliable, interval 100, bytes per packet 50, packets 1100)
result: (831.963+-54.1028) ms using 1096 values

RakNet Synctest (interval 100, instances 100, packets 1100)
result: (15525.3+-128.685) ms using 5660 values

Netlib Pingtest (no compression, synchronizied callback, interval 100, bytes per packet 50, packets 1100, nagle no)
result: (568.256+-15.0145) ms using 1100 values

Netlib Synctest (compression, synchronizied callback, direct update, sendinterval 100, updateinterval 5, instances 100, packets 1100, nagle no)

result: (186.048+-0.358305) ms using 5815 values
press key to exit


Beispielwerte für eine unbelastete Leitung (Server adsl 1000, Leitung fast komplett frei, Client adsl 2000, Leitung fast komplett frei)

Zitat

RakNet Pingtest (unreliable, interval 100, bytes per packet 50, packets 1100)
result: (671.486+-57.6465) ms using 1100 values

RakNet Synctest (interval 100, instances 100, packets 1100)
result: (648.212+-21.0289) ms using 5660 values

Netlib Pingtest (no compression, synchronizied callback, interval 100, bytes per packet 50, packets 1100, nagle no)
result: (94.7536+-1.499) ms using 1100 values

Netlib Synctest (compression, synchronizied callback, direct update, sendinterval 100, updateinterval 5, instances 100, packets 1100, nagle no)
result: (113.526+-1.13866) ms using 5706 values
press key to exit


Seltsam ist, dass die ersten Paket beim Raknet ping ewig brauchen. Ggf. erklärt das diese hohen Werte. Wenn jemand ne Idee hat, wie man diesesn "Anfanglag" wegbekommt, immer her damit!

Habe die Ausgabe nochmals überarbeitet. Sollte nun deutlicher zu sehen sein, was abgeht.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

13

30.10.2008, 14:30

So weit ich weiß versucht RakNet, Pakete zusammenzufassen und wartet deshalb ein bissl, ob noch weitere Pakete nachkommen, was zu höheren Latenzen führt.

Ich finde allerding den Vergleich RakNet vs. pure TCP etwas unfair, da RakNet ziemlich heigh level im Vergleich zu TCP ist. Besser wäre z.B. enet, was versuch einen möglichst dünnen Reliable/Ordered Layer über UDP zu legen. Allerdings hat man dann immernoch nur einen Vergleich zwischen TCP und ENet und nicht TCP und UDP. Wirklich große Unterschiede sollten bei den Protokollen aber erst dann auftreten, wenn Pakete verloren gegen. Wenn nur 5% der Pakete verloren gehen, steigt der Ping bei TCP schon auf das Vielfache des eingentlichen Wertes an, was z.B. einen Shooter sofort unspielbar macht.

ENET bietet trotz des dünnen Layers einige große Vorteile zu TCP, da man für jedes Paket festlegen kann, ob es reliable und/oder ordered sein muss und auch Ordungsgruppen bestimmen kann, so das zb. Chatnachrichten zueinanderen geordnet sein müssen, allerdings unabhänig von den Positionänderungen des Spielers sind, die aber wiederrum untereinander geordnet sein sollen.

Ein recht guter Arktiel über Netztwerkprogrammierung, der auch kurz auf TCP vs. UDP eingeht ist
http://trac.bookofhook.com/bookofhook/trac.cgi/wiki/IntroductionToMultiplayerGameProgramming
Wer den Artikel nicht lesen will, das folgende Zitat sagt eigentlich alles ;) :

Zitat

As tempting as using TCP sounds, just don't do it. It always, and I mean always, leads to heartbreak in the end for real-time games. Numerous networked games have tried to do the expedient thing on TCP and end up switching to UDP -- often painfully -- later.

Nox

Supermoderator

  • »Nox« ist der Autor dieses Themas

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

14

30.10.2008, 14:56

Da stimme ich dir nicht zu.
RakNet bietet ebenfalls die Option um die Reihenfolge und die Sicherheit abzuschalten. Wenn du dir die Ausgabe wirklich angeschaut hättest, solltest du das hier gesehen haben: "RakNet Pingtest (unreliable". Ob er auch die Reihenfolge achtet, müsste ich nochmal schauen. Das könnte durchaus ein Fehler von mir sein.
Außerdem handelt es sich bei weitem nicht um reines TCP, was eigentlich ein kurzer Blick auf die Quelltextdateien hätte verraten können.
ENet würde ich gerne mit in die in die Testreihe aufnehmen, nur dafür fehlt es mir an Kenntnissen. Ich hoffe daher einen ambitionierten ENet Nutzer zu finden, der ENet mit in den Test integrieren würde.
Die Tatsache mit dem Paketverlust stimmt bedingt, denn auch TCP hat da sehr gute Mechanismen, die man bei UDP entweder mühsam implementieren oder eben auf Netzwerkmodelle ausweichen muss, die mit Verlusten leben können (Quake ist ein sehr schönes Beispiel, wo was anders asl UDP nicht sonderlcih hilfreich wäre).

Und es gibt tausende von den Artikeln, nur keiner nennt harte Fakten! Ich habe hier echte Messergebnisse aus einer Anwendung, die einem Spiel ähnlich ist. Und ich glaube kaum, dass z.B. Blizzard solche Nasenbohrer sind und nur wegen Faulheit TCP nutzen.
Es stimmt das TCP seine Tücken hat. Wer z.B. nicht weiß, dass bei TCP standardsgemäß Nagle aktiviert ist, wird sich über hohe Verzögerungen ärgern ohne zu wissen woher sie eigentlich kommen.

Ich bin es leid ständig die gleichen Theorien ohne wirkliche belege zu hören. Deshalb enstand auch dieses Projekt, um Fakten zu schaffen. Oder liege ich mit meinen Argumenten voll daneben?
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Nox

Supermoderator

  • »Nox« ist der Autor dieses Themas

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

15

05.11.2008, 19:28

Update. Es gibt nun eine GUI welche am Ende ein Diagramm anzeigt. In jedemfall wird am Ende ein Diagramm und die Ergebnisse als Textform gespeichert. Ein Beispiel könnte ihr oben unter den Links finden.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Nox

Supermoderator

  • »Nox« ist der Autor dieses Themas

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

16

29.01.2009, 17:07

Update. Gesamtkonzept ein wenig überarbeitet und per Sourceforge.net onlinegestellt. Würde auch gerne ne Rückmeldung bekommen, ob euch sowas überhaupt interessiert, wie intuitiv die Darstellung ist, ob ihr das für aussagekräfig haltet und was ihr von den Ergebnissen haltet (er glaubt, dass ich da rumfälsche, kann gerne den Source laden und nachprüfen/nachmessen).
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

17

29.01.2009, 17:26

grundsätzlich würde es mich schon interessieren, wie gut einzelne Netzwerklibs sind.
Ob der Geschwindigkeitsvergleich so sinnvoll ist, keine Ahnung, ich meine, Pakete werden immer gleich schnell gesendet (sind in der Leitung gleich schnell), egal wer sie geschickt hat.
Interessant wäre eventuell auch eine Traffic Messung, also welche Lib wie viel sendet, wenn man den verschiedenen Libs gleiche Daten zum senden gibt.

Ansonsten fand ich die bunten Statistikbildchen ein wenig wirr, eine hübsche Zusammenfassung mit Beschreibung der Resultate wäre da Benutzerfreundlicher.
Und naja, dann wäre da noch die Sache, ob du überhaupt alle Libs richtig benutzt, vielleicht benutzt du eine auf einen uneffizienten Weg. Klar, dein Projekt ist opensource und ich könnte es prüfen, aber das ist sehr viel Arbeit und ich müsste sowohl dien Projekt als auch sätmliche verwendeten Libs sehr gut verstanden haben (um beurteilen zu können, ob die effizient benutzt wurden).

Insgesamt würde mich also eher interessieren, wie gut sich unterschiedliche Libs benutzen lassen und ob eine wirklich gravierende Nachteile hat (Komfort, Geschwindigkeit usw.).
Lieber dumm fragen, als dumm bleiben!

Nox

Supermoderator

  • »Nox« ist der Autor dieses Themas

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

18

29.01.2009, 18:10

Naja es gibt schon unterschiede in der Geschwindigkeit. Die Zusammenfassung befindet sich in den txt Dateien (ganz am Ende). Vielleicht sollte ich die Reihenfolge nochmal ändern. Der Traffic lässt sich leider nicht so ohne weiter messen, aber du kannst den Traffic ja einfach per Taskmanager nachverfolgen :).
P.S.: Leider habe ich keine Idee, wie ich das mit dem Arbeitsaufwand zum Überprüfen minimieren kann (wohl garnicht).
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Beneroth

Alter Hase

Beiträge: 969

Wohnort: Schweiz

Beruf: Software Entwickler

  • Private Nachricht senden

19

31.01.2009, 13:41

wie wäre es mit einem Proxy dazwischenschalten? bremst halt bisschen, aber so könnte man vielleicht schöner messungen rauskriegen..

Nox

Supermoderator

  • »Nox« ist der Autor dieses Themas

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

20

31.01.2009, 14:53

In wiefern schöner? Die Testergebnisse von den Diagrammen habe ich mit Hilfe eines Rootservers erstellt. Sprich mein PC über Kabel am Router schickte Pakete an den Rootserver auf welchem dann die Server liefen und die Pakete wieder zurückschickten. Das Programm errechnet die benötigte Zeit und speichert diese.

Edit: meinst du wegem dem Traffic? Besser wäre eine "all-in-wounder" Lösung, denn es sollte möglichst einfach gehalten werden, sodass jeder die Tests selbst durchführen kann ohne vorher einen kleinen Netzwerkparkour aufbauen zu müssen.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Werbeanzeige