Hallo an alle,
servus, ich hab mit spannung gelesen was ihr über das Thema Darstellung/Komplexität/Performance in diesem Thread zusammengestelt habt. Da ich selbst ein wenig (zumindest im Theoretischen Berreich) Erfahrung habe, vor allem was Optimierung angeht, wollte ich euch kurz meinen Senf dazu geben.
Warum ist die Insel nicht voll ausmodelliert?Das hat einen einfachen Grund - es war nicht anderst geplant!
Crytek hat beim Entwickeln des Spiels im Vorfeld überlegt ob die gesamte Spielewelt (laut Storyboard 41km*41km groß) in eine einzige große Map gepackt werden soll oder ob es wie in FarCry, einzelne (4km*4km), aber auch zusammenhängende Levels (wie in HalfLife1&2) geben soll.
Man hat sich für die FarCry Methode entschlossen, Beweggrund hierfür wäre die aufwendige Entwicklung einer streaming-technologie gewesen, die Crytek nicht als notwendig empfand (man hatte ja auch andere Effekte gründlichst einzuplanen, zudem war nicht die Erfahrung da ob Sandbox² genauso gut im Team fürs mapping funktioniert hätte wäre es nur eine Map gewesen (Abstürze, RessourceManagment, etc.), Probleme beim Missionsdesign, Komplexes Debugging, und so weiter und so weiter...
Kann man die Insel etwa nicht voll ausmodellieren?... weil schwächere Systeme nicht laden bzw. speichern könnten? Nein, überhaupt nicht. Das ist sogar ziemlich unabhängig davon.
Das Problem der (extrem) großen Datenmenge einer voll ausmodellierten Map wird damit gelößt das einfach nur die benötigten Daten ständig in den Speicher geladen, und nicht benötigte Daten entladen/ aus dem Speicher entfernt werden.
Realtime-Data-Streaming eben, ein bischen wie als wenn ihr in video.google.com einen längeren Film anschaut - da seht ihr ja auch immer nur einen Teil des Films, könnt aber auch hin und her springen - es wird immer der Teil vom Film geladen der gerade angeschaut wird.
Warum hat man diese Technologie nicht verwendet?
Gut, ich bin nicht Crytek, und das FarCry2 Team benützt z.B. diese Technik, das heißt also das eigentlich die Technologie in der CryEngine2 auch drin sind, aber ein bissle zu den möglichen Gründen würden mir schon einfallen. Ich denk am einfachsten ist es ich liste die Vor- und Nachteile auf, dann könnt ihr euch ein eigenes Bild machen wegen dem Warum.
Vorteil: Die gesamte Map ist begehbar mit vollen Details, und es lädt nie zwischendrin so störend nach wie bei einem Level-Wechsel wo erstmal ein paar sekunden garnix geht.
Weiterer Vorteil ist natürlich auch das man über unglaubliche Distanzen auswirkungen erzielen kann. Zum Beispiel könnte man von einem Ende der Map zum anderen (also in Crysis über 40-Kilometer!) einen Racketenwerfer schiessen, und kommt man nach einem 3 Stunden Marsch an die Stelle wo man hingeschossen hat, sieht man da den Krater tatsächlich vor sich.
Wäre auf dem 3 Stunden Marsch ein normaler Level-Wechsel dazwischen, würde das natürlich nicht gehen
Nachteil: Die Anzahl des gesamt darstellbaren Meshes/Texturen/Effekte/etc. ist ein wenig geringer, da immer ein Teil des Speichers als Puffer benutzt wird, der fürs ständige daten holen&löschen herhalten muss und nicht fürs spiel genutzt werden kann. Auch Prozessorkapazität (auch auf der Grafikkarte) geht dafür drauf.
Weiterer Nachteil ist, kommt man ganz schnell in eine neue Gegend (z.b. durch dynamische Portale oder sowas) die man als Spieleprogrammierer nicht vorhersagen kann, dann kann es dauern bis die Welt sich da fertig aufgebaut hat, also die Daten geladen hat (so wie bei GoogleEarth, nur vlt. nicht ganz soooo langsam).
Natürlich ist es auch ein Nachteil für den Leveldesigner das er eigentlich bei einer so offenen Welt wie in Crysis/FarCry üblich, das Problem hätte jemand läuft einfach komplett um das ganze Geschehen rum um sofort ans Ende zu gelangen. Stell Dir vor Du hast Jahrelang Schweiss und Blut gemappt und am Ende laufen die Spieler einfach nur noch drumherum?!
Also, ich hoffe das bringt ein kleines bissle mehr klarheit in das "Warum" reingebracht zu haben.
Wenn nicht - au egal, hauptsache ebbes geschrieben gell