Ich mache ein einfaches kleines MOBA nur zum Spaß. Ich habe alles im Einzelspielermodus gemacht, dann wurde mir klar: "Oh Mist, ich sollte wahrscheinlich Multiplayer hinzufügen, oder?"
Ich habe noch nie etwas mit Networking gemacht, also war es lustig und großartig zu lernen, wie man Lidgren in mein Spiel integriert . Die Sache ist, ich weiß ziemlich genau, wie ich Dinge mache, ist falsch, weil es meines Wissens nicht robust genug für Mainstream-Spiele ist, aber was ist daran falsch?
Was ich tue, ist im Grunde, wenn ein Spieler eine Aktion ausführt, sendet er eine Nachricht an den Server, die besagt: "Hey, ich habe gerade dieses Ding gemacht." Der Server und der Client führen beide dieselbe Simulation aus. Der Server sendet dann eine Nachricht an alle anderen Clients, in der er ihnen mitteilt, dass dieser Typ das getan hat.
Zum größten Teil, außer in einigen Fällen, wenn ein Spieler etwas tut, geht der Kunde davon aus, dass es cool ist, und macht es alleine weiter. Wenn Sie also mit der rechten Maustaste auf eine Stelle klicken, um dorthin zu gelangen, beginnt der Client dieses Spielers, seinen Mann dorthin zu bewegen, und sendet dann eine Nachricht an den Server, in der er darüber informiert wird.
Also im Grunde genommen:
- Spieler 1 wirkt einen Zauber, der ihn sechs Sekunden lang 100% schneller bewegen lässt
- Der lokale Client von Spieler 1 fügt diesen Buff seinem Einheitenobjekt hinzu
- Der Client von Spieler 1 sendet eine Nachricht an den Server mit der Aufschrift "Hey, ich habe gerade diesen Zauber gesprochen".
- Der Server stellt sicher, dass er wirklich genug Mana hat, um diesen Zauber zu wirken, und fügt diesen Buff in diesem Fall der Serverkopie dieses Einheitenobjekts hinzu
- Der Server sendet eine Nachricht an alle anderen Clients mit der Aufschrift "Hey, dieser Typ hat gerade diesen Zauber gesprochen."
- Jeder andere Client erhält die Nachricht und sagt "ah okay cool" und fügt diesen Buff seinem lokalen Einheitenobjekt für diesen Spieler hinzu
Ich habe Dinge durchgesehen, um zu sehen, wie große Spiele im Mehrspielermodus funktionieren, und es ist etwas verwirrend für jemanden, der gerade erst anfängt, sich mit diesen Dingen zu beschäftigen, aber es sieht so aus, als ob die Source-Engine ein Paket sendet, das alle Änderungen an allem im enthält Welt jede Zecke? Wiederum völlig neu in diesem Bereich, aber können Sie wirklich so viele Daten so häufig pushen?
Tut mir leid, wenn das ein bisschen wild ist, aber im Grunde habe ich mich gefragt, warum mein einfacheres System nicht der richtige Weg ist, denn wenn es so wäre, würden andere Spiele es verwenden, oder?