2017-03-21 4 views
1

In diesen Tagen versuche ich ein einfaches Multiplayer-Spiel mit 2 Spielern zu implementieren. Die Spiellogik ist auf der Server-Seite, das heißt, das Erstellen und Verschieben der Spieler. Ich möchte auch Bälle einbauen, die um die Leinwand herum springen. Wie kann ich das umsetzen? Auf der Server- oder Client-Seite? Ich denke, es ist besser, sie auf dem Server zu erstellen, aber ich habe es versucht und die Erstellung ist in Ordnung, aber nachdem ich die Position meiner Bälle an die Kunden gesendet habe, hat jeder Ball die gleiche Position und wenn der Server versucht, die Bälle zu bewegen, sich nicht bewegen, zB die Position ändern. Das Schlimmste ist, dass ich sie nicht rendern kann. Wer hatte schon ein solches Problem und hat es gelöst? Wie kann ich dieses Problem des Prellens der Bälle lösen?Node.js Multiplayer-Spiel mit Express und socket.io

Antwort

1

Hoffe, es ist nicht zu spät für die Frage. Ein Multiplayer-Spiel zu bauen ist eigentlich ein sehr großes Thema. Sie haben in vielen Fragen Missverständnisse.

Erstens wird empfohlen, Spiellogik auf der Serverseite zu haben und nur der Server kann die tatsächliche Position und Bewegung der Bälle bestimmen. Dies wird als autoritativer Server bezeichnet. Dann rendern Sie die Bälle auf der Client-Seite, die normalerweise nur eine Browser-Seite ist. Sie können die Canvas-API oder WebGL verwenden, um dies zu implementieren. Wenn es nur 2D-Spiel ist, wird Canvas-API ausreichen. Dies bedeutet, dass Sie Entitätsvorgänge sowohl auf Server- als auch auf Clientseite erstellen, aktualisieren und löschen müssen. Wahrscheinlich müssen Sie das gleiche Ballmodell zwischen dem Server und dem Client verwenden. Da Sie Javascript auf beiden Seiten verwenden, wäre dies kein Problem.

Der wichtigste Teil für ein einfaches Multiplayer-Spiel ist die Kommunikation zwischen Server und Client. Immer wenn Sie einen Ball auf dem Server erstellen, müssen Sie die Ballinformationen an alle Clients senden. Dann müssen Sie den gleichen Ball auf der Client-Seite erstellen. Und danach müssen Sie alle Ballinformationen auf dem Server aktualisieren und in einem festen Intervall an die Clients senden. Sobald Sie die Update-Informationen erhalten, können Sie diese Informationen auf dem Client ändern, damit sich Ihre Bälle "bewegen" können. Rendern ist einfach. Sie löschen nur den Bildschirm und zeichnen sie an der neuen Position.

Das Prellen der Kugeln hängt mit der Kollisionserkennung zusammen. Sie können Collision Detection oder Entity Hittest für weitere Detailinformationen suchen.

Verwandte Themen