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

1

08.08.2008, 20:29

Netzwerk Bibliotheken im Vergleich

[Update am 20.02.10, neue Version/Ergebnisse]
Hi,

Das Projekt richtet sich sowohl an Netzwerkunerfahrene als auch an Personen mit Netzwerkerfahrung.


Kurzinfos:
- Es geht um einen direkten Vergleich von verschiedenen Netzwerk-Libs
- unterstützte Libs: RakNet (UDP), ENet(UDP), Zoidcom(UDP), irrNetLite(UDP) und eine Eigenentwicklung syncsys(TCP)
- interessante und noch nicht unterstützte Libs: OpenTNL
- Es gibt zwei Testarten (Pingtest und Synctest)
- Dieses Projekt soll Fakten liefern, die bei der Diskussion (UDP oder TCP Lib und vorallem welche Lib) fehlen


Beschreibung:
Diese Anwendung soll einen direkten Vergleich verschiedener Netzwerklibs (sowohl UDP als auch TCP) ermöglichen, um so den "Endnutzern" eine auf Fakten und Messdaten gestützte Entscheidungsgrundlage zu liefern.
Es gibt zwei grundlegende Testarten. Bei der einen handelt es sich um einen einfachen Pingtest (Paket einmal hin und wieder zurück). Bei der anderen (dem Synctest) wird eine bestimmte Anzahl an Instanzen von einem Testobjekt erstellt und der Server von Client in bestimmten Abständen dazu aufgefordert zufällige Änderungen an den Instanzen vorzunehmen und diese dann an den Client zu übermitteln. Dies soll das Geschehen einer Server-Client Systems widerspiegeln.
Um sowohl Einblick in die eigentliche Tests zu geben als auch ein einfaches Testen zu ermöglichen, stelle ich einerseits den Source und andererseits schon fertige Anwendungen zur Verfügung.
Der Client wird über die config.lua konfiguriert. Was man alles einstellen kann, sollte in der config.lua stehen (falls was fehlt, bitte Nachricht an mich).
Die Tests soll Aussagen über Performance der Anwendungen, Traffic bzw. Overhead und Latenz. Wichtig ist vorallem, dass sich jeder seine Meinung selbst bilden sollte!

Links:
http://networklibsbenc.sourceforge.net/

Ein paar Testergebnisse:
http://apps.sourceforge.net/gallery/netw…sbenc/index.php

Aufruf:
Fall jemand mit Kenntnissen zu Zoidcom, RakNet, ENet oder anderen Netzwerklibs besitzt und Zeit sowie Interesse hätten, eine der Libs in den Test zu integrieren bzw. besser einzubinden, bitte ich darum, dass sich derjenige bei mir meldet.

Für Anmerkungen/Verbesserungsvorschläge bin ich gern zu haben (wobei ich nicht garantiere, dass ich sie verfolgen werde :) ).
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.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Nox« (20.02.2011, 13:36)


Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

2

09.08.2008, 10:59

Randbemerkung: ID_USER_PACKET_ENUM + 1 ist überflüssig, du schmeisst damit eine ID weg.

Zitat von »"raknet/MessageIdentifiers.h"«

// For the user to use. Start your first enumeration at this value.
ID_USER_PACKET_ENUM,

Nox

Supermoderator

  • »Nox« ist der Autor dieses Themas

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

3

09.08.2008, 12:47

Ähm jo...ich hätte auch von Hinten anfagen können zu zählen :lol: Ich will mal sehen, ob ich das ganze nicht auch auf Linux portiert bekomme und für den Synctest bei Raknet noch die Kompression einbaue, damit das fairer abläuft.

P.S: Übrigens geht es mir darum zu zeigen, dass TCP durchaus auch für schnelle Spiele geeignet ist. Natürlich gibt es einige Szenarien, wo UDP deutlich besser geeignet ist (Musterbeispiel Quake3 Netzwerksystem), aber ich glaube, dass UDP häufig falsch eingesetzt wird.
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.

xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

4

09.08.2008, 13:34

Zitat von »"Nox"«

P.S: Übrigens geht es mir darum zu zeigen, dass TCP durchaus auch für schnelle Spiele geeignet ist. Natürlich gibt es einige Szenarien, wo UDP deutlich besser geeignet ist (Musterbeispiel Quake3 Netzwerksystem), aber ich glaube, dass UDP häufig falsch eingesetzt wird.

Hm.. warum glaubst du das? UDP sollte wesentlich weniger Overhead haben, da es ohne Verbindungsorientierung und mit weniger Sicherungen auskommt. Dafür ist die Reihenfolge und Ankunft der Pakete nicht garantiert.

