Laden...

3D Level, wie konzeptionell angehen?

Erstellt von mcs vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.571 Views
M
mcs Themenstarter:in
8 Beiträge seit 2004
vor 15 Jahren
3D Level, wie konzeptionell angehen?

Hallo zusammen,

ich habe vor kurzem ein Ingamevideo zu Starcraft 2 gesehen. Und seit dem juckt es mich in den Fingern auch ein 3D Strategiespiel zu schreiben. Ich hab mir einige Gedanken dazu gemacht und bin für den Anfang schon mal zufrieden wenn ich ein 3D Level hinkriege auf dem sich eine simple Einheit (ein Würfel oder so) dumm rumbewegt. Nun mein erstes Problem: wie werden die Levels in einem Spiel wie Startcraft 2 realisiert. Einige meiner Überlegungen:

  • ein riesiges Mesh (stelle ich mir jedoch etwas problematisch in Bezug auf die Performance vor, ausser man würde das irgendwie teilweise laden oder einzelne Sektor Meshes...?)
  • irgendein Binärfile mit Höhenwerten (für jeden Pixel wohl etwas übertrieben und mit interpolieren, resp. Kurven (evtl. Bezier) durchlegen, aber was wenn ich eine schiefe Ebene will...)
  • heightmaps mit Koordinatenfile für Bäume usw?
  • ...

schlussendlich muss wohl auch noch ein Level Editor her, auf dem ich so Krimskram wie Bäume usw. raufpappen kann, Texturen wären auch nicht schlecht 😄. Wie würde ich das lösen? Wenn ich das Level mit einem Mesh realisieren würde wäre wohl die Sache mit der Textur relativ einfach, die könnte man soweit ich weiss einfach dem Mesh File mitgeben? Müssten dann Bäume und ähnliche Elemente die evtl. manipuliert werden müssen als subset auf die Terrainmesh..?

und noch so'n paar Sachen für später 😁

  • Geländeverformung, Bäume umwalzen, fliessende Gewässer usw.

wie man sieht habe ich nicht gross Ahnung von der Materie und zu jeder meiner Überlegungen sind mir auch passende Probleme in den Sinn gekommen darum dachte ich mir ich frage mal nach wie das denn so professionell gelöst wird bevor ich mir den Kopf endültig zerbreche, da mir auch google nicht so recht helfen konnte..

Es würde mich grundlegend interessieren wie die Sache mit den Levels professionell gelöst wird - am liebsten bei Starcraft 2 😉 - oder was ihr von meinen Ansätzen haltet

Vielen Dank schon mal im Voraus
Michael

fastest code is no code

C
401 Beiträge seit 2007
vor 15 Jahren

Also ich habe zwar auch keine Erfahrung mit 3D-Anwendungen, aber DirectX Rendert immer nur den sichtbaren Bereich (zumindest sollte es das 😄). Also müsstest du dich um die teilweise Darstellung schonmal nicht kümmern.

In Programmen wie 3dsmax u.Ä. werden Terrains häufig mit Heightmaps erstellt, was nicht nur schnell, sondern auch einfach geht. Es ist definitiv möglich das auch in DX zu machen, jedoch habe ich keine Ahnung, wie sich das auf die Performance auswirkt.

Da du ja schreibst, dass du noch keine große Ahung davon hast würde ich dir Empfehlen erstmal mit den Grundlagen anzufangen. Schau dir doch mal das Buch an:

Managed DirectX und C#. Einstieg und professioneller Einsatz

Gruß

Corpsegrinder

M
mcs Themenstarter:in
8 Beiträge seit 2004
vor 15 Jahren

Danke für Deine Antwort, war mir bei den Heightmaps nicht so sicher wie z.B. überhängende Steilwände zu realisieren sind und wie ich dann denn Rest (Bäume, Flüsse usw.) mit der reinen Heightmap verbinden soll. Oder z.B. war in einem Video zu Starcraft 2 so eine Art Raumschifflandeöffnung seitlich im Terrain, ist zwar so wie es aussah nicht zugänglich für den Spieler, aber die Schatten der darüberfliegenden Einheiten "gingen da rein" also scheint es nicht nur ne Textur zu sein die 3 dimensional wirkt... Darum habe ich mich gefragt wie die Jungs die Starcraft entwickeln, dass so machen. Ich nehme mal an die werden einen Leveleditor geschrieben haben, der dann ein riesiges Mesh erzeugt?

Guter Buchtipp - liegt hier gleich bei mir auf dem Tisch das Buch 😉

Gruss
Michael

fastest code is no code

C
489 Beiträge seit 2007
vor 15 Jahren

Hallo

Vielleicht solltest du dir auch mal XNA anschauen.

http://www.xnamag.de/index.php

chrische

M
34 Beiträge seit 2005
vor 15 Jahren

Schau dir auch mal diese Tutorials an. Sind sowohl für DX, als auch für XNA(Nachfolger von Managed DirectX).

J
66 Beiträge seit 2008
vor 15 Jahren

Also ich habe zwar auch keine Erfahrung mit 3D-Anwendungen, aber DirectX Rendert immer nur den sichtbaren Bereich (zumindest sollte es das 😄). Also müsstest du dich um die teilweise Darstellung schonmal nicht kümmern.

Nein leider tut es das nicht. Bzw doch nur das sichtbare rendert es klar...aber das ist ja das Problem 😁 Auch alles was nicht direkt sichtbar ist wird zur Grafikkarte geschickt und somit auch berrechnet. Deshalb gibt es seit je her Scenemanagement. Das heißt zb FrustrumCulling. Alles was nicht mal annähernd im Bereich der Kamera liegt wird verworfen(Stichwort Quad/Octtree). Alles was dann in der näheren Umgebung ist wird gegen das Frustrum der Camera getest und nur wirklich das was drinne liegt wird gerendert. Das erspart sehr sehr viel Rechenleistung und ist in keinem Spiel wegzudenken.

Was das Terrain betrifft wird dir wohl niemand sagen können wie die das machen. Es könnte sicherlich auf einer Heightmap passieren, da es dann auch wieder verschiedene Ansätze des Scenemanagement gibt. Zum Beispiel LOD(LevelOfDetail) wo weiter entfernte Teile mit weniger Vertices gerendert werden.
Jedoch glaube ich das perspektiv bedingt in SC2 oder ähnlichen Spielen ala WarCraft alles statisch ist, da man dort meiner Meinung nach auf solche Sachen wie LOD verzichten kann.

Setz dich doch erstmal hin und schau dir Tutorials an und mach doch so einen Würfel der sich meintewegen über ne Plane bewegt. Da hast du nämlich schonmal genug zu tun 🙂
Noch zwei Links:
Ziggyware
XNA Creators Club