Also eigentlich sollte das ohne Probleme funktionieren. Ein Multiplayer Spiel ist ja nichts anderes als ein Singleplayer Spiel das auf mehreren PCs gleichzeitig läuft. Über Lan oder Internet werden nun Pakete ausgetauscht, die die aktuelle Position der beweglichen Entities representieren. Jeder der PCs bewegt die Entities auf die gesendeten Positionen und so sieht es nun aus als würden alle im selben Level rumlaufen. Sprich auf allen Rechnern sind alle Entities auf der gleichen Position (zumindest theoretisch, durch den Ping ist es nicht immer so) und das Level sieht auf allen Rechnern gleich aus. Obwohl es ja in Wirklichkeit lauter einzelne voneinander unabhängige Levels sind die sich absolut nicht von Leveln im Singleplayer unterscheiden. Nur durch das austauschen der Entitypositionen bleiben die Levels synchron.

D.h. du kannst garantiert alle Funktionen wie bisher nutzen. Zusätzlich hast du die Möglichkeit etwas übers Internet/Lan zu senden um die Level synchron zu halten bzw. werden manche Dinge von der Engine automatisch synchron gehalten.

Ok so viel zur Multiplayer Theorie. Ob es intelligent ist c_scan() auf den Clients oder auf dem Server auszuführen kommt auf den Anwendungsfall an. Wenn du z.B. die Explosion eines Raketenwerfers abscannen willst ist es wichtig dies am Server zu tun. Denn dann haben 1) alle Spieler die selben Chancen (da die Spielerpositionen wegen lags nicht auf allen PCs gleich sein müssen) 2) ist es cheatsicherer da ein "böser Bub" hergehen könnte und den Clientcode seines Spiels manipulieren. D.h. der scan wird auf seinem PC durchgeführt und obwohl nichts getroffen wird schickt er ein Paket bei dem z.B. drinnen steht: "Mein Scan hat ergeben, dass ich alle Spieler getroffen habe." Schon hat er einen ultimativen Cheat und ist unaufhaltsam ^^

=> Eine große Regel beim MP programmieren ist: Spielrelevante Dinge wie Schadensberechnung, Schusserkennung (wo hat ein Schuss getroffen),... am Server durchzuführen. Die Clients bekommen dann nur die Resultate zugesendet.
Spielunrelevante Dinge die z.B. nur für "Schönheits Effekte" verwendet werden können bzw. sollten sogar auf den Clients ausgeführt werden, da sonst der Traffic zu hoch wird.

Ok jetzt bin ich zwar ein wenig abgewichen vom eigentlichen Thema aber ich wollte dir nur verdeutlichen warum es wichtig ist im vorhinein zu überlegen ob man etwas am Server oder am Client durchführt.


ANet - A stable and secure network plugin with multi-zone, unlimited players, voip, server-list features,... (for A7/A8)!
get free version