Also eigentlich ziemlich Ideal für Anwendungen wo die Latenz wichtiger ist als die Sicherheit der Daten, und ich denke "unwichtige" Informationen aus Netwerkspielen wie Positionsdaten, Blickrichtung oder so gehören dazu. Da isses egal ob zwischendurch mal ein Paket verloren geht.
Das macht natürlich keinen Sinn mehr wenn man UDP Nutzt und darauf dann eine Sicherungsschicht selbst implementiert.. dann kann man gleich TCP benutzen.

Ich beziehe mich da jedoch weniger auf Erfahrungswerte als auf theoretische Überlegungen. Daher bin ich wirklich mal gespannt auf deine Ergebnisse.

Nox

Supermoderator

  • »Nox« ist der Autor dieses Themas

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

5

09.08.2008, 17:10

Die kann sich jeder mit diesen Testapplikationen selbst holen :) . Ich könnte natürlich auch einfach mal Ergebnisse hier reinstellen. Natürlich ist Raknet nicht gleich UDP, allerdings wundert es mich, dass viele UDP indirekt missbrauchen.
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.

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

6

09.08.2008, 17:12

Was meinst du mit "missbrauchen"? Rak.net baut ja, wenn es dazu aufgefordert wird, auch noch ne ganze Menge Overhead mit ein (Sortierung, Verläßlichkeit, Verschlüsselung).

Nox

Supermoderator

  • »Nox« ist der Autor dieses Themas

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

7

05.10.2008, 19:19

So. Nach langer Pause mal wieder was neues. Also die bisherigen Testergebnisse haben nicht wirklich für Raknet gesprochen. Allerdings möchte ich mich nicht aus den Fenster lehnen, weil ich ehrlich gesagt ein Raknetneuling bin.
Raknet zeigte bei mir bei großen Paketen oder Leitung mit schlechten Übtertragungsraten eher schlechtere Ergebnisse als die TCP lib. Auch wenn man Sachen wir Verläßlichkeit deaktiviert, ist der Datenverkehr augenscheinlich höher als bei TCP! Nun ist Raknet aber nicht das gleiche wie UDP. Daher habe ich folgendes geplant, ehe man von endgültigen Ergebnissen sprechen kann:

-einbauen von Diagrammen um Ergebnisse besser darstellen zu können
-GUI für leichtere Bedienung
-Aufnahme von ENet in den Test

Dafür könnte ich durchaus Hilfe gebrauchen. Wenn es also jemanden gibt, den das Thema Netzwerk im Allgemeinen interessiert und der sich mit GUI, plotten von Diagrammen, Raknet und/oder ENet auskennt oder damit mal was amchen möchte. Kann er sich gerne bei mir melden. Wäre für jede Hilfe dankbar. Dachte daran, dann die TCP-lib + die Testumgebung unter zlib-Lizenz auf sourceforge.net oder so ähnlich bereit zu 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.

8

05.10.2008, 19:47

Zitat

Dieses Projekt soll Fakten liefern, die bei vielen Diskussionen fehlen

Wie lautet denn die Fragestellung(en)? Latenz ist nur bedingt protokollabhaengig, Traffic und Overhead sind sehr unspezifisch. Man koennte ja die Headergroesse ausrechnen und vergleichen.

Nox

Supermoderator

  • »Nox« ist der Autor dieses Themas

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

9

05.10.2008, 21:31

Die Fragestellung lautet:
Wie verhält sich welche Lösung bei vorgegeben Parametern wie Anzahl Pakete pro Zeitintervall und reine Arbeitslast an Bytes pro Paket in Hinsicht auf Latenz, Auslastung der Leitung, Auslastung anderer Ressourcen wie Speicher sowie Rechenzeit und benötigter Gesamtzeit.

Dabei geht es nicht darum eine Lösung als non-plus-ultra darzustellen, sondern fest zustellen, welche Lösung für welchen Fall am besten geeignet ist.

P.S. es geht um einen Vergleich der Anwendungschicht und nicht was theoretisch sein sollte. Sprich die Lib bekommen einfache Aufgaben, wie man sie als Anwender stellt (z.B. sende ein Paket mit 10 MB oder sende 20 Pakete pro Sekunde mit 100 bytes oder auch Highlevelaufgaben wie das Synchronisieren von mehren Objekten).
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

10

07.10.2008, 09:02

interessant, mach weiter Nox! :)

Werbeanzeige