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:
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 😁
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
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
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
Schau dir auch mal diese Tutorials an. Sind sowohl für DX, als auch für XNA(Nachfolger von Managed DirectX).
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