Hallo,
ich habe mal eine etwas allgemeinere Frage. Wenn ich zum Beispeil einen Multiplayer für ein Sandbox game programmiere. Jetzt habe ich eine Welt die auf einem Array mit Blöcken basiert. Wenn ein Spieler jetzt zum Server connected wie soll der Client also der Spieler diese Welt bekommen. Ich habe momentan zwei Ideen:
1. Es gibt ja einen Generator dieser arbeitet mit einem Seed um die Welt zu erschaffen. Jetzt sende ich dem Client erstmal diesen Seed und generiere daraus die Welt. Alle Blöcke die von anderen Spieler zerstört oder gebaut werden, werden auf dem Server in einem Array/Liste gespeichert. Diese wird dann auch zum Spieler gesendet und dadurch wird die Welt im zweiten Schritt noch einmal verändert.
2. Nachdem ich die Welt auf dem Server generiert habe unterteile ich diesen in Chunks. Wenn ein Block in diesem Chunk verändert wird speichere ich das direkt in der Liste von Blöcke des jeweiligen Chunks. Wenn ein Spieler nun connected sende ich im alle Chunks in der Nähe der Position des Spielers. Wenn dieser sich nun bewegt sende ich dem Client weitere Chunks und lösche die die nicht mehr gebraucht werden.
Ich wollte einmal fragen was eurer Meinung nach effizienter wäre oder ob es andere Möglichkeiten gibt.
ich habe mal eine etwas allgemeinere Frage. Wenn ich zum Beispeil einen Multiplayer für ein Sandbox game programmiere. Jetzt habe ich eine Welt die auf einem Array mit Blöcken basiert. Wenn ein Spieler jetzt zum Server connected wie soll der Client also der Spieler diese Welt bekommen. Ich habe momentan zwei Ideen:
1. Es gibt ja einen Generator dieser arbeitet mit einem Seed um die Welt zu erschaffen. Jetzt sende ich dem Client erstmal diesen Seed und generiere daraus die Welt. Alle Blöcke die von anderen Spieler zerstört oder gebaut werden, werden auf dem Server in einem Array/Liste gespeichert. Diese wird dann auch zum Spieler gesendet und dadurch wird die Welt im zweiten Schritt noch einmal verändert.
2. Nachdem ich die Welt auf dem Server generiert habe unterteile ich diesen in Chunks. Wenn ein Block in diesem Chunk verändert wird speichere ich das direkt in der Liste von Blöcke des jeweiligen Chunks. Wenn ein Spieler nun connected sende ich im alle Chunks in der Nähe der Position des Spielers. Wenn dieser sich nun bewegt sende ich dem Client weitere Chunks und lösche die die nicht mehr gebraucht werden.
Ich wollte einmal fragen was eurer Meinung nach effizienter wäre oder ob es andere Möglichkeiten gibt.