Wie erstelle ich einen einfachen RPG-Spieleserver? [geschlossen]

8

Ich arbeite an einem Sprite Kit-Spiel. Ich möchte es zu einem echten Multiplayer-Spiel machen, womit ich meine, dass jede Person, die sich dem Spiel anschließt, ihre eigene Kamera hat. Ich habe Tutorials zu Multiplayer-Spielen gesehen, bei denen die Spieler denselben Spielbildschirm verwenden, aber das ist nicht das, was ich will.

Ich verstehe, dass es einen Server geben muss, mit dem sich Spieler verbinden, was bedeutet, dass die "Welt", mit der sich Spieler verbinden, auf dem Server ausgeführt werden sollte. Ist das richtig?

Wie kann ich einen Server haben, auf dem die "Welt" für dieses Spiel ausgeführt wird? Muss es sich um einen bestimmten Servertyp handeln, oder kann ich Node.js oder was auch immer ich möchte verwenden?

duxfox--
quelle

Antworten:

17

Du bist auf dem richtigen Weg.

Der Kern des Client-Server-Netzwerkmodells besteht darin, dass ein Server ein zentraler Wissenspunkt ist, mit dem Clients eine Verbindung herstellen. Ein Spieleserver enthält normalerweise

  • eine In-Memory -Weltdarstellung ,
  • eine Liste der verbundenen Spieler ,
  • eine Spielschleife (zB mit Player Control Handler, Physik-Engine & KI).

Sie benötigen außerdem einen Kommunikationskanal zwischen Ihrem Server und den Clients, damit Clients die Aktionen des Spielers und der Server den Spielstatus übertragen können.

Weiterführende Client-Server-Konfigurationen können erforderlich sein

Fangen Sie einfach an. Es ist am besten, die Komplexität nur bei Bedarf hinzuzufügen . Dieses Kaninchenloch ist tief.


Sie haben Node.js erwähnt : Ich habe ein paar Server für kleine Spiele geschrieben und es war gut. Sie können jedoch einen Server und Clients nach Belieben schreiben. Eve Online ist größtenteils in Erlang , Minecraft in Java, so ziemlich alles von Valve ist in C ++ und so weiter.

Anko
quelle
Vielen Dank für die ausführliche Antwort! Eine Sache, die mich immer noch verwirrt, ist: Da das Spiel mit dem Sprite-Kit für iPhones geschrieben wurde, muss der Server überhaupt etwas darüber wissen? Ich bin nur verwirrt, weil ich immer wieder denke, dass das Spiel im Sprite-Kit enthalten ist, daher sollte die vom Server bereitgestellte Welt auch Sprite-Kit sein. Was sind deine Gedanken
duxfox
@AbdulAhmad Nein, Sie können den Server mit jeder gewünschten Sprache oder Bibliothek erstellen. Denken Sie daran, dass Ihr Server vollständig getrennt ist und sein sollte. Sie erstellen zwei verschiedene Anwendungen und sollten sich das so vorstellen. Eine für den Client und eine für den Server. Der Teil, der sie miteinander verbindet, ist das Kommunikationsprotokoll zwischen den beiden Anwendungen. Während es andere Details gibt, die zwischen ihnen koordiniert werden müssen (wie z. B. den Spielstatus), sind sie im Wesentlichen völlig unabhängig. Sie würden Sprite Kit auf der Serverseite nicht einmal viel gebrauchen können.
Fuzzy Logic
@FuzzyLogic also, versuche das besser zu verstehen. Wenn der Server die "Welt" (Bilder, Physik usw.) bereitstellt, sollten die Clients (iPhones) nichts davon haben, da der Client nur die "Ansicht" für diese Umgebung ist. ist das richtig? Würde ich also einfach das Sprite-Kit auf der Clientseite verwenden, um den vom Server kommenden Daten eine visuelle Ebene zu geben? Mit anderen Worten, das Spiel sollte hauptsächlich auf der Serverseite aufgebaut sein (alle Logik usw.) und der Client ist nur meine Ansicht und wo ich Ereignisse / Befehle an den Server senden kann. Dies bedeutet, dass ich im Sprite-Kit keine Physik-Engine / Spielelogik benötige
duxfox
@AbdulAhmad Yep! Ein Client, der die minimal mögliche Verarbeitung ausführt, wird als Thin Client bezeichnet . Es ist ein guter Ausgangspunkt.
Anko
3
@AbdulAhmad Ja und nein. Das ist eine gute Möglichkeit, darüber nachzudenken, aber hauptsächlich aus Effizienzgründen dupliziert der Client normalerweise viele Dinge, anstatt den Server nach jedem Detail zu fragen, da sonst wahrscheinlich Leistungsprobleme auftreten. Wie Anko sagte, wäre es ein guter Anfang. Dies ist ein großes Thema, es gibt viele Möglichkeiten, viele Überlegungen und viele Teile, so dass es schwierig ist, vollständig zu erklären, wie alles funktionieren sollte. Wie kompliziert es wird, hängt jedoch von den Details Ihres Spiels ab. Um ehrlich zu sein, empfehle ich Ihnen aufgrund Ihrer Fragen noch nicht, dies zu versuchen.
Fuzzy Logic