Spielserver funktionsweise

DexXxtrin

Erfahrenes Mitglied
Hallo zusammen

Ich interessiere mich für die Spieleentwicklung für Smartphones. Genauer für Mehrspieler Spiele.
Da ich leider keine Ahnung habe, nach was ich dabei suchen muss, stelle ich die Frage hier.
Mir ist nicht ganz klar, welche Aufgaben ein Spielserver übernimmt, bzw. welche Daten dabei kommuniziert werden und wie.

Konkretes Beispiel: Ich möchte ein Schiffeversenken programmieren, bei welchem man auch gegen andere Spieler spielen kann.
Dabei soll man in einer Liste die verfügbaren Spieler sehen und einen anfragen können.
Nun stelle ich mir das so vor, dass das Spiel den Username (und weitere Daten zB: IP) dem Server schickt, damit dieser den Spiel in die Liste aufnehmen kann.
Wenn ein Spieler nun gegen einen anderen Spieler spielen möchte, werden diese beiden Spieler miteinander verbunden, allerdings wie?
Und wie werden die Daten dann übertragen (Spielzüge usw.), so dass diese nicht manipuliert werden können?

Hoffe man versteht was ich meine.
Nützliche Links oder Infos zu diesem Thema sind sehr Willkommen.

Gruss DexXxtrin
 

xamunrax

Erfahrenes Mitglied
Die meisten Server sind in C/C++/C# programmiert.
Wenn du Einsteiger bist wäre evtl. NodeJS etwas für Dich. Hole dir einfach einen Server (z.B. bei digitalocean) und schreibe eine kleines Server-Script.
Für Dein Beispiel wäre NodeJS + SocketIO nötig, SocketIO ist ein polling-"protokoll" damit stellt du eine Server-Client / Client-Server Verbindung her.

Vom Prinzip her würde das wie folgt laufen:

- Anmelden am Server (z.B. E-Mail + PW - Datenbank via MySQL oder vorzugsweise MongoDB)
- Erstellen eines Spiels (neuer Eintrag in der Datenbank - für die laufenden Spiele würde ich hier REDIS nehmen)
- gespeichert wird deine UserID und der aktuelle stand des Spieles (also die Position deiner Schiffe und deiner Schüsse und Treffer)
- Beitreten eines Spiels - sofern ein "offenes" Spiel schon in der Datenbank ist kannst du diesem beitreten

NodeJS läuft in einer Schleife hält also permanent alle Informationen bereit, macht Spieler A einen Zug wird über SocketIO die Information an Spieler B gesendet und dieser reagiert darauf.

Die Spielmechanik sollte komplett Client-seitig sein (z.B. als BrowserGame in jQuery/Angular oder als App iOS oder Android), der Server sollte nur jeden Spielzug vor dem speichern einmal validieren um Cheaten zu verhindern.

Das ist soweit recht simple und benötigt nur rudimentäre JavaScript-Kenntnisse. Wir haben bei uns in der Firma, nach Feierabend so ein komplettes MMORPG gebaut natürlich 2D alá Zelda (auf dem Gameboy) -
Der Server schafft spielend 200 Spieler (auf einer LAN-Party getestet).

Und solltest an grenzen kommen lagerst du einfach Validierungs-, Verbindungs-, Authentifizierungsprozesse auf Co-Worker (also mini-Server aus) die alle dem Hauptserver zu arbeiten.

Suchen solltest nach SocketIO (dort gibt es ein Chat-Tutorial - das sind schon mal etwa 50% von dem was du brauchst) und NodeJS - als Client würde ich jQuery oder Angular nehmen (dann ist alles in JavaScript und damit schnell umgesetzt)

Viel Spass,
Marco