Server/Client Struktur Multiplayer

c_sidi90

Top Contributor
Kennt jemand einen guten Artikel oder Tutorial für eine Client/Serverstruktur für ein Online/Netzwerk Multiplayer Spiel? Ich benötige dringend Informationen, welche Aufgaben vom Server übernommen werden und welche vom Client. Welche Vorgehensweise ist üblich, Zeichenoperationen auf der Clientseite vorzunehmen, welche vom Server gesendet werden?

Lg
 
Zuletzt bearbeitet:
Y

yyannekk

Gast
Prinzipiel würde ich sagen ist der Server für die Spiellogik zuständig, d.h. der Client sendet seinen Input an den Server, dieser berechnet die aktuelle Situation und schildert Veränderungen dem oder den Clienten. Jeder Client für sich entscheidet dann was bei ihm gezeichnet wird. So in etwa mache ich es zumindest.
Der Client könnte noch die Aufgabe übernehmen temporär selber die Position der eigenen Spielfigur auszurechnen (um sie später gegebenenfalls zu korrigieren, falls der Server etwas anderes berechnet hat), damit man nicht immer warten muss bis die Daten beim Server ausgewertet sind (sagen wir du drückst bei dir eine Taste, bis der Server das ausgewertet und zu dir zurückgesendet hat vergeht halt ne Weile, wenn du deine Figur dann immer erst zeichnen würdest wenn die Daten vom Server zurückgekommen sind, hast du ein Performance Problem)

Dann würde ich sagen kommt es drauf an ob dein Spiel rundenbasiert oder in Echtzeit ablaufen soll. Rundenbasiert ist relativ einfach. Client der dran ist macht Eingabe --> Daten an Server ----> Berechnen ---> Daten senden an alle Clienten... Warten auf Eingabe von nächstem Clienten....

Wenns in Echtzeit ablaufen soll ist es komplizierter, da müsste man sich nochmal genau überlegen wie die Synchronisation abläuft.
 

c_sidi90

Top Contributor
Danke schonmal für deinen Beitrag. So waren auch meine ersten Gedankengänge, ich hoffe jedoch das noch weitere Vorschläge kommen da ich es von beginn an richtig machen möchte.

Das spiel habe ich damals in c++ geschrieben und bin gerade dabei es in Java zu portieren. Es ist Echzeit Rpg/Shooter in 3D, hatte mich da bisschen an Fallout angelehnt, zumindest von der Idee, nicht der Grafik ;)
 

babuschka

Top Contributor
Kennt jemand einen guten Artikel oder Tutorial für eine Client/Serverstruktur für ein Online/Netzwerk Multiplayer Spiel?
Schau Dir mal die Bücher "Game Engine Architecture" und "Game Programming Gems" an - einfach in der Bücherei Deines Vertrauens nachfragen, vielleicht kannst Du sie dort leihen.

Ich benötige dringend Informationen, welche Aufgaben vom Server übernommen werden und welche vom Client
Meine persönlichen Erfahrungen als Spieler/Spiel-Administrator und Hobby-Spieleprogrammierer:

Bei Shootern ist ein Multiplayersystem natürlich besonders schwierig, da eigentlich alle Lösungen ihre Nachteile haben - besonders bei höheren Latenzzeiten. Prinzipiell wird die Grafik auf den Clients ausgeführt, währenddem die Spiellogik auch auf beiden Instanzen laufen kann/muss. Wichtig ist auch, dass Du auch ein Entity-System hast, das eine einfache Netzwerkunterstützung zulässt! Wenn die Gesamtarchitektur das nicht zulässt wird das mit dem Netzwerk wohl nie was werden...

Besonders oft verwendet werden client- und serverseitige Interpolation der Objektpositionen, allerdings eher selten in Reinkultur sondern eher in Mischformen.

