weiss irgendwer wie man ein space shooter programmiert (datenstrukturen usw.)
–es geht mir nicht darum wie ich gute partikelsysteme und der gleichen schreibe (obwohl dies auch ein interessantes Thema ist )
vielleicht kennt ja auch wer eine hp mit entsprechender doku.
thx
Generell kann man sagen, dass es ja nur recht wenige Objekte gibt. Also kann man recht einfach Strukturen in einfachen Containern (z.B. vector oder vielleicht eine map, die ueber irgendwelche „Raumsektoren“ indiziert wird) speichern.
In den Datenstrukturen muss einmal natuerlich die Position, die Orientierung, Daten ueber Geschwindigkeit und Beschleunigung sowie Sachen wie Bewaffnung, Treibstoff und Panzerung gespeichert sein. Die Bewegungen der Objekte kann man dann relativ einfach mit moderatem Wissen ueber analytische Geometrie und 3D=Kinematik beschreiben.
In Bezug auf die Darstellung gibt es dann natuerlich verschiedene Moeglichkeiten. Falls Du etwas wie Wing Commander 1 oder 2 imitieren moechtest, muesstest Du die Objekte aus verschiedenen Richtungen vorrendern und einfach in Bitmaps speichern. Es waere z. B. sinnvoll, acht Richtungen pro Dimension zu benuten. Dies wuerde dann zu 296 Bildern fuehren, falls ich mich nicht verrechnet habe (ein hohler 8x8x8-Wuerfel).
Je nach Perspektive wird dann das richtige Bild ausgewaehlt und dann mit einem Texture-Mapper verzerrt. Dies ist jedoch aaaaaalte Technologie. Fuer weitere Informationen siehe „Tricks of the Game Programming Gurus“ und „More Tricks of the Game Programming Gurus“, beide herausgegeben von SAMS Publishing.
Falls es mehr etwas sein soll wie Wing Commander 3 und aufwaerts, muesstest Du Deine Objekte mit einem Modeller wie 3D Studio als 3D-Modelle erstellen und mit Texturen versehen. Diese wuerdest Du dann in Dein eigenes Spiel laden und an den durch die Datenstrukturen definierten Stellen entsprechend rotiert anzeigen. Die gesamten Objekte werden dann transformiert, so dass die Welt aus den Augen des Betrachters gesehen wird. Dann wird das ganze auf den Bildschirm projiziert und gerendert. Dabei helfen Dir APIs wie Direct3D oder OpenGL schon eine ganze Menge.
Das ganze war jetzt recht allgemein, falls Du genauere Fragen hast, kannst Du ja gerne noch einmal posten.
–Mathias
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
hallo danke erst einmal das du geantwortet hast
Generell kann man sagen, dass es ja nur recht wenige Objekte
gibt. Also kann man recht einfach Strukturen in einfachen
Containern (z.B. vector oder vielleicht eine
map, die ueber irgendwelche „Raumsektoren“ indiziert
wird) speichern.In den Datenstrukturen muss einmal natuerlich die Position,
die Orientierung, Daten ueber Geschwindigkeit und
Beschleunigung sowie Sachen wie Bewaffnung, Treibstoff und
Panzerung gespeichert sein.
Wie schaut es mit dem „Weltraum“ aus? Muß man dem eine fixe Größe vorgeben?(man stößt ja einmal am rand an).
Die Bewegungen der Objekte kann
man dann relativ einfach mit moderatem Wissen ueber
analytische Geometrie und 3D=Kinematik beschreiben.
Kannst da bitte genaueres erklären.
Wäre dir da sehr dankbar.
Das ganze war jetzt recht allgemein, falls Du genauere Fragen
hast, kannst Du ja gerne noch einmal posten.
hab ich hiermit getan
hallo danke erst einmal das du geantwortet hast
Gern geschehen. Entschuldige, dass es so lange gedauert hat, aber ich hab hier 'ne Weile nicht mehr reingeschaut.
In den Datenstrukturen muss einmal natuerlich die Position,
die Orientierung, Daten ueber Geschwindigkeit und
Beschleunigung sowie Sachen wie Bewaffnung, Treibstoff und
Panzerung gespeichert sein.Wie schaut es mit dem „Weltraum“ aus? Muß man dem eine fixe
Größe vorgeben?(man stößt ja einmal am rand an).
Hmmm… sicherlich gaebe es irgendein Ende, da die Koordinaten ja nur durch eine begrenzte Anzahl von Bits dargestellt werden. Ich singles dafuer nehmen. Allerdings koennen singles so laecherlich gross sein, dass man sich eigentlich keine Sorgen um’s Ende machen soll, solange man mit der Skalierung in einem sinnvollen Bereich bleibt. Wenn Du also z. B. einfach Deine Rechnungen in Metern aufbaust, solltest Du keine Probleme haben.
Es wuerde vermutlich aber eine gute Idee sein, wenn Du an einer bestimmten Grenze, z. B. 100.000km vom Mittelpunkt des Raums in Deinem Spiel dem Spieler eine Meldung gibt, dass er sich aus dem Gefechtsbereich entfernt und doch bitte umkehrt. Es gibt leider immer irgendwelche beknackten Spieler, die einfach abhauen wollen.
Die Bewegungen der Objekte kann
man dann relativ einfach mit moderatem Wissen ueber
analytische Geometrie und 3D=Kinematik beschreiben.Kannst da bitte genaueres erklären.
Wäre dir da sehr dankbar.
Um hier sehr genau zu werden fehlt mir jetzt die Zeit.
Was Du koennen musst, ist im Grunde Vektorrechnung (also z. B. Addition, die brauchst Du, weil Du immer den Geschwindigkeitsvektor zum Positionsvektor addierst), am besten etwas Wissen ueber Matrizen (zum Rotieren Deiner Schiffe, geht aber wohl auch anders), und ein paar Gleichungen aus der Physik (z. B. sowas wie v = v0 + a*t und x = x0 + v*t), obwohl man da wohl auch gut schummeln kann und sich einfach etwas zusammenbasteln kann.
Man kann sich sowohl ueber analytische Geometrie als auch ueber Kinematik sehr gut mittels Buechern oder vielleicht Websites informieren, Links hab ich dafuer momentan aber leider keine.
Ich hoffe, das hat etwas geholfen.
–Mathias
Gern geschehen. Entschuldige, dass es so lange gedauert hat,
aber ich hab hier 'ne Weile nicht mehr reingeschaut.
macht nix. bist der erste der mir zu diesem thema weiterhelfen kann
also danke.
gibt es vielleicht tutorials zu diesem thema??
Matthias