Im wesentlichen läuft es wie von Volle beschrieben. Sowohl Server als auch Client brauchen natürlich die topologischen Daten. Was die Spielcharaktere angeht, so werden dort nicht nur Positionsinformationen, sondern gleich der Richtungsvektor an die Clients verteilt, wodurch ein Client versucht die mögliche weitere Bewegung zu schätzen wenn der Quellclient Verbindungsprobleme hat. Kollisionsabfragen finden übrigens clientseitig statt - wenn man die Server damit noch belasten würde bräuchte man ja fast schon einen eigenen Kollisionsserver
.
Der wirklich interessante Teil ist denke ich eher, dass der Server anhand der Position des Charakters auf jedem Client für jeden einzeln entscheidet was dieser Charakter gerade überhaupt in seiner Umgebung hat, was auf ihn wirken könnte bzw. was er sehen kann. Würde man sämtliche Infos an alle Clients schicken wollen bräuchte man wohl ein Vielfaches an Bandbreite. Ähnlich läuft es entsprechend auf dem Client: Was zu weit weg ist bzw. einen gerade nicht betrifft taucht überhaupt nicht auf. Würde man die gesamte Welt im Speicher vorhalten wollen bräuchte man sicherlich ein paar zig Gigabyte
RAM, und um all die damit verbundenen Berechnungen anzustellen reicht vermutlich auch kein mittelklassiger Core2Duo mehr
.
Diese Relevanzentscheidungen, und das dynamische Verarbeiten der Inhalte ist vermute ich sogar der mit aufwendigste Teil des ganzen Spiels - zumindest wenn man von der Erstentwicklung spricht. Wenn man diese Dinge nämlich von Anfang an richtig baut sollte man sich nach Hinzufügen von Inhalten nicht mehr groß darum kümmern müssen.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)