Findet eine Clientseitige Interpolation statt, so verwalten die Clients selbst ihre Positionen und der Server validiert diese ggf. Die Logik läuft nur auf dem Client bzw. optional auch auf dem Server.
Diese Architektur alleine ist jedoch eher weniger für schnelle Spiele wie Shooter geeignet.
Weiterhin ist hier das Cheaten (->Flyhack, Wallhack und sonstige Sauereien :eek:) hier wesentlich einfacher, ausserdem "laggen" Spieler mit höheren Pings für alle anderen Spieler - je nach Ping ist es dann für andere Spieler beinahe unmöglich, den "Lagger" zu treffen, da dessen Position und Bewegung nie konsistent, sondern sprunghaft dargestellt werden.:noe:.

Bei einer serverseitigen Positionsinterpolation kontrolliert der Server sämtliche Objektpositionen und sendet diese an die Clients. Hier kann das Spiel jedoch für alle Spieler unspielbar machen, da bei hohen Pings ständig ihre Positionen korrigiert würden - ein Problem, das man auch in teureren und gut bekannten Spielen leider auch oft sieht.

Ideal wäre wohl eine Mischung der beiden Methoden, in der die Clients ihre Position selbst interpolieren und nur bei zu großen Abweichungen ihre Position korrigieren. Spielentscheidend ist dann die Position der Objekte auf dem Server.

Außerdem musst Du Dir Gedanken über die Art der Kommunikation ("Ich öffne die Kiste A an X|Y|Z" statt "Ich nehme eine Billiarde Dollar aus einer Kiste" - auch oft gesehen:noe:) und eine Prüfung der Konsistenz der Dateien machen - sonst kann jeder Spieler z.B. die Grafikdateien verändern und so z.B. Spielerpositionen herausfinden (->Aimbots) Wände durchsichtig/passierbar machen oder Spielern eine andere Farbe geben, ohne dass dies je bemerkt würde... Letzten Endes wird es allerdings immer Cheater geben, deshalb solltest Du neben einer wirksamen Anticheatmethode auch ein Administrationssystem einführen, sodass sich Administratoren um die lästigen Cheater kümmern können.

Wie Du siehst: es ist ein sehr weites Feld, in dem man vermutlich einige Doktorarbeiten schreiben kann...
 

c_sidi90

Top Contributor
Klasse! Ich danke dir sehr für deinen ausführlichen Beitrag! Das das ein größeres Themengebiet ist war mir klar, denke mal ich bin da auch mindestens 1 Jahr mit beschäftigt. Das Spiel im Singleplayer hatte zu 3. schon 2 Jahre gedauert :p Werde versuchen alle Wege zu analysieren und einen brauchbaren Mittelweg rauszufiltern. Für weitere Tipps von euch wäre ich dankbar!
 

Massenhaft

Mitglied

c_sidi90

Top Contributor
Sehr interessantes Lesematerial, danke dir dafür. Ich denke ich werd es genauso machen, und die Clients zum großteil nur fürs Rendering benutzen und die gesamte Logik vom Server bewältigen lassen. Leider hatte ich zu Beginn genau den anderen Weg eingeschlagen und muss nun vieles ändern. Hatte sich allerdings immer mehr als Deadend ergeben das ganze :lol:
 

Kr0e

Gesperrter Benutzer
Vieles wurde ja bereits gesagt... Als letztes vlt noch der Tipp, dass es bereits fertige Gameengines wie jME3 gibt, wo auch schon was zum Netzwerk angeboten wird.

Ansonten gibt es RedDwarf, was ein OpenSource GameServer ist (in Java natürlich). Ausgelegt für RPGs oder ähnlcihes. Project Wonderland läuft darüber...

Ich persönlich würde es vermutlcih aber selbst machen, einfach weils Spaß machjt :p

Gruß,

Chris
 

c_sidi90

Top Contributor
Ich persönlich würde es vermutlcih aber selbst machen, einfach weils Spaß machjt :p



Chris

