Ich habe einmal versucht, ein einfaches Spiel mit UDP in einer Woche als Wegwerftest zu schreiben. Es ist schrecklich gelaufen.
Ich habe es früh weggeworfen. Das Hauptproblem, das ich hatte, war, den Spielzustand aller Spieler / Feinde / Objekte in einen alten Zustand zu versetzen und das Spiel bis zu dem Zeitpunkt vorzuspulen, an dem der Spieler spielt (dh eine halbe Sekunde vor einem Sprung. Ein wenig früh oder spät kann den Spieler den Sprung verpassen lassen)
Vielleicht ist diese Methode nicht der einfachste Weg? Ich vermute es, aber ich habe es von Anfang an falsch entworfen und am Ende des 2. Tages realisiert. (also habe ich nicht zu viel gelernt oder so viel Zeit verschwendet)
Was gehört für mich und andere zu einem einfachen UDP-Spiel und wie schreibe ich eines? Oder wie löse ich das Vorhersageproblem, das wieder herstellt, um richtig festzusetzen.
Ich werde dies als CW markieren, da ich weiß, dass es viele hilfreiche Antworten geben wird.
quelle
Eigenes Rolling kann lehrreich sein, aber Sie erhalten oft mehr Erfolg, wenn Sie eine vorhandene Implementierung nutzen können (oder zumindest von dort aus starten).
Ich habe sowohl ENet als auch Raknet verwendet . Ich habe Enet nur in einem einfachen Spiel verwendet, aber es hat getan, was ich brauchte. Enet verwendet eine niedrigere API-Ebene als Raknet. Raknet wurde in einem größeren Projekt eingesetzt. Raknet ist extrem leistungsfähig, möchte Sie jedoch dazu bringen, Ihr Spiel nach Raknets Framework zu strukturieren.
Enet:
Raknet:
quelle
Wenn Sie Zeit und Energie haben, können Sie die Quake 3-Quelle herunterladen und studieren. Es ist ziemlich leicht zu verstehen, ob Sie mit C vertraut sind, und ebenso leicht, daran zu basteln.
Welche anderen Multiplayer-Spiele haben Quellcode und verwenden UDP?
quelle
Wenn Sie (wie ich) nach Hause gehen, werden Sie viel lernen - auch über Dinge, die Sie nicht wissen wollten. Wie NAT Traversal. Laut caspin hat Enet das verpasst, aber man konnte immer Open-Source-STUN-Code finden, der in den meisten Situationen funktioniert.
quelle