Jo das mit den Koordinaten haben ich schon.
Ich verwende eine Klasse Namens Unit die nicht nur den Wert speichert (double) sondern auch eine Maßeinheit dazu (m, km, AE, Lichtjahr) und auch dazwischen umrechnen kann.
Außerdem wird sehr viel relativ zu einander abgebildet.
Es gibt im Prinzip keinen aktuellen Nullpunkt. Der ist immer verschieden.
Wenn ich mich in einem Sonnensystem bewege, ist der Nullpunkt beim lokalen Stern und es wird mit AE gerechnet. Für den Flug von Planet zu Planet reicht es. Falls ich z.B. andere Schiffe treffe, wird an dieser Stelle der Nullpunkt für die Schiffe gesetzt, damit z.B. ein Kampf korrekt abläuft.
Wenn ich mich auf einem Planeten befinde, wird mit m gerechnet und der Nullpunkt ist immer in Spielernähe.
Wenn ich von Sonnensystem zu Sonnensystem reise, wird mit Lichtjahren gerechnet und der Nullpunkt ist das Zentrum der Galaxie.
Das Koordinatensystem wird also immer angepasst an die aktuelle Geschwindigkeit und alle Daten die gespeichert werden (z.B. vom Spieler veränderte Geometrie) werden im Verhältnis zueinander gespeichert.
Die Super Galaxiehaufen speichern ihren Galaxien, die wiederum kennen jeweils ihre Nachbar-Galaxien.
Galxien speichern ihre Sonnensystem und Sternenhaufen. Sonnensysteme ihre Planeten.. usw.
Es wird nur gespeichert was vom Spieler verändert wurde, der rest wird generiert.
Es werden auch Daten gespeichert welche lange in der Berechnung benötigen aber deren Ergebnis wenig Speicher benötigt.
Die Schwierigkeit ist im Augenblick das variable Koordinatensystem mit der Geometrie in Einklang zu bringen.
Ich habe mir gedacht das ferne Himmelskörper als ganze Kugel gerendert werden. Dann, wenn man sich ihnen nährt, wird nur noch ein Kugelausschnitt angezeigt. Denn ab einer bestimmten Größe reicht ja float nicht mehr um die Vektoren der Vertices darzustellen, die ja immer die Länge des Planetenradius haben.
Im Augenblick habe ich eine einfache manuelle Umrechnung (Strahlensätze) von Absoluter Planetenentfernung und Radius hin zu einer festen Entfernung und der entsprechenden Relativen Größe, in der die Kugel zu sehen ist.
Aber mir fehlt jetzt noch der Übergang zum Kugelausschnitt (und die Umsetzung dessen) sowie die Terrain Generierung.
Die muss nicht perfekt sein, das stimmt schon.
Aber ich will erreichen das Es jedes mal ein Erlebnis für den Spieler ist, wenn er auf einen neuen Planeten landet.
Wenn er von der ferne grob die Kontinente sieht und beim drauf zu steuern und durch die Wolkendecke tauchen, sich dann einzelne Details herausschälen.
Mir ist klar das das ganze ein gigantisches Projekt ist... aber dafür plane ich auch entsprechend Zeit ein.
Seit dem ich begonnen habe zu Programmieren (ca. 8. Klasse), mache ich mir Gedanken darüber. Nun habe ich mein Informatikstudium abgeschlossen, also seit 8 Jahren. Fertig sein soll das Projekt vor meinem Lebensende.. also so in spätestens 70-80 Jahren.
Von daher will ich auch möglichst viel konzeptionell machen und vom Code her auslagern um dann gegen Ende eine aktuelle Grafikengine verwenden zu können.
Allerdings spalte ich das in Subprojekte auf, die vorher schon lauffähige Prototypen hervorbringen sollen.
Einer davon ist SpaceCraft an dem ich grade arbeite.
Hier wird es nur bis zur Galaxieebene gehen und sich Grafisch in Grenzen halten.
Der Hauptaugenmerk wird sein, sich selbst ein Raumschiff auf dem Planeten zu bauen.
Und zwar nach dem Vorbild von Minecraft. Welches dann entsprechend auch fliegen kann, logisch.. daher brauche ich schonmal zumindest einen Teil der Universums-Engine.
In einem Projekt habe ich schon den Generator für die Super-Galaxiehaufen verteilung geschrieben, die um große Leere Löcher im All angeordnet sind (so stehts in meinem Astronomie-Buch). Dafür habe ich Splines verwendet.. wenn es interessiert, kann ich ja mal Screenshots posten.
Erst wenn der letzte Fluss vergiftet,
der letzte Baum gefällt,
der letzte Fisch gefangen,
dann werdet ihr merken, dass man Geld nicht essen kann
Man verkauft die Erde nicht, auf der die Menschen wandeln.
- Indianerweisheiten
Ich bin auch ein einhornimmond