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

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

11

25.02.2015, 09:02

Nu stell dich nicht so an, UDP ist gar nicht so furchtbar ;). Du kannst auch letztendlich mit UDP verlässlich, in richtiger Reihenfolge senden. Lidgren implementiert das. Ob das nun sinnvoll ist und man dafür nicht lieber TCP/IP benutzt ist natürlich eine andere Frage.
Daher kenne ich es so, dass mittlerweile ein hybrider Ansatz gewählt wird. Für Kommandos zum Server TCP/IP, für Updates des Spielzustandes vom Server: UDP. Leider findet man im Detail nicht so heraus, was die Profis machen.

Klar spart TCP viel ärger, aber UDP hat genauso seine Daseinsberechtigung. Letztendlich lese ich auch viel (und kann es aus eigener Erfahrung bestätigen), dass die Verlustrate ziemlich gering bei UDP in der Regel ist. Ich würde sogar ziemlich sicher annehmen, wenn du auf UDP-Ebene sehr viel Verlust hast, dann wirst du auf TCP/IP Ebene kaum das Problem lösen, sondern ziemlich lästige Latenzen haben - was natürlich zu beweisen wäre!

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

12

25.02.2015, 10:12

*murmelt was von signatur, benchmark und so*
Mal ehrlich. Beim Thema Netzwerk gibt es extrem viel Unwissen und Glauben. So sind viele z.B. Latenzprobleme von TCP auf das Nagle-Ack Problem zurückzuführen. Natürlich gibt es hickups, wenn Pakete verloren gehen und man sie aber sortiert haben will. Da ist es egal ob selbst implementiert oder mitgelieferte Streamlogik. RakNet war übrigens früher mal ziemlich schlecht im TCP imitieren (hat die Übertragungsrate soweit erhöht, dass es die Verlustrate unakzeptabel erhöhte und daraufhin drosselte-Sägezahnverhalten war angesagt).
UDP ist z.B. super in Verbindung mit dem Quake Netzwerkmodell. Wer aber UDP nutzt und jede Nachricht einzeln mit Reliable/Nonreliable/Inorder/outoforder verschickt, verändert übrigens das Verhältnis von Overhead zu Payload sehr ungünstig. Auch gibt es zwar viele "Experten" die von TCP abraten, aber andererseits nutzt Blizzard seit Jahren TCP und die halte ich für keine Nasenbohrer. Andere Spiele nutzen P2P und UDP mit wunderbaren Folgen wie OutOfSync.
Wie sooft gilt die Devise nicht meinen sondern testen,testen,testen (siehe z.B. meine Signatur). Allerdings müsste man bei meinem Benchmark sicherlich mal die Bibs aktualisieren. Habe die letzten Jahre nichts mehr dran gemacht.
Verlustrate der Pakete ist übrigens in guter Näherung unabhängig von UDP/TCP. Ausnahme: Router (also die großen) die TCP Pakete priorisieren und mit automatischer Neusenden-Funktion, die es angeblich geben soll.
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.

Nimelrian

Alter Hase

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

13

25.02.2015, 23:39

Ich rall das nicht ganz. PC Only ist free aber das schliesst ja nicht Commercial aus, aber Commercial supported nicht PC.

"Free platforms plus XBOX 360, XBOX One, PS3, PS4, Vita"
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

eXpl0it3r

Treue Seele

Beiträge: 386

Wohnort: Schweiz

Beruf: Professional Software Engineer

  • Private Nachricht senden

14

26.02.2015, 00:15

Wie bereits erwähnt wurde, kann ich dir ebenfalls SFNUL empfehlen. Mit den eingebauten SyncedObject, SynchronizerServer, SynchronizerClient, etc. kannst du sehr einfach und schnell zu einem guten Resultat kommen.

Wenn du natürlich so paranoid wie die meisten hier bist, dann bleibt dir nichts anders überig als angefangen mit Sockets bis hin zur De-/Serialisierung alles selbst zu implementieren. :D

Nein mal ehrlich, skaliert doch mal bitte eure Diskussion auf die Vorgaben hier im Thread, anstatt immer mit allen möglichen Dingen zu vergleichen. Es ist kein FPS, keine Spiel bei welchem es um Millisekunden geht und es soll vorerst im LAN funktionieren. UPD oder TCP spielt hier gar keine Rolle...
Blog: https://dev.my-gate.net/
—————————————————————————
SFML: https://www.sfml-dev.org/
Thor: http://www.bromeon.ch/libraries/thor/
SFGUI: https://github.com/TankOs/SFGUI/

15

26.02.2015, 07:48

@BlueCobold: Danke! Das Geseier zu TCP erinnert mich immer daran, dass C++ die einzig wahre Programmiersprache für Spieleprogrammierung sein soll.

Wie Nox schon erklärt hat, ist man mit TCP oft auch sehr gut beraten... Das "ganze Internet" ist schließlich darauf optimiert.

ExCluSiv3

Frischling

Beiträge: 61

Wohnort: Düsseldorf

Beruf: Fachinformatiker - Ausbildung

  • Private Nachricht senden

16

26.02.2015, 09:49

Im Grunde empfehle ich dir aber Raknet muss ich sagen. Aber du solltest dir die
http://www.jenkinssoftware.com/pricing.html
auf jedenfall vorher durchlesen.

Ich rall das nicht ganz. PC Only ist free aber das schliesst ja nicht Commercial aus, aber Commercial supported nicht PC.
Nur ist die Website nicht mehr aktuell, die wurde nach übernahme durch Oculus nicht aktualisiert, die Lizenz hat sich geändert.

Tobiking

1x Rätselkönig

  • Private Nachricht senden

17

26.02.2015, 10:27

Nur ist die Website nicht mehr aktuell, die wurde nach übernahme durch Oculus nicht aktualisiert, die Lizenz hat sich geändert.

Ändert die Lizenz denn überhaupt etwas an der Tabelle? Die Free Version ist jetzt zwar Open Source, aber Support wird wohl weiterhin kosten und der Quellcode für Konsolen ist weiterhin closed source und wird es wohl auch bleiben.

Werbeanzeige