Da wir das ganze Spiel auch selbst geschrieben haben ohne andere Frameworks würden wir es auch gerne selbstschreiben. Danke für dein Tipp werden uns den Source mal anschauen und eventuell einige Sachen daraus gebrauchen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G [Game-Multiplayer] Welt vom Server zum Client senden. Spiele- und Multimedia-Programmierung 0
H Client-Server-Kommunikation Spiele- und Multimedia-Programmierung 9
M Browsergame Client Server Spiele- und Multimedia-Programmierung 4
F Meine Aufgabe: Client-Server am Beispiel einer Implementation eines Tic-Tac-Toe Netzwerkspieles Spiele- und Multimedia-Programmierung 7
T Selbst-handelnde Objekte im Client-Server Betrieb Spiele- und Multimedia-Programmierung 9
T Kartenspiel mit Server Client Funktionen Spiele- und Multimedia-Programmierung 3
R Client/Server Spiele- und Multimedia-Programmierung 5
S Minecraft Server Status Abfragen Spiele- und Multimedia-Programmierung 9
Lord_Joker Minecraft Server Bat error Spiele- und Multimedia-Programmierung 2
N Minecraft Frage für einen Minecraft Server Spiele- und Multimedia-Programmierung 2
Joris Minecraft Minecraft Java Server Spiele- und Multimedia-Programmierung 6
Shanic Minecraft Minecraft Forge Server "Falsche Java Version" Spiele- und Multimedia-Programmierung 6
JeremyStarTM Minecraft Minecraft Spigot Server akzeptiert JAR-Version nicht Spiele- und Multimedia-Programmierung 8
L Minecraft 1.7.10 Server startet nicht Spiele- und Multimedia-Programmierung 1
T Minecraft Minecraft-Server pingt lange Spiele- und Multimedia-Programmierung 3
G [Java Server] Allgemeine Frage zum Thema Networking in Videospielen Spiele- und Multimedia-Programmierung 15
ZoXlike Audio Server selbst erstellen Spiele- und Multimedia-Programmierung 11
U Minecraft Mit Java auf Minecraft Server anmelden Spiele- und Multimedia-Programmierung 11
A Minecraft Java Ubuntu Minecraft Server startet nicht - ERROR (SIGSEGV) Spiele- und Multimedia-Programmierung 7
R Minecraft Minecraft läuft nicht paralel mit minecraft server ? Spiele- und Multimedia-Programmierung 3
D Minecraft Spieleranzahl von Minecraft Server abfragen Spiele- und Multimedia-Programmierung 8
M Minecraft Bukkit Server VM Kann nicht Vergrößert werden Spiele- und Multimedia-Programmierung 20
C Minecraft Minecraft-Programm: Server anpingen Spiele- und Multimedia-Programmierung 2
Kr0e Red Dwarf Game Server Spiele- und Multimedia-Programmierung 5
R Minecraft Minecraft Server Spiele- und Multimedia-Programmierung 20
T Radio/TV-Server Spiele- und Multimedia-Programmierung 3
Dit_ Server Monitor [Quake III] Spiele- und Multimedia-Programmierung 20
A Visuell darstellen ob Server verfügbar Spiele- und Multimedia-Programmierung 2
G Server und java Spiele- und Multimedia-Programmierung 3
ThoraxLaneus Minecraft MCP-Client mit Optifine fertig machen in IntelliJ klappt nicht ganz Spiele- und Multimedia-Programmierung 6
W Minecraft Client exportieren Spiele- und Multimedia-Programmierung 0
Z Minecraft Hilfe bei Minecraft PvP Client Spiele- und Multimedia-Programmierung 21
D JAVA Basiertes Spiel aus dem Internet in eigenem Client laden Spiele- und Multimedia-Programmierung 1
C Port umleiten: lesen und schreiben für MCServer-Client über Skype Spiele- und Multimedia-Programmierung 0
M Multiplayer Game mit Frontend auf HTML5 - ohne ständigen Client Request - Möglich?! Spiele- und Multimedia-Programmierung 12
L Client für ein Browsergame Spiele- und Multimedia-Programmierung 21
S Game Client für kleine Competition Spiele- und Multimedia-Programmierung 3
A Wie JAVA Webcam Client programmieren? Spiele- und Multimedia-Programmierung 11
Sogomn Struktur Spiele- und Multimedia-Programmierung 2
M Risiko - Struktur sinnvoll? Spiele- und Multimedia-Programmierung 8

Ähnliche Java Themen

Neue Themen


Oben