Entwicklerblog: Planetengenerierung

veröffentlicht am 11.10.2023

Heute tauchen wir in die Welt der Generierung von Planeten, Sonnensystemen und ganzen Universen ab.

Schauen wir uns zuerst den aktuellen Stand der Planeten in GigraWars an, so stellen wir fest, dass ein Planet lediglich aus einem Planetenbild und einem Namen besteht. Beides wird mit einem Standardwert gesetzt, zum einen der Name "Planet" und zum anderen das uns bereits sehr bekannte Planetenbild.

Als Spieler besteht nun die Möglichkeit, beides zu verändern. Dabei gibt es sowohl sehr kreative Ansätze als auch eher schwierige, um es noch diplomatisch auszudrücken.

Vielleicht sollte man hier noch erwähnen, zu Zeiten von Galaxywars gab es zusätzlich noch einen Planetendurchmesser sowie die Angabe einer Temperaturspanne.

Altes neu gedacht

Mit dem Wissen der Informationen aus Galaxywars als Basis war es nun das Ziel für die kommende Version entsprechende Werte wie die Temperatur wieder einzuführen. Nach kurzer Recherche war allerdings klar, dass die Werte in Galaxywars lediglich gewürfelt wurden und keinerlei Logik widerspiegelten. 

Die Konsequent hieraus war, das Verständnis für eine grobe Berechnung der Planetentemperatur muss her. Nach kurzer Recherche war klar, es reicht nicht sich Werte für die einzelnen Planeten auszudenken, sondern wenn müsste man alles etwas größer angehen. Im Minimum auf der Ebene des Sonnensystems.

Das Sonnensystem

Das Zentrum des Sonnensystems bildet die Sonne, diese entscheidet größtenteils über das mögliche Klima auf den jeweiligen Planeten des Systems. Nun gibt es aber verschiedene Arten von Sonnen, genauer gesagt die sogenannten Spektralklassen, in welche die Sonnen eingeteilt werden. Hier gibt es O, B, A, F, G, K und M, dabei geht es von heiß (O) nach kalt (M). Diese Klassen haben auch eine Angabe der Sonnenmasse, diese benötigen wir später noch für unsere Temperaturberechnung.

Wenn nun ein neues Universum generiert wird, werden entsprechend Sonnensysteme mit den besagten Spektralklassen generiert und dazu passend noch Angaben zur Sonnenmasse.

Der Lebensraum Planet

Der Lebensraum eines Planeten kann mit vielen Werten beschrieben werden. Neben dem Durchmesser beschränken wir uns erst einmal nur auf Werte, die für die Berechnung der Planetentemperatur nötig sind.

Hier wäre ein Verweis auf den Fachbereich Astronomie der Universität von Indiana zu finden, leider ist sowohl die Erklärung der Berechnung der Planetentemperatur, als auch deren Beispielcode nicht mehr verfügbar.

Für die Berechnung benötigen wir die Sonnenmasse, den Abstand des Planeten zur Sonne in Au, den Bond Albedo, sowie den Treibhauseffekt des Planeten. 

Abstand halten

Die Berechnung des Abstands des Planeten zur Sonne war hier ein großes Problem. Die Frage war, in welcher Maßeinheit wurde damals in Galaxywars gerechnet? Die Antwort ist relativ einfach, scheinbar in keiner oder einer fiktiven. 

Schauen wir uns den Abstand zwischen zwei Planeten in der aktuellen GigraWars Version an, so beträgt dieser etwas über eine Million Kilometer, was sehr wenig ist. Man könnte fast schon jemandem auf dem Nachbarplaneten winken. Zum Vergleich beträgt der kleinste Abstand zwischen Erde und Venus 38 Millionen Kilometer und von Erde und Mars 55 Millionen Kilometer.

Um den Bogen zur Temperaturberechnung zu schlagen, egal welche Spektralklasse die Sonne hat, nichts würde überleben, auch nicht auf der 20. Planetenposition.

Für die Berechnung des Abstands zur Sonne und auch für die Flottenanzeige beim Flottenversand gibt es aus diesem Grund nun eine Hochrechnung, wodurch im aktuellen Entwurf der Abstand von einer Million Kilometer zumindest auf 30 Millionen steigt. Dies hat keinerlei Auswirkung auf das Flottensystem.

Ergebnis

Mit all den erwähnten Werten kann nun für einen Planeten in einem Sonnensystem eine mögliche Temperatur berechnet werden, welche sich eben an der Sonne, dem Abstand und so weiter orientiert.

Ein Planet auf Position eins, eines Sonnensystems, mit der Spektralklasse "O" hat dadurch eine Temperatur von etwa 12.000 °C. Auf Position fünf mit der Klasse "G" sind es hingegen 19 °C und auf Position 20 der Klasse "M" haben wir frische -214 °C.

Planetenbilder

Nach der langen Herleitung der Planetentemperatur gilt es noch die letzte Meile zu gehen. Seit Monaten ist künstliche Intelligenz ein großes Thema und Systeme zur Bildgenerierung machen immer mehr Fortschritte.

Angesichts dessen war die Idee, jedem Planeten ein Bild zuzuweisen, welches im Ansatz zu seinen Angaben passt. Ein Planet mit einer Durchschnittstemperatur von 1.000 °C sollte keine Eiswüste zeigen und anders herum sollte ein Planet mit -200 °C keine Wüstenlandschaft zeigen. 

Um dabei nicht zu sehr ins Detail gehen zu müssen, bedienen wir uns einer Logik, die bereits von Star Wars, Stargate, StarTrek und anderen Vertretern des Science-Fiction Genres genutzt wurden. Ein Planet sieht überall gleich aus. Das heißt, landet man an einer Stelle mit Wald, dann ist der gesamte Planet bewaldet.

Für die Generierung der Bilder kam Midjourney zum Einsatz. Hier ein paar Beispiele.

Namensgenerator

Wie zu Beginn des Artikels bereits erwähnt, war einer der Hauptmerkmale des Planeten sein Name. Dieser wird in Zukunft genau wie die anderen Werte einmal von System generiert. Genauso der Name des Sonnensystems. Für beides wurde ein System entwickelt, was mehrere Hunderttausend Namen generieren kann, um möglichst wenig gleichlautende Planeten und Sonnensysteme zu haben.

Ausblick

Wir haben eine relativ stimmige Planetengenerierung, welche es wohl so noch nie gab, im Bereich der Browsergames. Trotzdem bleibt natürlich die Frage, wo all diese Informationen in Zukunft angezeigt werden sollen. Sicher ist aktuell nur, dass die Informationen eher nicht auf der eigenen Übersichtsseite stehen werden. Wir werden sie aber auf jeden Fall nutzen und uns etwas überlegen. 

Im Minimum werden sie über die Galaxieansicht mit Klick auf die jeweiligen Planeten zu finden sein.

Genauso ist bisher nicht abschließend geklärt, wie wir in Zukunft mit eigenen Planetennamen und Bildern umgehen werden. Eine Idee, welche aber nicht abschließend beschlossen wurde, wäre diese Möglichkeit wieder zu ermöglichen und die selbst vergebenen Informationen beim Verlassen des Planeten durch die Originale zu ersetzen.

Hier geht es zu einem Video, welches die Generierung zeigt, welche sonst im Hintergrund stattfindet: https://www.youtube.com/watch?v=7f5ftrki6jg

Ideen und Vorschläge im Discord sind immer gerne gesehen.