Sollte ich UDP oder TCP für meine minecraft-Stil-Spiel?
Ich bin erstellen einer 2d-minecraft-Stil-Spiel, wo die Karte gespeichert ist, in ein 2-dimensionales int-array.
Sie können und zerstören die Blöcke und die ki-gesteuerten Charaktere zu Fuß rund um die Karte.
Das Spiel ist mit xna/c#.
Das problem ist, dass ich nicht viel Erfahrung Codierung vernetzte Spiele.
Welches Protokoll soll ich verwenden? UDP, TCP? Oder vielleicht die lidgren-Bibliothek? (verwendet UDP + Zuverlässigkeit)
Sollte ich folgende Dinge getan werden, auf dem client, server oder auf beiden?
- ai/Wegfindung
- Kollisionserkennung
Außerdem ist es gute Praxis zu senden zerstören und blockieren von Nachrichten auf den server?
Ich denke, dass, wenn der client gestartet wird, muss es zunächst tot download der Karte. Und dann änderungen an der map gemacht werden, paralell zu den Karten auf den clients und auf dem server....
Schließlich sollte ich broadcast die Positionen der Zeichen nur, wenn Sie sich ändern (tendenziell TCP) oder soll ich Sie ständig senden, Sie (tendenziell UDP)?
Jede Hilfe ist nützlich 🙂
Vielen Dank im Voraus.
PS: sorry für die schlechte Qualität meines Deutsch (ich bin Holländer)
- TCP ist langsamer, UDP schneller ist. Auch TCP ist garantiert und UDP nicht. Also basierend auf was deine Prioritäten sind, sollten Sie Wiegen die Unterschiede.
- Halten Sie daran, dass abgesehen von der Zuverlässigkeit Frage diskutiert, UDP stellt auch NAT-traversal-Probleme. Sie müssten Techniken wie UDP Stanzen etc.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich das Gefühl, als wenn der thread unten hat ein paar nette Informationen, die nützlich für Sie sein wird. Wie AmitApollo sagte, in einer nussschale ist UDP schneller, aber weniger zuverlässig. Wenn Sie alle Ihre Informationen, die Sie senden über das Netzwerk ist unabdingbar, dann TCP ist vielleicht die beste Umsetzung. Sie könnten immer versuchen beide und sehen, welche Arten von performance/Latenz trifft, die Sie haben. Im Allgemeinen sind die meisten schnell-geschrittenen - /Echtzeit-Spiele, die ich gelesen habe, bis auf haben verwendet UDP.
Android-Spiel UDP /TCP?
Alles sollte überprüft werden, indem Sie den server so, dass das Spiel nicht hackable oder veränderbar; entweder durch ändern der Speicher-Adressen oder eine andere Schwachstelle.
Beide KI/pathfinding und collision sollten validiert werden, indem der server jedoch unter Verwendung von TCP für beide würde dazu führen, Staus, weil der handshake und Fenster overhead. MMO ' s heute UDP-Pakete mit der kundenspezifischen Kontrolle bei Netzüberlastung und Händeschütteln. Als eine erste version, die Sie sollten einfach mit einem UDP-Paket - wenn Pakete verloren gehen oder gelöscht werden, in der übertragung das Spiel wird einfach
lag
und einfrieren, bis ein UDP-Paket kommt durch. Spätere Versionen des Spiels konnte der Implementierung einer benutzerdefinierten Anerkennung setup mit UDP, so dass der Charakter pausiert, bis validiert.Diese stellt sicher, dass jede Bewegung der Charaktere gültig sind. Sie müssen auch Schlüssel-oder Protokoll-Sicherheit, so dass nicht nur jeder kann senden, Koordinaten zu validieren.
Kann man das design lag Ihr Spiel, aber wenn Sie richtig ausgelegt ist, wird es sicher sein und frei von client-side-hacking. Denken Sie daran Ihre design-UDP-Pakete so klein wie möglich (size-wise).