tag:blogger.com,1999:blog-58483553353678601802024-02-08T09:42:31.252-08:00Space Combat And Strategy Game DevelopmentEntwicklung von Space Combat und Space Strategy SpielenAlexhttp://www.blogger.com/profile/12911562805026944414noreply@blogger.comBlogger12125tag:blogger.com,1999:blog-5848355335367860180.post-78943285219608545112014-11-01T07:35:00.002-07:002022-03-15T12:54:25.271-07:00Spieleprototyp 7: Game Design mit Excel und OpenOffice (OLE Automation), neue Schiffsklassen und Ereignisse<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/gameoptionscreenm2d1o.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/gameoptionscreenm2d1o.jpg" width="320" /></a></div>
Im Verlauf der Entwicklung des siebenten Spieleprototyps
wurde der komplette Source Code noch einmal von Grund auf überarbeitet. Die
wichtigste Neuerung besteht darin, dass man sich nun nicht mehr mit
unübersichtlichen Textdateien herumärgern muss, wenn man die Parameter für die
prozedurale Generierung der Spielewelt verändern möchte. Sämtliche Daten werden
jetzt mit Hilfe von Excel- und OpenOffice-Arbeitsblättern (Worksheets) verwaltet,
die ihrerseits im Verzeichnis <i style="mso-bidi-font-style: normal;">Data/GameDataSheets</i>
zu finden sind.<br />
<div class="MsoNormal">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/galacticview1iqsvg.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/galacticview1iqsvg.jpg" width="320" /></a></div>
Nachdem die gewünschten Änderungen beispielsweise im Excel-Worksheet
<i style="mso-bidi-font-style: normal;">InitialGameData.xlsx</i> abgespeichert wurden,
müssen wir sicherstellen, dass bei Neustart des Spiels zunächst sämtliche Daten, die für
die Generierung der Spielewelt erforderlich sind, in ein für das Spieleprogramm
verständliches Dateiformat konvertiert werden (OLE Automation). Zu diesem Zweck
müssen wir in der Datei <i style="mso-bidi-font-style: normal;">Config.txt</i> (zu
finden im Ordner <i style="mso-bidi-font-style: normal;">Bin</i>) folgende vier Parameter
einmalig ändern:</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/galacticview2i7sdj.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/galacticview2i7sdj.jpg" width="320" /></a></div>
<b style="mso-bidi-font-weight: normal;"></b><br />
<a name='more'></a><b style="mso-bidi-font-weight: normal;">Rebuild_GameFiles(no=0,yes=1):
1</b></div>
<div class="MsoNormal">
Use_ExcelGameFiles(no=0,yes=1): 1</div>
<div class="MsoNormal">
GameFileName: InitialGameData</div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;">Generate_NewGalaxy(no=0,yes=1):
1</b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
ACHTUNG – sofern man mit der neu generierten galaktischen
Spielewelt zufrieden ist, muss man vor einem erneuten Spielstart die Parameter <b style="mso-bidi-font-weight: normal;">Rebuild_GameFiles</b> sowie <b style="mso-bidi-font-weight: normal;">Generate_NewGalaxy</b> wieder zurück auf ihre
Standardeinstellungen setzen:</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/warpflightenipp.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/warpflightenipp.jpg" width="320" /></a></div>
<b style="mso-bidi-font-weight: normal;">Rebuild_GameFiles(no=0,yes=1):
0</b></div>
<div class="MsoNormal">
Use_ExcelGameFiles(no=0,yes=1): 1</div>
<div class="MsoNormal">
GameFileName: InitialGameData</div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;">Generate_NewGalaxy(no=0,yes=1):
0</b></div>
<div class="MsoNormal">
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;">überarbeitete Schiffsklassen</b></div>
<div class="MsoNormal">
Die Schiffsklassen wurden dahingehend überarbeitet, dass sie
nun allesamt ganz individuelle Aufgaben zu erfüllen haben:</div>
<div class="MsoNormal">
<ul>
<li><b>Transportschiffe</b> – notwendig für die Durchführung von Nachschublieferungen</li>
<li><b>Konsularschiffe</b> – unverzichtbar, um militärische <span id="goog_1640429847"></span><span id="goog_1640429848"></span>Bündnisse
mit unabhängigen Sternensystemen zu schließen</li>
<li><b>Aufklärer</b> – notwendig, um sämtliche Schiffe innerhalb eines
Sonnensystems aufspüren zu können</li>
<li><b>Schlachtschiffe</b> – das Rückgrat der Kriegsmarine</li>
<li><b>SpecOps-Schlachtschiffe</b> – unverzichtbar für die Durchführung
von Spezialoperationen (Annektierung eines unabhängigen Systems, Schwächung der
Wirtschaftskraft, politischer Umsturz)</li>
</ul>
</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/strategicoverview51umz.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/strategicoverview51umz.jpg" width="320" /></a></div>
<br />
<br />
<b style="mso-bidi-font-weight: normal;">Ereignisse</b></div>
<div class="MsoNormal">
Zusätzliche Ereignisse, durch welche sich die
wirtschaftlichen und politischen Verhältnisse innerhalb eines Systems nachhaltig
verändern können, tragen zu einem abwechslungsreicheren Spielgeschehen bei:</div>
<div class="MsoNormal">
<br />
<br />
<br />
<br />
<br />
<br /></div>
<ul>
<li>wirtschaftliche Aufschwünge</li>
<li>wirtschaftliche Einbrüche</li>
<li>Seuchenausbrüche</li>
<li>Naturkatastrophen</li>
<li>Probleme mit der planetaren Energieversorgung</li>
<li>ein terroristischer Anschlag auf die planetare
Energieversorgung</li>
<li>Probleme mit der Trinkwasserversorgung</li>
<li>ein terroristischer Anschlag auf die Trinkwasserversorgung</li>
<li>Probleme mit der Nahrungsmittelversorgung</li>
<li>ein terroristischer Anschlag auf die
Nahrungsmittelversorgung</li>
</ul>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;">Hinweis:</b> Die
Sonnensystemansicht ist im aktuellen Prototyp nicht verfügbar, da die
Planetendarstellung in nächster Zeit noch überarbeitet werden wird.</div>
<div class="MsoNormal">
<br /></div>
<br />
<br />
<span style="font-size: large;"><b>Excel OpenOffice Game Design Prototype</b></span><br />
<div style="text-align: left;">
<span style="font-size: large;"><b>(LGPL-Licence; Visual C++ 2010):</b></span></div>
<span style="font-size: large;"><a href="https://drive.google.com/uc?export=download&id=1-V2HE0elJWuKmnSLGsuCBqrcCH29ko3E" target="">Game Prototype</a></span><br />
<br />Alexhttp://www.blogger.com/profile/12911562805026944414noreply@blogger.comtag:blogger.com,1999:blog-5848355335367860180.post-3874294641132699602013-08-01T08:45:00.003-07:002022-03-15T13:01:00.277-07:00Spieleprototyp 6: Rendezvous-Zonen, Kriegsgebiete, Special Operations (Spec Ops) und eine verbesserte strategische KI<div class="MsoNormal">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/prototype6_1yoazw.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/prototype6_1yoazw.jpg" width="320" /></a></div>
Wie lassen sich spannende 3D-Echtzeit-Weltraumschlachten in
den umkämpften Sonnensystemen einerseits und das strategische Flotten-Management auf galaktischer Ebene andererseits in einem Spiel miteinander kombinieren?</div>
<div class="MsoNormal">
<br />
Wie lassen sich strategische Flottenoperationen abwechslungsreicher
gestalten?</div>
<div class="MsoNormal">
<br />
Was ist zu tun, damit die Spielmechanik insgesamt ein wenig realistischer wirkt?</div>
<div class="MsoNormal">
<br />
<a href="https://abload.de/img/prototype6_2ehb4o.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/prototype6_2ehb4o.jpg" width="320" /></a>Und wie lässt sich der Schwierigkeitsgrad des Spiels an die
Fähigkeiten des Spielers anpassen?<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br /></div>
<div class="MsoNormal">
<a name='more'></a><a href="https://abload.de/img/prototype6_3pwa8c.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/prototype6_3pwa8c.jpg" width="320" /></a>Beginnen wir mit dem letzen Punkt – dem Schwierigkeitsgrad. Die
Häufigkeit (bzw. die Wahrscheinlichkeit), mit der ein bestimmter Schiffstyp von
der KI auf Reisen geschickt wird, lässt sich mithilfe von sogenannten
Flight-Probability-Faktoren festlegen, die in einer Schiffsdatenbank-Datei
(z.B. <i style="mso-bidi-font-style: normal;">SpaceShipDatabase1.txt</i>)
gespeichert sind.</div>
<div class="MsoNormal">
<br />
<br />
<br />
<br />
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;"><span lang="EN-GB" style="mso-ansi-language: EN-GB;">Beispiel:</span></b></div>
<div class="MsoNormal">
<span style="background-color: white;"><br /></span></div>
<div class="MsoNormal">
<span style="color: blue;"><span style="background-color: white;"><span style="font-family: "courier new" , "courier" , monospace;"><span lang="EN-GB" style="color: green; font-family: "courier new"; mso-ansi-language: EN-GB; mso-bidi-font-family: "Times New Roman";">BattleCruiserEmpire2_FlightProbabilityFactor:
0.025</span></span></span></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Möchte man nun den Schwierigkeitsgrad des Spiels verringern,
muss man hierfür lediglich die feindlichen Flottenbewegungen ein wenig
einschränken und/oder die Flottenbewegungen des vom Spieler kontrollierten
Imperiums entsprechend intensivieren:</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;">Wird ein Sonnensystem
mit weniger Schiffen angegriffen, kann das System besser verteidigt werden.</b></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;">Werden weniger
Schiffe zur Verteidigung geschickt, dann kann ein Sonnensystem leichter erobert
werden.</b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Zu diesem Zweck modifizieren wir die
Flight-Probability-Faktoren der einzelnen Schiffstypen mithilfe zweier Faktoren
(<span style="color: #38761d;"><span style="font-family: "courier new" , "courier" , monospace;"><span style="color: green; font-family: "courier new"; mso-bidi-font-family: "Times New Roman";">DifficultyValue</span></span></span>, <span style="color: #38761d;"><span style="font-family: "courier new" , "courier" , monospace;"><span style="color: green; font-family: "courier new"; mso-bidi-font-family: "Times New Roman";">PlayerAISupportValue</span></span></span>),
die ihrerseits in der Datei <i style="mso-bidi-font-style: normal;">GameSettings.txt</i>
gespeichert sind:</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="color: #38761d;"><span style="font-family: "courier new" , "courier" , monospace;"><span lang="EN-GB" style="color: green; font-family: "courier new"; mso-ansi-language: EN-GB; mso-bidi-font-family: "Times New Roman";">DifficultyValue(small==easy):
0.02</span></span></span></div>
<div class="MsoNormal">
<span style="color: #38761d;"><span style="font-family: "courier new" , "courier" , monospace;"><span lang="EN-GB" style="color: green; font-family: "courier new"; mso-ansi-language: EN-GB; mso-bidi-font-family: "Times New Roman";">PlayerAISupportValue:
1.0</span></span></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;">Spieler-Schlachtschiff:</b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="color: #38761d;"><span style="font-family: "courier new" , "courier" , monospace;"><span style="color: green; font-family: "courier new"; mso-bidi-font-family: "Times New Roman";">BattleCruiserEmpire0_FlightProbabilityFactor *=<br />
PlayerAISupportValue</span></span></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;">gegnerisches Schlachtschiff:</b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="color: #38761d;"><span style="font-family: "courier new" , "courier" , monospace;"><span lang="EN-GB" style="color: green; font-family: "courier new"; mso-ansi-language: EN-GB; mso-bidi-font-family: "Times New Roman";">BattleCruiserEmpire2_FlightProbabilityFactor
*=<br />
DifficultyValue</span></span></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;">Special Operations
(Spec Ops)</b><span lang="EN-GB" style="mso-ansi-language: EN-GB;"></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/prototype6_specops160bnb.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/prototype6_specops160bnb.jpg" width="320" /></a></div>
Damit der Kampf um die einzelnen Sternensysteme insgesamt
ein wenig abwechslungsreicher wird, werden auf einzelnen Schlachtschiffen nach
dem Zufallsprinzip (die zugehörigen Parameter sind in der Datei <i style="mso-bidi-font-style: normal;">AIValues.txt</i> gespeichert) zusätzliche
Kommandoeinheiten für die Durchführung von militärischen Spezialoperationen stationiert:</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/prototype6_specops2d6aex.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/prototype6_specops2d6aex.jpg" width="320" /></a></div>
<b style="mso-bidi-font-weight: normal;">Spec-Ops-Missionen:</b></div>
<div class="MsoNormal">
<br /></div>
<ul>
</ul>
<b>Kein Spezialeinsatz ausgewählt<br />Unabhängiges Sonnensystem annektieren<br />Wirtschaftskraft schwächen<br />Politischer Umsturz</b><br />
<ul>
</ul>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br />
<br />
<br />
<br />
<b style="mso-bidi-font-weight: normal;">Realistischere Spielmechanik</b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
In den bisherigen
Spieleprototypen wirkte sich die Ankunft eines Raumschiffs im Zielsystem stets unmittelbar auf das Spielgeschehen aus (Beispiel: Raumfrachter
trifft ein => wirtschaftliche Ressourcen steigen an). Im aktuellen Prototyp werden die jeweiligen Auswirkungen erst nach
einer mehr oder weniger langen zeitlichen Verzögerung sichtbar, wodurch die Spielmechanik insgesamt deutlich realistischer wirkt:</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;">Beispiel 1:</b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Raumfrachter trifft ein <b style="mso-bidi-font-weight: normal;">=></b></div>
<div class="MsoNormal">
Ladung wird gelöscht <b style="mso-bidi-font-weight: normal;">(beansprucht
Zeit)</b> <b style="mso-bidi-font-weight: normal;">=></b></div>
<div class="MsoNormal">
wirtschaftliche Ressourcen steigen an</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;">Beispiel 2:</b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Militärschiff auf Spec-Ops-Mission erreicht ein Sonnensystem
<b style="mso-bidi-font-weight: normal;">=></b></div>
<div class="MsoNormal">
Spec-Ops-Mission wird durchgeführt <b style="mso-bidi-font-weight: normal;">(beansprucht Zeit)</b> <b style="mso-bidi-font-weight: normal;">=></b></div>
<div class="MsoNormal">
Auswirkungen einer erfolgreich durchgeführten
Spec-Ops-Mission werden sichtbar (Beispiel: Annektierung des Sonnensystems)</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Die für die zeitlichen Verzögerungen verantwortlichen
Parameter sind in der Datei <i style="mso-bidi-font-style: normal;">AIValues.txt</i>
gespeichert:</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="color: #38761d;"><span style="font-family: "courier new" , "courier" , monospace;"><span style="color: green; font-family: "courier new"; mso-bidi-font-family: "Times New Roman";">#SpaceShipStandardOpsExecutionDelayValue:# 500</span></span></span></div>
<div class="MsoNormal">
<span style="color: #38761d;"><span style="font-family: "courier new" , "courier" , monospace;"><span style="color: green; font-family: "courier new"; mso-bidi-font-family: "Times New Roman";">#SpaceShipMilitaryOpsExecutionDelayValue:# 1000</span></span></span></div>
<div class="MsoNormal">
<span style="color: #38761d;"><span style="font-family: "courier new" , "courier" , monospace;"><span style="color: green; font-family: "courier new"; mso-bidi-font-family: "Times New Roman";">#SpaceShipSpecOpsExecutionDelayValue:# 1000</span></span></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;">Sektorisierung der
Sonnensysteme – Rendezvous-Zonen, Kriegsgebiete</b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/prototype6_rendezvouspllnq.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/prototype6_rendezvouspllnq.jpg" width="320" /></a></div>
Bevor wir in unseren zukünftigen Prototypen spannende
3D-Echtzeit-Weltraumschlachten in den umkämpften Sonnensystemen inszenieren
können, müssen wir zunächst klären, wann und wo diese Schlachten überhaupt
stattfinden sollen. In den bisherigen Prototypen blieben bei der Simulation
einer Raumschlacht die genauen Positionen der beteiligten Raumschiffe im
betreffenden Sonnensystem stets unberücksichtigt. Sobald sich in einem System
ein oder mehrere gegnerische Schiffe gegenüberstanden, wurde der Ausgang einer
möglichen Schlacht unverzüglich berechnet.</div>
<div class="MsoNormal">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/prototype6_warzone5fxpu.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/prototype6_warzone5fxpu.jpg" width="320" /></a></div>
<br />
Im aktuellen Prototyp lassen sich in einem Sonnensystem in
der Nähe eines jeden Planeten oder Mondes Rendezvous-Zonen einrichten, auf die
sich die einzelnen Schiffe dann verteilen. Zu einer Raumschlacht kommt es erst
dann, wenn sich gegnerische Raumschiffe im gleichen Gebiet (Kriegsgebiet, z. B.
ein bewohnter Planet) befinden. Ein KI-Angriff auf eine gegnerische
Rendezvous-Zone findet nur dann statt, wenn der Gegner in Unterzahl ist.</div>
<div class="MsoNormal">
<br /></div>
<!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" LatentStyleCount="156">
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Normale Tabelle";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman";
mso-ansi-language:#0400;
mso-fareast-language:#0400;
mso-bidi-language:#0400;}
</style>
<![endif]--><br />
<span style="font-size: large;"><b>actual Game Prototype</b></span><br />
<div style="text-align: left;">
<span style="font-size: large;"><b>(LGPL-Licence; Visual C++ 2010):</b></span></div>
<span style="font-size: large;"><a href="https://drive.google.com/uc?export=download&id=1-V2HE0elJWuKmnSLGsuCBqrcCH29ko3E" target="">actual Game Prototype</a></span><br />
<span style="font-size: large;"> </span>
<br />
<br />Alexhttp://www.blogger.com/profile/12911562805026944414noreply@blogger.comtag:blogger.com,1999:blog-5848355335367860180.post-70354846146882317412013-06-07T08:23:00.002-07:002022-03-15T13:00:20.816-07:00Spieleprototyp 5: Raumschiffe auf interstellaren Reisen – der Warpflug<div class="MsoNormal">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/warpflight13da1w.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/warpflight13da1w.jpg" width="320" /></a></div>
Obwohl mit der Darstellung von Planeten, Monden und
Asteroiden im letzten Prototyp zum ersten Mal so etwas wie Weltraum-Feeling
aufgekommen ist, hat doch bisher ein für Weltraumspiele so entscheidendes Gameplay-Element
gefehlt – echte Raumschiffe anstelle simpler zweidimensionaler Icons.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/warpflight2i4bvq.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/warpflight2i4bvq.jpg" width="320" /></a></div>
Im
aktuellen Spieleprototyp werden wir nun endlich dreidimensionale
Raumschiffmodelle in unser Spiel integrieren, um mit ihrer Hilfe den Warpflug
zu simulieren – klicken Sie einfach ein Raumschiff-Icon mit der linken
Maustaste an und schon befinden Sie sich in der Warpflug-Ansicht. Mit einem
weiteren Linksklick können Sie jederzeit zurück in die strategische Ansicht
wechseln.</div>
<br />
<br />
<br />
<br />
<a name='more'></a><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/warpflight31woir.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/warpflight31woir.jpg" width="320" /></a></div>
<b style="mso-bidi-font-weight: normal;">Spielsteuerung:</b><br />
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;">ESC:</b> Spiel
Beenden</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;">RETURN:</b> Main
Option Screen / Ansicht Wechseln (Sonnensystem -> Galaktisch)</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;">s:</b> Spiel speichern</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;">MAUSRAD/PFEILTASTEN:</b>
Kameraverschiebung in Cursor-Richtung</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://abload.de/img/warpflight4qyq8d.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/warpflight4qyq8d.jpg" width="320" /></a><b style="mso-bidi-font-weight: normal;">MAUSBEWEGUNG+RECHTE
MAUSTASTE:</b> Drehung Auf, Ab, Rechts, Links</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;">CURSOR IN
BILDECKE+RECHTE MAUSTASTE:</b> Blickrichtungsdrehung</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;">MITTLERE
MAUSTASTE/MAUSRAD:</b> Warp-Flug initiieren / Schiffsklasse wählen</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;">MITTLERE MAUSTASTE:</b> Kamera beim gewählten System positionieren</div>
<div class="MsoNormal">
<span style="mso-spacerun: yes;"></span>(Strategisches bzw. Missions Info-Display)</div>
<div class="MsoNormal">
<a href="https://abload.de/img/warpflight5u2p18.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/warpflight5u2p18.jpg" width="320" /></a></div>
<div class="MsoNormal">
<br />
<b style="mso-bidi-font-weight: normal;">LINKE MAUSTASTE:</b>
(De)selektiere System / Selektiere System (Strategisches bzw. Missions
Info-Display)</div>
<div class="MsoNormal">
<span style="mso-spacerun: yes;"></span>Ansicht wechseln (Warpflug <-> Galaktisch -> Sonnensystem)</div>
<div class="MsoNormal">
<br /></div>
<span style="font-size: large;"><b>actual Game Prototype</b></span><br />
<div style="text-align: left;">
<span style="font-size: large;"><b>(LGPL-Licence; Visual C++ 2010):</b></span></div>
<span style="font-size: large;"><a href="https://drive.google.com/uc?export=download&id=1-V2HE0elJWuKmnSLGsuCBqrcCH29ko3E" target="">actual Game Prototype</a></span><br />
<br />Alexhttp://www.blogger.com/profile/12911562805026944414noreply@blogger.comtag:blogger.com,1999:blog-5848355335367860180.post-58671577972326092482013-04-10T05:55:00.001-07:002022-03-15T12:59:24.332-07:00Spieleprototyp 4: Prozedurale Planeten, Monde und Asteroiden<div class="MsoNormal">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/solarsystemplanet946oi6.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/solarsystemplanet946oi6.jpg" width="320" /></a></div>
Die Darstellung von Planeten, Monden und Asteroiden wird bei
steigender Anzahl von spielrelevanten Sonnensystemen schnell zum Albtraum. Während
man als Grafiker damit beschäftigt ist, hunderte von hochaufgelösten Planetentexturen
in mühevoller Kleinarbeit zu modellieren, muss man als Spieler mit mehr oder
weniger langen Wartezeiten rechnen, bis alle nicht mehr benötigten Texturen des
zuletzt besuchten Sonnensystems aus dem Grafikspeicher entfernt und durch die Texturen
des aktuellen Systems ersetzt worden sind.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/solarsystemplanet33wrzs.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/solarsystemplanet33wrzs.jpg" width="320" /></a></div>
Im Rahmen unseres vierten
Spieleprototyps werden wir einen vollkommen anderen Weg einschlagen und auf die
Verwendung von hochaufgelösten Oberflächentexturen verzichten. Lediglich die
Wolken und Planetenringe werden auf herkömmliche Weise mithilfe von im Vorfeld
erstellten Texturen dargestellt. Die Planetenoberflächen werden jedoch im Zuge
des Renderings mithilfe von wenigen Parametern in Echtzeit prozedural erzeugt.</div>
<div class="MsoNormal">
<br />
<br />
<br />
<a name='more'></a><div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/solarsystemplanet1cqdi1.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/solarsystemplanet1cqdi1.jpg" width="320" /></a></div>
<br />
<a href="https://abload.de/img/solarsystemplanet8kfzao.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/solarsystemplanet8kfzao.jpg" width="320" /></a><br />
<span style="font-size: large;"><b>Prototype 4</b></span><br />
<div style="text-align: left;">
<span style="font-size: large;"><b>(LGPL-Licence; Visual C++ 2010):</b></span></div>
<div style="text-align: left;">
<span style="font-size: large;"><a href="https://drive.google.com/uc?export=download&id=1-U9cqX8oWVckOD3DfxNRV7OA3ywJeYtr" target="">Prototype 4</a></span><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<a href="https://abload.de/img/solarsystemplanet214dsc.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/solarsystemplanet214dsc.jpg" width="320" /></a><span style="font-size: large;"> </span><br />
<br />
<span style="font-size: large;"> </span><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/solarsystembig1z4zvl.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/solarsystembig1z4zvl.jpg" width="320" /></a><span style="font-size: large;"> </span></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/solarsystembig2ltbp1.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/solarsystembig2ltbp1.jpg" width="320" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<a href="https://abload.de/img/solarsystemplanet50msnp.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/solarsystemplanet50msnp.jpg" width="320" /></a><span style="font-size: large;"> </span><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<a href="https://abload.de/img/solarsystemplanet11jyat8.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/solarsystemplanet11jyat8.jpg" width="320" /></a><span style="font-size: large;"> </span><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<a href="https://abload.de/img/solarsystemplanet4n6a5u.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/solarsystemplanet4n6a5u.jpg" width="320" /></a><span style="font-size: large;"> </span><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<a href="https://abload.de/img/solarsystemplanet63ze2q.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/solarsystemplanet63ze2q.jpg" width="320" /></a><span style="font-size: large;"> </span><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/solarsystemplanet10tisox.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/solarsystemplanet10tisox.jpg" width="320" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<a href="https://abload.de/img/solarsystemplanet7juscz.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/solarsystemplanet7juscz.jpg" width="320" /></a><span style="font-size: large;"> </span><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<a href="https://abload.de/img/solarsystemplanet14twsow.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/solarsystemplanet14twsow.jpg" width="320" /></a><span style="font-size: large;"> </span><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<a href="https://abload.de/img/solarsystemplanet13g0rah.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/solarsystemplanet13g0rah.jpg" width="320" /></a><span style="font-size: large;"> </span><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/solarsystemplanet15jto71.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/solarsystemplanet15jto71.jpg" width="320" /></a></div>
<a href="https://abload.de/img/solarsystemplanet12e1o1m.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/solarsystemplanet12e1o1m.jpg" width="320" /></a><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br /></div>
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="text-align: left;">
<br /></div>
Alexhttp://www.blogger.com/profile/12911562805026944414noreply@blogger.comtag:blogger.com,1999:blog-5848355335367860180.post-1525439549082796282013-03-12T03:26:00.001-07:002022-03-15T12:58:46.971-07:00Spieleprototyp 3: Planetensysteme, strategisches Gameplay und Missionen<div class="MsoNormal" style="text-align: left;">
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/solarsystem16wxtt.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/solarsystem16wxtt.jpg" width="320" /></a></div>
Fehlende Planetensysteme wie in unserem zweiten Prototyp
sind für jede Art von Weltraumspielen ein absolutes No-Go. Darüber hinaus ist
das Gameplay – freundlich gesagt – ein wenig zu schlicht geraten, da wir bisher
auf die Implementierung von Missionen verzichtet haben.<br />
Im Rahmen eines dritten Prototyps werden wir nun mithilfe
von Planetensystemen und Missionen für ein wenig mehr Weltraum-Feeling sowie
für zusätzliche Spannung und Unterhaltung sorgen.<br />
<br />
<a name='more'></a></div>
<div class="MsoNormal" style="text-align: left;">
<br />
<b style="mso-bidi-font-weight: normal;">Eckpunkte bei der
Entwicklung des dritten Spieleprototyps:</b></div>
<div class="MsoNormal" style="text-align: left;">
<br /></div>
<div class="MsoNormal" style="text-align: left;">
<div class="separator" style="clear: both; text-align: center;">
</div>
<a href="https://abload.de/img/solarsystem2asbjx.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/solarsystem2asbjx.jpg" width="320" /></a><br />
<ul>
<li>Bei der prozeduralen Erzeugung der Galaxie werden für alle
Sterne individuelle Planetensysteme generiert.</li>
<li>Die Bewegung der Planeten und Monde wird für alle
bewohnten Systeme in Echtzeit in einem separaten Thread simuliert.</li>
<li>Im selektierten Sonnensystem werden sowohl die Umlaufbahnen
(Orbitalkurven) wie auch alle Planeten und Monde schematisch dargestellt.</li>
<li>Unmittelbar nach dem Spielstart wird der Spieler mithilfe
eines textbasierten Prologs auf die kommenden Ereignisse und Herausforderungen eingestimmt.</li>
</ul>
</div>
<div class="MsoNormal" style="text-align: left;">
<ul>
<li><a href="https://abload.de/img/prologue1xtsch.jpg" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="240" src="https://abload.de/img/prologue1xtsch.jpg" width="320" /></a>Im Unterschied zu den vorangegangenen Prototypen lässt sich nun
eine beliebig große Anzahl von Spielständen laden bzw. speichern. Datum und
Uhrzeit zum Zeitpunkt des Speichervorgangs werden protokolliert, so dass sich
die gespeicherten Spielstände eindeutig identifizieren lassen.</li>
<li>Die Darstellung der dreidimensionalen Nebelwolken wurde
überarbeitet.</li>
</ul>
<a href="https://abload.de/img/solarsystem3ylfv9.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/solarsystem3ylfv9.jpg" width="320" /></a><br />
<br />
<br />
<ul>
<li>Im dritten Prototyp kann der Spieler das aktuelle
Spielgeschehen durch Teilnahme an diversen Missionen nachhaltig beeinflussen.
Laufende Missionen können zwar grundsätzlich auch ignoriert werden, jedoch
wirkt sich eine erfolgreich absolvierte Mission in jedem Fall positiv auf den
weiteren Spielverlauf aus.</li>
</ul>
</div>
<div class="MsoNormal" style="text-align: left;">
<br />
<br />
<br />
<br />
<br /></div>
<div class="MsoNormal" style="text-align: left;">
<a href="https://abload.de/img/solarsystem4xlivl.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/solarsystem4xlivl.jpg" width="320" /></a><b style="mso-bidi-font-weight: normal;">Missionstypen:</b></div>
<div class="MsoNormal" style="text-align: left;">
<br /></div>
<div class="MsoNormal" style="text-align: left;">
<b style="mso-bidi-font-weight: normal;">Diplomatische Anfrage:</b>
Unabhängige Systeme bitten aus den unterschiedlichsten Gründen um die Aufnahme
in das vom Spieler kontrollierte Imperium. Es ist Aufgabe des Spielers,
militärische Einheiten ins besagte System zu entsenden, damit diese dann einen Flottenstützpunkt
errichten können.</div>
<div class="MsoNormal" style="text-align: left;">
<br /></div>
<div class="MsoNormal" style="text-align: left;">
<a href="https://abload.de/img/initialisation1ysp5m.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/initialisation1ysp5m.jpg" width="320" /></a><b style="mso-bidi-font-weight: normal;">Notfallkanal:</b> Nahrungsmittel
sowie medizinische und technische Hilfsgüter müssen mithilfe von militärischen
Transportschiffen in ein von Naturkatastrophen oder Pandemien heimgesuchtes System
transportiert werden.</div>
<div class="MsoNormal" style="text-align: left;">
<br /></div>
<div class="MsoNormal" style="text-align: left;">
<b style="mso-bidi-font-weight: normal;">militärisches
Beistandsgesuch:</b> Annektierte Systeme bitten um militärischen Beistand. Es
ist Aufgabe des Spielers, Kriegsschiffe ins Krisengebiet zu entsenden und die feindlichen
Invasoren (vom Computer kontrollierte Imperien) zu vertreiben.</div>
<div class="MsoNormal" style="text-align: left;">
<br /></div>
<div class="MsoNormal" style="text-align: left;">
<a href="https://abload.de/img/initialisation2toxpt.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/initialisation2toxpt.jpg" width="320" /></a><b style="mso-bidi-font-weight: normal;">Verstärkung der
eigenen Flotte in einem Kampfgebiet:</b> In einem umkämpften System muss die
eigene Flotte vor einer drohenden Niederlage bewahrt werden. Es ist Aufgabe des
Spielers, zusätzliche Kriegsschiffe ins Kampfgebiet zu entsenden.</div>
<div class="MsoNormal" style="text-align: left;">
<br /></div>
<div class="MsoNormal" style="text-align: left;">
<b style="mso-bidi-font-weight: normal;">Heimatwelt-Verteidigung:</b>
Im Verlauf eines groß angelegten Angriffs auf eine der Heimatwelten des vom
Spieler kontrollierten Imperiums drohen die Verteidigungslinien
zusammenzubrechen. Es obliegt dem Spieler, die besetzte Heimatwelt wieder
zurückzuerobern.</div>
<div class="MsoNormal" style="text-align: left;">
<br /></div>
<div class="MsoNormal" style="text-align: left;">
<br /></div>
<br />
<div style="text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div style="text-align: left;">
<span style="font-size: large;"><b>Prototype 3</b></span></div>
<div style="text-align: left;">
<span style="font-size: large;"><b>(LGPL-Licence; Visual C++ 2010):</b></span></div>
<div style="text-align: left;">
<span style="font-size: large;"><a href="https://drive.google.com/uc?export=download&id=1-EiKUcFqeBbDgNj0KBdOwnbK7V08i9F3" target="">Prototype 3</a></span></div>
<br />
<br />Alexhttp://www.blogger.com/profile/12911562805026944414noreply@blogger.comtag:blogger.com,1999:blog-5848355335367860180.post-11589785554851611612013-01-28T06:57:00.001-08:002018-06-11T06:23:52.847-07:00Real-Time Procedural Planet Rendering (Gallery 1)<div class="MsoNormal">
Planeten zählen einmal abgesehen von den Raumschiffen und
Orbitalstationen zu den wichtigsten Elementen eines jeden Weltraumspiels. Während
es bei einer begrenzten Anzahl von Sternensystemen möglich ist, die einzelnen
Planetenoberflächen im Vorfeld mithilfe geeigneter Grafikprogramme per Hand zu
modellieren, ist man bei offenen Spielewelten mit hunderten von Sternen auf prozedurale
Verfahren angewiesen, mit deren Hilfe sich eine Vielzahl unterschiedlicher
Planetentypen in Echtzeit generieren und darstellen lassen (Real-Time
Procedural Planet Rendering).</div>
<div class="MsoNormal">
Die nachfolgenden Abbildungen zeigen einige der Planeten,
die mithilfe unseres <a href="https://www.graphics-and-physics-framework.spieleprogrammierung.net/2013/01/tutorial-30-real-time-procedural-planet.html" target="_blank"><b style="mso-bidi-font-weight: normal;">Procedural Planet Rendering Tools</b></a> generiert wurden:</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;">Erdähnliche Planeten und Dschungelwelten:</b></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/earthtype3rmij2.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://abload.de/img/earthtype3rmij2.jpg" height="300" width="400" /></a></div>
<div class="MsoNormal">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/earthtype1yppry.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://abload.de/img/earthtype1yppry.jpg" height="300" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/earthtype2yeoc1.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://abload.de/img/earthtype2yeoc1.jpg" height="300" width="400" /></a></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/jungleworldr7bl4.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://abload.de/img/jungleworldr7bl4.jpg" height="300" width="400" /></a></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br />
<br />
<br />
<b style="mso-bidi-font-weight: normal;"></b><br />
<a name='more'></a><b style="mso-bidi-font-weight: normal;">Eis- und Wasserwelten:</b></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/iceworld181b7x.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://abload.de/img/iceworld181b7x.jpg" height="300" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/iceworld181b7x.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://abload.de/img/iceworld181b7x.jpg" height="300" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/iceworld3xcsug.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://abload.de/img/iceworld3xcsug.jpg" height="300" width="400" /></a></div>
<div class="MsoNormal">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/waterworldbyse2.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://abload.de/img/waterworldbyse2.jpg" height="300" width="400" /></a></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br />
<br />
<br />
<b style="mso-bidi-font-weight: normal;">Vulkanische Welten:</b></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/volcanicworld1vpsij.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://abload.de/img/volcanicworld1vpsij.jpg" height="300" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/volcanicworld3pkelo.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://abload.de/img/volcanicworld3pkelo.jpg" height="300" width="400" /></a></div>
<div class="MsoNormal">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/volcanicworld2epf69.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://abload.de/img/volcanicworld2epf69.jpg" height="300" width="400" /></a></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br />
<br />
<br />
<b style="mso-bidi-font-weight: normal;">Wüstenplaneten:</b></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/desertworld1azaqa.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://abload.de/img/desertworld1azaqa.jpg" height="300" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/desertworld2whx8e.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://abload.de/img/desertworld2whx8e.jpg" height="300" width="400" /></a></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br />
<br />
<br />
<b style="mso-bidi-font-weight: normal;">Marsähnliche
Planeten:</b></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/marstype1dzygy.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://abload.de/img/marstype1dzygy.jpg" height="300" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/marstype2sjllz.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://abload.de/img/marstype2sjllz.jpg" height="300" width="400" /></a></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br />
<br />
<br />
<b style="mso-bidi-font-weight: normal;">Venusähnliche Welten
und Gesteinsplaneten ohne Atmosphäre:</b></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/venusworldcasf5.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://abload.de/img/venusworldcasf5.jpg" height="300" width="400" /></a></div>
<div class="MsoNormal">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/barrenplanet13ssyo.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://abload.de/img/barrenplanet13ssyo.jpg" height="300" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/barrenplanet254p16.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://abload.de/img/barrenplanet254p16.jpg" height="300" width="400" /></a></div>
<div class="MsoNormal">
<br /></div>
Alexhttp://www.blogger.com/profile/12911562805026944414noreply@blogger.comtag:blogger.com,1999:blog-5848355335367860180.post-20880339821137094842013-01-06T10:13:00.001-08:002022-03-15T12:57:53.529-07:00Spieleprototyp 2: strategisches Gameplay – Test 1<div class="MsoNormal">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/prototype2uds98.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/prototype2uds98.jpg" width="320" /></a></div>
Im Unterschied zum ersten Spieleprototyp, bei dem die
prozedurale Generierung der Spielewelt im Vordergrund steht und der Spieler lediglich
die Rolle eines Beobachters einnimmt, dient Prototyp 2 dem Test grundlegender Gameplay-Elemente
eines Echtzeit-Strategiespiels.</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br />
<br />
<br />
<br />
<br />
<br />
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;">Eckpunkte bei der
Entwicklung des zweiten Spieleprototyps:</b></div>
<div class="MsoNormal">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/prototype2_gameplay3l5dip.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/prototype2_gameplay3l5dip.jpg" width="320" /></a></div>
<b style="mso-bidi-font-weight: normal;">Ein in sich
abgeschlossenes kleines Strategiespiel um die Vorherrschaft im Weltall:</b><br />
<ul>
<li>Bis zu drei galaktische Imperien treten gegeneinander an.
Imperium 1 wird vom Spieler kontrolliert, die Imperien 2 und 3 vom Computer.</li>
<li>Die Anzahl der Heimatwelten der galaktischen Imperien ist
frei wählbar.</li>
<li>In allen bewohnten Sternensystemen werden Änderungen der wirtschaftlichen
und politischen Verhältnisse in Abhängigkeit vom aktuellen Spielverlauf
dynamisch simuliert.</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<a name='more'></a><br />
<br />
<div class="MsoNormal">
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/prototype2_gameplay1g5cip.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/prototype2_gameplay1g5cip.jpg" width="320" /></a></div>
<b style="mso-bidi-font-weight: normal;">Interstellarer
Handel:</b></div>
<ul>
<li>Zivile Raumschiffe (Schiffsklassen: Passagierschiff,
Cargo-Schiff) bilden das Rückgrat des galaktischen Wirtschaftssystems. Sie steuern
eigenständig bewohnte Sonnensysteme an und versorgen diese kontinuierlich mit
allen benötigten Wirtschaftsgütern (Ressourcen).</li>
<li>Darüber hinaus lassen sich militärische Transportschiffe zur
gezielten Nachschubsicherung einsetzen. Die Anzahl der alliierten Systeme
vergrößert sich, wenn ein wirtschaftlich bzw. politisch instabiles Sternensystem
auf diese Weise mit Nachschub versorgt wird (Expansion). </li>
</ul>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<b>Militärischer Schiffsbau: </b><br />
<ul>
<li>Der Spieler trägt die Verantwortung für den Ausbau der
eigenen militärischen Raumflotte (Schiffsklassen: Transporter, Zerstörer, Schwerer
Kreuzer und Schlachtkreuzer) in den Heimatwelten und alliierten Sternensystemen.</li>
</ul>
<br />
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/prototype2_gameplay24hyq0.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/prototype2_gameplay24hyq0.jpg" width="320" /></a></div>
<b style="mso-bidi-font-weight: normal;">Einfaches
Flotten-Management dank integrierter Flottenkommandos:</b></div>
<ul>
<li>Verteidigung der eigenen Heimatwelten und alliierten
Sternensysteme.</li>
<li>Angriff von feindlichen Heimatwelten und deren alliierter
Sternensysteme.</li>
<li>Auswahl von ökonomisch instabilen Sternensystemen als Flugziel
(Expansion).</li>
</ul>
<br />
<br />
<br />
<br />
<b>Militärschiffe lassen sich einzeln zu einem bewohnten
Sternensystem beordern.</b><br />
<b><br />Das Spiel lässt sich jederzeit unterbrechen. Der Bau neuer
Schiffe kann auch im Pausen-Modus in Auftrag geben werden. Gleichsam lassen
sich für einzelne Schiffe auch neue Flugziele festlegen.</b><br />
<br />
<div class="MsoNormal">
<br /></div>
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:HyphenationZone>21</w:HyphenationZone>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
</w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:HyphenationZone>21</w:HyphenationZone>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
</w:WordDocument>
</xml><![endif]-->
<br />
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;">Weiteres:</b></div>
<ul>
<li>Prozedurale Generierung einer Galaxie (vorerst ohne
Planetensysteme).</li>
<li>Die maximale Anzahl der bereits erforschten Systeme, sowie
die Distanz, innerhalb derer sich die Systeme befinden sollen, lässt sich bei
Spielbeginn festlegen.</li>
<li>Das aktuelle Spiel lässt sich jederzeit speichern.</li>
<li>Ein zuvor gespeichertes Spiel kann jederzeit fortgesetzt
werden.</li>
<li>Die Auswahl einzelner Sternensysteme und Schiffe erfolgt in
einem separaten Thread.</li>
<li>Die Durchführung von KI-Berechnungen erfolgt in einem
separaten Thread.</li>
<li>Sofern zuvor kein Sternensystem selektiert wurde, kann die
Kamera völlig frei im 3D-Raum bewegt und gedreht werden.</li>
<li>Andernfalls wird bei einer Drehung die Kamera immer auch neu
positioniert, so dass der Spieler das aktuell selektierte Sternensystem stets
im Blick behält (die Kamera bewegt sich im Orbit des selektierten Sternensystems).</li>
</ul>
<!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" LatentStyleCount="156">
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Normale Tabelle";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman";
mso-ansi-language:#0400;
mso-fareast-language:#0400;
mso-bidi-language:#0400;}
</style>
<![endif]--><br />
<div class="MsoNormal">
<br /></div>
<!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" LatentStyleCount="156">
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Normale Tabelle";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman";
mso-ansi-language:#0400;
mso-fareast-language:#0400;
mso-bidi-language:#0400;}
</style>
<![endif]--><span style="font-size: large;"><b>Prototype 2</b></span><br />
<span style="font-size: large;"><b>(LGPL-Licence; Visual C++ 2010):</b></span><br />
<span style="font-size: large;"><a href="https://drive.google.com/uc?export=download&id=1-RmaJDdX88X4a3RVQL4W6EyDK8PqwdOG" target="">Prototype 2</a></span><br />
<br />
<br />Alexhttp://www.blogger.com/profile/12911562805026944414noreply@blogger.comtag:blogger.com,1999:blog-5848355335367860180.post-23906653223798059982012-05-31T01:19:00.000-07:002018-06-11T06:28:44.056-07:00Galaxy Generation – 3D Nebulae<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/3dnebulae31oen.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://abload.de/img/3dnebulae31oen.jpg" height="240" width="320" /></a></div>
Gigantische dreidimensionale Nebel gehören zu den schönsten
und zugleich faszinierendsten Gebilden im Universum. Im heutigen Beitrag widmen
wir uns der Verteilung und Farbgebung dieser Nebelwolken; mit der Nebel- und
Sternen-Darstellung werden wir uns dann in den nächsten Artikelen befassen.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<div class="MsoNormal">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/3dnebulae101ruw.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://abload.de/img/3dnebulae101ruw.jpg" height="240" width="320" /></a></div>
Beim Rendern der Nebelwolken-Objekte kommen texturierte
3D-Modelle zum Einsatz. Die Anzahl der hierbei verwendeten Texturen lässt sich
nach belieben festlegen. Zu beachten ist, dass in den Texturen möglichst nur
Grauwerte gespeichert sein sollten, denn die Farbgebung erfolgt unabhängig von der
Texturierung:<br />
<br />
<br />
<br />
<br /></div>
<div class="MsoNormal">
<br />
<a name='more'></a><br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">Num3DNebulaTextures: 4</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">../Data/Textures/Local3DNebulae/Local3DNebula1.bmp</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">../Data/Textures/Local3DNebulae/Local3DNebula2.bmp</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">../Data/Textures/Local3DNebulae/Local3DNebula3.bmp</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">../Data/Textures/Local3DNebulae/Local3DNebula4.bmp</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Um möglichst abwechslungsreiche Nebelwolken-Verteilungen mit
möglichst wenigen Parametern zu erhalten, verwenden wir insgesamt vier unterschiedliche
Datensätze für die Beschreibung (Skalierung sowie Farbgebung) der einzelnen
Wolkentypen. Darüber hinaus lässt sich jeden Datensatz die Häufigkeit seiner
Verwendung (<span style="color: green; font-family: "Courier New";">DistributionValueMin/Max</span>)
festlegen.</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;">Datensatz 1:</b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">RandomColorNebulaObjectScaleMin: 34.0</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">RandomColorNebulaObjectScaleMax: 40.0</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">RandomColorNebulaObject_RedMin: 0.4</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">RandomColorNebulaObject_RedMax: 0.8</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">RandomColorNebulaObject_GreenMin: 0.1</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">RandomColorNebulaObject_GreenMax: 0.2</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">RandomColorNebulaObject_BlueMin: 0.1</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">RandomColorNebulaObject_BlueMax: 0.2</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">RandomColorNebulaObject_DistributionValueMin:
0.0</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">RandomColorNebulaObject_DistributionValueMax:
0.2</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;">Datensatz 2:</b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">RedColorNebulaObjectScaleMin: 32.0</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">RedColorNebulaObjectScaleMax: 34.0</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">RedColorNebulaObject_RedMin: 0.5</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">RedColorNebulaObject_RedMax: 0.8</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">RedColorNebulaObject_GreenMin: 0.0</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">RedColorNebulaObject_GreenMax: 0.0</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">RedColorNebulaObject_BlueMin: 0.0</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">RedColorNebulaObject_BlueMax: 0.0</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">RedColorNebulaObject_DistributionValueMin:
0.2</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">RedColorNebulaObject_DistributionValueMax:
0.4</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;">Datensatz 3:</b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">GreenColorNebulaObjectScaleMin: 32.0</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">GreenColorNebulaObjectScaleMax: 34.0</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">GreenColorNebulaObject_RedMin: 0.0</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">GreenColorNebulaObject_RedMax: 0.0</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">GreenColorNebulaObject_GreenMin: 0.5</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">GreenColorNebulaObject_GreenMax: 0.8</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">GreenColorNebulaObject_BlueMin: 0.0</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">GreenColorNebulaObject_BlueMax: 0.0</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">GreenColorNebulaObject_DistributionValueMin:
0.4</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">GreenColorNebulaObject_DistributionValueMax:
0.4</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;">Datensatz 4:</b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">BlueColorNebulaObjectScaleMin: 34.0</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">BlueColorNebulaObjectScaleMax: 40.0</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">BlueColorNebulaObject_RedMin: 0.0</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">BlueColorNebulaObject_RedMax: 0.0</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">BlueColorNebulaObject_GreenMin: 0.0</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">BlueColorNebulaObject_GreenMax: 0.0</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">BlueColorNebulaObject_BlueMin: 0.5</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">BlueColorNebulaObject_BlueMax: 1.4</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">BlueColorNebulaObject_DistributionValueMin:
0.4</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">BlueColorNebulaObject_DistributionValueMax:
1.0</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Die Nebelwolken selbst werden in der Umgebung der einzelnen
Sterne positioniert. Soll sich in der Nähe eines jeden Sterns mindestens eine
Nebelwolke befinden, so muss der <span style="color: green; font-family: "Courier New";">NebulaProbabilityFactor</span> auf <span style="color: green; font-family: "Courier New";">100.0</span> gesetzt werden:</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="color: green; font-family: "Courier New";">NebulaProbabilityFactor(0.0-100.0):
100.0</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Der <span style="color: green; font-family: "Courier New";">NebulaObjectPositionVarianceFactor</span>
definiert den maximalen Abstand einer Nebelwolke zum benachbarten Stern:</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="color: green; font-family: "Courier New";">NebulaObjectPositionVarianceFactor:
1.0</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Der <span style="color: green; font-family: "Courier New";">NebulaObjectDensity</span>-Parameter
legt schließlich die maximale Anzahl der Nebelwolken fest, die in der Umgebung
eines Sterns positioniert werden sollen:</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="color: green; font-family: "Courier New";">NebulaObjectDensity(1,2,3,...):
1</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Werfen wir nun noch einen kurzen Blick auf den zugehörigen
Source Code für die Positionierung der einzelnen Nebelwolken:</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">pNebulaSystem->Set_NumNebulaObjectsMax(g_NebulaObjectDensity*NumStars);</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">D3DXVECTOR3 pos;</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">float</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> NebulaObjectDeltaX =
g_NebulaObjectPositionVarianceFactor*</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> g_GalaxyParam_DeltaX;</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">float</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> NebulaObjectDeltaY =
g_NebulaObjectPositionVarianceFactor*</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> g_GalaxyParam_DeltaY;</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">float</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> NebulaObjectDeltaZ =
g_NebulaObjectPositionVarianceFactor*</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> g_GalaxyParam_DeltaZ;</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">for</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">(i = 0; i < NumStars; i++)</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">for</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">(j = 0; j <
g_NebulaObjectDensity; j++)</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">if</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">(frnd(0.0f, 100.0f) >=
g_NebulaProbabilityFactor)</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">
</span><span style="color: blue; font-family: "Courier New"; font-size: 10pt;">continue</span><span style="font-family: "Courier New"; font-size: 10pt;">;</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">pos = pGalaxy->WorldSpacePosition[i] +</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> D3DXVECTOR3(frnd(-NebulaObjectDeltaX,
NebulaObjectDeltaX),</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> frnd(-NebulaObjectDeltaY, NebulaObjectDeltaY),</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> frnd(-NebulaObjectDeltaZ,
NebulaObjectDeltaZ));</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br />
<span style="color: #38761d;"><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">/* Hinweis: </span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">pGalaxy->WorldSpacePosition[i]:</span></span><br />
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"><span style="color: #38761d;"> Position des Sterns mit dem Index i */ </span></span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br />
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">randomValue = frnd(0.0f, 1.0f);</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">if</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">(randomValue >=
g_RandomColorNebulaObject_DistributionValueMin &&</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> randomValue <
g_RandomColorNebulaObject_DistributionValueMax)</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span><br />
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> pNebulaSystem->Init_NebulaObject(&pos,
&D3DXVECTOR3(</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> frnd(g_RandomColorNebulaObject_RedMin,</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> g_RandomColorNebulaObject_RedMax),</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> frnd(g_RandomColorNebulaObject_GreenMin,</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> g_RandomColorNebulaObject_GreenMax),</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> frnd(g_RandomColorNebulaObject_BlueMin,</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> g_RandomColorNebulaObject_BlueMax)),</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> frnd(g_RandomColorNebulaObjectScaleMin,</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> g_RandomColorNebulaObjectScaleMax),</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> lrnd(0,</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 9.5pt;"> g_Num3DNebulaTextures</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">));</span><br />
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">}</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 9.5pt;"></span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">else</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> <span style="color: blue;">if</span>(randomValue
>= g_RedColorNebulaObject_DistributionValueMin &&</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> randomValue <
g_RedColorNebulaObject_DistributionValueMax)</span><br />
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{ </span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> pNebulaSystem->Init_NebulaObject(&pos,
&D3DXVECTOR3(</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> frnd(g_RedColorNebulaObject_RedMin,</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> g_RedColorNebulaObject_RedMax),</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> frnd(g_RedColorNebulaObject_GreenMin,</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> g_RedColorNebulaObject_GreenMax),</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> frnd(g_RedColorNebulaObject_BlueMin,</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> g_RedColorNebulaObject_BlueMax)),</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> frnd(g_RedColorNebulaObjectScaleMin,</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> g_RedColorNebulaObjectScaleMax),</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> lrnd(0,</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 9.5pt;">
g_Num3DNebulaTextures</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">));</span><br />
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">}</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 9.5pt;"></span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">else</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> <span style="color: blue;">if</span>(randomValue
>= g_GreenColorNebulaObject_DistributionValueMin &&</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> randomValue <
g_GreenColorNebulaObject_DistributionValueMax)</span><br />
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{ </span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> pNebulaSystem->Init_NebulaObject(&pos,
&D3DXVECTOR3(</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> frnd(g_GreenColorNebulaObject_RedMin,</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> g_GreenColorNebulaObject_RedMax),</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> frnd(g_GreenColorNebulaObject_GreenMin,</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> g_GreenColorNebulaObject_GreenMax),</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> frnd(g_GreenColorNebulaObject_BlueMin,</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> g_GreenColorNebulaObject_BlueMax)),</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> frnd(g_GreenColorNebulaObjectScaleMin,</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> g_GreenColorNebulaObjectScaleMax),</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> lrnd(0,</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 9.5pt;">
g_Num3DNebulaTextures</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">));</span><br />
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">}</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 9.5pt;"></span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">else</span><span lang="EN-GB" style="color: green; font-family: "Courier New"; font-size: 10pt;">//
if(randomValue >= g_BlueColorNebulaObject_DistributionValueMin &&</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: green; font-family: "Courier New"; font-size: 10pt;"> randomValue <
g_BlueColorNebulaObject_DistributionValueMax)</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"></span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span><br />
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> pNebulaSystem->Init_NebulaObject(&pos,
&D3DXVECTOR3(</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> frnd(g_BlueColorNebulaObject_RedMin,</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> g_BlueColorNebulaObject_RedMax),</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> frnd(g_BlueColorNebulaObject_GreenMin,</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> g_BlueColorNebulaObject_GreenMax),</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> frnd(g_BlueColorNebulaObject_BlueMin,</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> g_BlueColorNebulaObject_BlueMax)),</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> frnd(g_BlueColorNebulaObjectScaleMin,</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> g_BlueColorNebulaObjectScaleMax),</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> lrnd(0,</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 9.5pt;">
g_Num3DNebulaTextures</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">));</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 9.5pt;"></span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">}}}</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
Alexhttp://www.blogger.com/profile/12911562805026944414noreply@blogger.comtag:blogger.com,1999:blog-5848355335367860180.post-55662796666162830382012-05-26T03:06:00.000-07:002018-06-11T06:29:26.157-07:00Galaxy Generation – Sterne Teil 2<div class="separator" style="clear: both; text-align: center;">
<a href="https://abload.de/img/stars536pw2.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://abload.de/img/stars536pw2.jpg" height="240" width="320" /></a></div>
Die Bedeutung aller für die prozedurale Generierung einer
Galaxie benötigen Parameter haben wir im vorangegangenen Beitrag ausführlich
besprochen. Im Rahmen des heutigen Artikels werden wir nun die Erzeugung einer
neuen Galaxie in Form einer Schritt-für-Schritt-Anleitung in allen Einzelheiten
erörtern.<br />
<div class="MsoNormal">
<br />
<br />
<br />
<br />
<br />
<br />
<a name='more'></a><br /></div>
<div class="MsoNormal">
Im ersten Schritt wird die maximal mögliche Anzahl der Sterne
innerhalb der zu generierenden Galaxie berechnet, sowie die Startposition festgelegt,
von der aus die Positionierung der einzelnen Sterne beginnt.</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="color: blue; font-family: "Courier New"; font-size: 10pt;">long</span><span style="font-family: "Courier New"; font-size: 10pt;">
NumSunsMax = g_NumSunsMaxXDir*g_NumSunsMaxYDir*g_NumSunsMaxZDir;</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">D3DXVECTOR3* StellarPosition = <span style="color: blue;">new</span> D3DXVECTOR3[NumSunsMax];</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">bool</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">*
UseStellarPosition = <span style="color: blue;">new</span> <span style="color: blue;">bool</span>[NumSunsMax];</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">D3DXVECTOR3 CenterPos = g_NullVector;</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">D3DXVECTOR3 DiffVector;</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">D3DXVECTOR3 StartPos = D3DXVECTOR3(</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> -0.5f*(g_NumSunsMaxXDir-1)*g_GalaxyParam_DeltaX,</span></div>
<div class="MsoNormal">
<span lang="SV" style="font-family: "Courier New"; font-size: 10pt;"> -0.5f*(g_NumSunsMaxYDir-1)*g_GalaxyParam_DeltaY,</span></div>
<div class="MsoNormal">
<span lang="SV" style="font-family: "Courier New"; font-size: 10pt;"> -0.5f*(g_NumSunsMaxZDir-1)*g_GalaxyParam_DeltaZ);</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Alle Sterne werden zunächst unter Berücksichtigung der <span style="color: blue; font-family: "Courier New";">g_GalaxyParam_DeltaX/Y/Z</span>-Parameter
in gleichmäßigen Abständen im Raum positioniert. Um die regelmäßige Anordnung
der Sterne aufzubrechen, werden die einzelnen Stern-zu-Stern-Abstände in einem
zweiten Schritt mithilfe der <span style="color: blue; font-family: "Courier New";">Min/MaxVarianceX/Y/Z</span>-Parameter
nach dem Zufallsprinzip variiert.</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">long</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> i;</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">long</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">
counter = 0;</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">float</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">
distance;</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">float</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">
maxDistance = g_GalaxyDistanceDecreaseParameter3*</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> D3DXVec3Length(&StartPos);</span></div>
<div class="MsoNormal">
<br />
<br />
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span style="color: blue; font-family: "Courier New"; font-size: 10pt;">float</span><span style="font-family: "Courier New"; font-size: 10pt;"> varX;</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span style="color: blue; font-family: "Courier New"; font-size: 10pt;">float</span><span style="font-family: "Courier New"; font-size: 10pt;"> varY;</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span style="color: blue; font-family: "Courier New"; font-size: 10pt;">float</span><span style="font-family: "Courier New"; font-size: 10pt;"> varZ;</span></div>
</div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">for</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">(i =
0; i < g_NumSunsMaxXDir; i++)</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">for</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">(j =
0; j < g_NumSunsMaxYDir; j++)</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">for</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">(k =
0; k < g_NumSunsMaxZDir; k++)</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span><br />
<br />
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">if</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">(lrnd(2, 4) == 2)</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">varX = frnd(0.5f*g_GalaxyParam_MaxVarianceX,
g_GalaxyParam_MaxVarianceX);</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">else</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"></span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">varX = frnd(g_GalaxyParam_MinVarianceX,
0.5f*g_GalaxyParam_MinVarianceX);</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">if</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">(lrnd(2, 4) == 2)</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">varY = frnd(0.5f*g_GalaxyParam_MaxVarianceY,
g_GalaxyParam_MaxVarianceY);</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">else</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"></span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">varY = frnd(g_GalaxyParam_MinVarianceY,
0.5f*g_GalaxyParam_MinVarianceY);</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">if</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">(lrnd(2, 4) == 2)</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">varZ = frnd(0.5f*g_GalaxyParam_MaxVarianceZ, g_GalaxyParam_MaxVarianceZ);</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">else</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"></span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">varZ = frnd(g_GalaxyParam_MinVarianceZ,
0.5f*g_GalaxyParam_MinVarianceZ);</span></div>
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> </span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> </span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">StellarPosition[counter] = StartPos +</span><br />
<br />
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> D3DXVECTOR3(i*g_GalaxyParam_DeltaX,</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">
j*g_GalaxyParam_DeltaY,</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">
k*g_GalaxyParam_DeltaZ)+</span><br />
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> D3DXVECTOR3(</span><span style="font-family: "Courier New"; font-size: 10pt;">varX, varY, varZ</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">);</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">
UseStellarPosition[counter] = <span style="color: blue;">true</span>;</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> counter++;</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">}}}</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Im Anschluss daran erfolgt mithilfe der <span style="color: blue; font-family: "Courier New";">DistanceDecrease</span>-Parameter
eine Modifikation der Sternendichte und Größe der Galaxie durch Aussortieren
einer mehr oder weniger großen Anzahl von Sternen (<span style="font-family: "Courier New"; font-size: 10pt;">UseStellarPosition[i] = <span style="color: blue;">false</span></span>).</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">counter = 0;</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">float</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">
randomValue;</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">float</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">
quotient;</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">for</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">(i =
0; i < NumSunsMax; i++)</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> DiffVector =
StellarPosition[i] - CenterPos;</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> distance =
D3DXVec3Length(&DiffVector);</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> randomValue
= frnd(0.0f, 1.0f);</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> quotient =
distance/maxDistance;</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">
if</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">(randomValue >= 1.0f-</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> pow(quotient,g_GalaxyDistanceDecreaseParameter1*</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">
pow(1.0f-quotient,g_GalaxyDistanceDecreaseParameter2)))</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> {</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">
UseStellarPosition[i] = <span style="color: blue;">false</span>;</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> }</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">
else</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"></span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">
counter++;</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">}</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Im nächsten Schritt werden die Spiralarme der Galaxie
generiert. Hierbei wird zunächst überprüft, ob die zuvor positionierten Sterne
innerhalb oder außerhalb des galaktischen Bulge (Ausbuchtung des Kernbereichs) liegen. Für alle Sterne
innerhalb des Bulges wird lediglich der Abstand zum Zentrum der Galaxie
mithilfe der beiden <span style="color: blue; font-family: "Courier New";">DistanceIncreaseFactor</span>-Parameter
korrigiert. Die übrigen Sterne werden zunächst entlang der Spiralarm-Richtungen
neu positioniert. Zusätzlich dazu wird der Abstand der Sterne von der
galaktischen Ebene unter Berücksichtigung des <span style="color: blue; font-family: "Courier New";">g_SpiralGalaxyFlatnessFactor</span>-Parameters mit zunehmender
Entfernung vom galaktischen Zentrum verringert.</div>
<div class="MsoNormal">
Die endgültigen Sternenpositionen in den einzelnen
Spiralarmen ergeben sich durch Drehungen der zuvor festgelegten Positionen um
die galaktische Achse, sofern man die Drehwinkel unter Berücksichtigung der beiden Parameter <span style="color: blue; font-family: "Courier New";">g_SpiralGalaxyTwistingFactorMin</span> sowie <span style="color: blue; font-family: "Courier New";">g_SpiralGalaxyTwistingFactorMax</span> mit zunehmendem Abstand vom galaktischen Zentrum kontinuierlich vergrößert. </div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;">Generierung einer
Galaxie mit 4 Spiralarmen:</b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">D3DXVECTOR3 DiffVectorRotated;</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">D3DXMATRIXA16 RotationMatrix;</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">D3DXVECTOR3 GalacticAxis;</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;"><span style="color: green; font-family: "Courier New"; font-size: 10pt;">// Vektoren für
die Beschreibung der galaktischen Ebene:</span></b><span style="font-family: "Courier New"; font-size: 10pt;"></span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">D3DXVec3Cross(&GalacticAxis,
&SpiralGalaxyPlaneDirection1,</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">
&SpiralGalaxyPlaneDirection2);</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">float</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">
dot1, dot2, dot3;</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">float</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">
distanceFactor;</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">long</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">
randomDir;</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">if</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">(g_NumOfSpiralArms ==
4)</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">for</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">(i =
0; i < NumSunsMax; i++)</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">if</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">(UseStellarPosition[i]
== <span style="color: blue;">true</span>)</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> DiffVector = StellarPosition[i] - CenterPos;</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> dot1 = D3DXVec3Dot(&DiffVector, &SpiralGalaxyPlaneDirection1);</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> dot2 = D3DXVec3Dot(&DiffVector,
&SpiralGalaxyPlaneDirection2);</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> dot3 = D3DXVec3Dot(&DiffVector,
&GalacticAxis);</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> distance = sqrtf(dot1*dot1 + dot2*dot2);</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;"><span lang="EN-GB" style="color: green; font-family: "Courier New"; font-size: 10pt;">// Stern innerhalb des Bulge:</span></b></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">if</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">(distance <
g_SpiralGalaxyBulgeRadius)</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> distanceFactor =
pow(distance,g_SpiralGalaxyDistanceExponent);</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> DiffVector *=
pow(g_GalaxyStellarDistanceIncreaseFactor1,</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">
g_GalaxyStellarDistanceIncreaseFactor2*distance);</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> StellarPosition[i] = DiffVector + CenterPos;</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;"> continue</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">;</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">}</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;"><span lang="EN-GB" style="color: green; font-family: "Courier New"; font-size: 10pt;">// Stern außerhalb des Bulge:</span></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">randomDir = lrnd(0, 4);</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">if</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">(randomDir == 0)</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> DiffVector = SpiralGalaxyPlaneDirection1*distance +</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">
(g_SpiralGalaxyFlatnessFactor*dot3)*GalacticAxis;</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">}</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">else</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> <span style="color: blue;">if</span>(randomDir == 1)</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> DiffVector = -SpiralGalaxyPlaneDirection1*distance +</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">
(g_SpiralGalaxyFlatnessFactor*dot3)*GalacticAxis;</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">}</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">else</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> <span style="color: blue;">if</span>(randomDir == 2)</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> DiffVector = SpiralGalaxyPlaneDirection2*distance +</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">
(g_SpiralGalaxyFlatnessFactor*dot3)*GalacticAxis;</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">}</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">else</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> <span style="color: blue;">if</span>(randomDir == 3)</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> DiffVector = -SpiralGalaxyPlaneDirection2*distance +</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">
(g_SpiralGalaxyFlatnessFactor*dot3)*GalacticAxis;</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">}</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">distanceFactor =
pow(distance,g_SpiralGalaxyDistanceExponent);</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">CalcRotAxisMatrix(&RotationMatrix,
&GalacticAxis,</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">
frnd(g_SpiralGalaxyTwistingFactorMin,</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">
g_SpiralGalaxyTwistingFactorMax)*distanceFactor);</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">Multiply3DVectorWithRotationMatrix(&DiffVectorRotated,</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">
&DiffVector,</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">
&RotationMatrix);</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">DiffVectorRotated *= pow(g_GalaxyStellarDistanceIncreaseFactor1,</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> g_GalaxyStellarDistanceIncreaseFactor2*distance);</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">StellarPosition[i] = DiffVectorRotated + CenterPos;</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">}}}</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;">Generierung einer
Galaxie mit 3 Spiralarmen:</b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">else</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> <span style="color: blue;">if</span>(g_NumOfSpiralArms
== 3)</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">D3DXVECTOR3 ThreeSpiralArmsDirection2;</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">D3DXVECTOR3 ThreeSpiralArmsDirection3;</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">CalcRotAxisMatrix(&RotationMatrix, &GalacticAxis,
120.0f*g_PI/180.0f);</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">Multiply3DVectorWithRotationMatrix(&ThreeSpiralArmsDirection2,</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">
&ThreeArmedSpiralGalaxyBaseDirection,</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">
&RotationMatrix);</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">Multiply3DVectorWithRotationMatrix(&ThreeSpiralArmsDirection3,</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">
&ThreeSpiralArmsDirection2,</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">
&RotationMatrix);</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">for</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">(i = 0; i < NumSunsMax;
i++)</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">if</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">(UseStellarPosition[i] == <span style="color: blue;">true</span>)</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> DiffVector = StellarPosition[i] - CenterPos;</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> dot1 = D3DXVec3Dot(&DiffVector, &SpiralGalaxyPlaneDirection1);</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> dot2 = D3DXVec3Dot(&DiffVector, &SpiralGalaxyPlaneDirection2);</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> dot3 = D3DXVec3Dot(&DiffVector, &GalacticAxis);</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> distance = sqrtf(dot1*dot1 + dot2*dot2);</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;"><span lang="EN-GB" style="color: green; font-family: "Courier New"; font-size: 10pt;">// Stern innerhalb des Bulge:</span></b></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">if</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">(distance <
g_SpiralGalaxyBulgeRadius)</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> distanceFactor = pow(distance, g_SpiralGalaxyDistanceExponent);</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> DiffVector *= pow(g_GalaxyStellarDistanceIncreaseFactor1,</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> g_GalaxyStellarDistanceIncreaseFactor2*distance);</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> StellarPosition[i] = DiffVector + CenterPos;</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;"> continue</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">;</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">}</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;"><span lang="EN-GB" style="color: green; font-family: "Courier New"; font-size: 10pt;">// Stern außerhalb des Bulge:</span></b></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">randomDir = lrnd(0, 3);</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">if</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">(randomDir == 0)</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> DiffVector = ThreeArmedSpiralGalaxyBaseDirection*distance +</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> (g_SpiralGalaxyFlatnessFactor*dot3)*GalacticAxis;</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">}</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">else</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> <span style="color: blue;">if</span>(randomDir
== 1)</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> DiffVector = ThreeSpiralArmsDirection2*distance +</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> (g_SpiralGalaxyFlatnessFactor*dot3)*GalacticAxis;</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">}</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">else</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> <span style="color: blue;">if</span>(randomDir
== 2)</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> DiffVector = ThreeSpiralArmsDirection3*distance +</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> (g_SpiralGalaxyFlatnessFactor*dot3)*GalacticAxis;</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">}</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">distanceFactor = pow(distance, g_SpiralGalaxyDistanceExponent);</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">CalcRotAxisMatrix(&RotationMatrix, &GalacticAxis,</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> frnd(g_SpiralGalaxyTwistingFactorMin,</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> g_SpiralGalaxyTwistingFactorMax)*distanceFactor);</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">Multiply3DVectorWithRotationMatrix(&DiffVectorRotated,
&DiffVector,</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">
&RotationMatrix);</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">DiffVectorRotated *= pow(g_GalaxyStellarDistanceIncreaseFactor1,</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> g_GalaxyStellarDistanceIncreaseFactor2*distance);</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">StellarPosition[i] = DiffVectorRotated + CenterPos;</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">}}}</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;">Generierung einer
Galaxie mit 2 Spiralarmen:</b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">else </span><span lang="EN-GB" style="color: green; font-family: "Courier New"; font-size: 10pt;">//
if(g_NumOfSpiralArms == 2)</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">for</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">(i =
0; i < NumSunsMax; i++)</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">if</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">(UseStellarPosition[i]
== <span style="color: blue;">true</span>)</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> DiffVector = StellarPosition[i] - CenterPos;</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> dot1 = D3DXVec3Dot(&DiffVector,
&SpiralGalaxyPlaneDirection1);</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> dot2 = D3DXVec3Dot(&DiffVector,
&SpiralGalaxyPlaneDirection2);</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> dot3 = D3DXVec3Dot(&DiffVector,
&GalacticAxis);</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> distance = sqrtf(dot1*dot1 + dot2*dot2);</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;"><span lang="EN-GB" style="color: green; font-family: "Courier New"; font-size: 10pt;">// Stern innerhalb des Bulge:</span></b></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">if</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">(distance <
g_SpiralGalaxyBulgeRadius)</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> distanceFactor = pow(distance,g_SpiralGalaxyDistanceExponent);</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> DiffVector *= pow(g_GalaxyStellarDistanceIncreaseFactor1,</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">
g_GalaxyStellarDistanceIncreaseFactor2*distance);</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> StellarPosition[i] = DiffVector + CenterPos;</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;"> continue</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">;</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">}</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;"><span lang="EN-GB" style="color: green; font-family: "Courier New"; font-size: 10pt;">// Stern außerhalb des Bulge:</span></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">randomDir = lrnd(0, 2);</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">if</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">(randomDir == 0)</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> DiffVector = SpiralGalaxyPlaneDirection1*distance +</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> (g_SpiralGalaxyFlatnessFactor*dot3)*GalacticAxis;</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">}</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">else</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> <span style="color: blue;">if</span>(randomDir == 1)</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> DiffVector = -SpiralGalaxyPlaneDirection1*distance +</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> (g_SpiralGalaxyFlatnessFactor*dot3)*GalacticAxis;</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">}</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">distanceFactor = pow(distance,g_SpiralGalaxyDistanceExponent);</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">CalcRotAxisMatrix(&RotationMatrix,
&GalacticAxis,</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">
frnd(g_SpiralGalaxyTwistingFactorMin,</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">
g_SpiralGalaxyTwistingFactorMax)*distanceFactor);</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">Multiply3DVectorWithRotationMatrix(&DiffVectorRotated,</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">
&DiffVector,</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> &RotationMatrix);</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">DiffVectorRotated *= pow(g_GalaxyStellarDistanceIncreaseFactor1,</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> g_GalaxyStellarDistanceIncreaseFactor2*distance);</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">StellarPosition[i] = DiffVectorRotated + CenterPos;</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">}}}</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Courier New"; font-size: 10pt;">pGalaxy->Set_NumSunsMax(counter);</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Im letzten Schritt wird für jeden Stern der Sternentyp sowie seine Größe festgelegt. Zur Auswahl stehen hierbei die folgenden
Sternentypen und Spektralklassen:</div>
<div class="MsoNormal">
<br /></div>
<ul>
<li>Roter Riese (Spektralklasse M)</li>
<li>Roter Zwerg (Spektralklasse M)</li>
<li>Oranger Stern (Spektralklasse K)</li>
<li>Gelber Stern (Spektralklasse G)</li>
<li>Weißer Stern (Spektralklasse F)</li>
<li>Blauer Riese (Spektralklasse B)</li>
<li>Blauer Überriese (Spektralklasse O)</li>
</ul>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">float</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> RandomSpectralValue;</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">long</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> SpectralType;</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">float</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> SunScale;</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">for</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">(i = 0; i < NumSunsMax;
i++)</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">if</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">(UseStellarPosition[i] == <span style="color: blue;">true</span>)</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">RandomSpectralValue = frnd(0.0f, 1.0);</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">if</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">(RandomSpectralValue >=
g_SunBlue_DistributionValueMin &&</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> RandomSpectralValue <
g_SunBlue_DistributionValueMax)</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> SpectralType = 0;</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> SunScale =
frnd(g_SunBlue_MinScale, g_SunBlue_MaxScale);</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">}</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">else</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> <span style="color: blue;">if</span>(RandomSpectralValue
>= g_SunOrange_DistributionValueMin &&</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> RandomSpectralValue < g_SunOrange_DistributionValueMax)</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> SpectralType = 1;</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> SunScale =
frnd(g_SunOrange_MinScale, g_SunOrange_MaxScale);</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">}</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">else</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> <span style="color: blue;">if</span>(RandomSpectralValue
>= g_SunRedDwarf_DistributionValueMin &&</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> RandomSpectralValue
< g_SunRedDwarf_DistributionValueMax)</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> SpectralType = 2;</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> SunScale =
frnd(g_SunRedDwarf_MinScale, g_SunRedDwarf_MaxScale);</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">}</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">else</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> <span style="color: blue;">if</span>(RandomSpectralValue
>= g_SunRedGiant_DistributionValueMin &&</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> RandomSpectralValue < g_SunRedGiant_DistributionValueMax)</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> SpectralType = 3;</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> SunScale =
frnd(g_SunRedGiant_MinScale, g_SunRedGiant_MaxScale);</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">}</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">else</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> <span style="color: blue;">if</span>(RandomSpectralValue
>= g_SunYello_DistributionValueMin &&</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> RandomSpectralValue <
g_SunYello_DistributionValueMax)</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> SpectralType = 4;</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> SunScale =
frnd(g_SunYello_MinScale, g_SunYello_MaxScale);</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">}</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">else</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> <span style="color: blue;">if</span>(RandomSpectralValue
>= g_SunWhite_DistributionValueMin &&</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> RandomSpectralValue <
g_SunWhite_DistributionValueMax)</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> SpectralType = 5;</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> SunScale =
frnd(g_SunWhite_MinScale, g_SunWhite_MaxScale);</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">}</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">else</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> <span style="color: blue;">if</span>(RandomSpectralValue
>= g_SunBlueGiant_DistributionValueMin &&</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> RandomSpectralValue < g_SunBlueGiant_DistributionValueMax)</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> SpectralType = 6;</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> SunScale = frnd(g_SunBlueGiant_MinScale,
g_SunBlueGiant_MaxScale);</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">}</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">else</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> <span style="color: blue;">if</span>(RandomSpectralValue
>= g_SunBlueHyperGiant_DistributionValueMin &&</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> RandomSpectralValue < g_SunBlueHyperGiant_DistributionValueMax)</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> SpectralType = 7;</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> SunScale = frnd(g_SunBlueHyperGiant_MinScale, g_SunBlueHyperGiant_MaxScale);</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">}</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt;">else</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"></span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">{</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> SpectralType = 4;</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;"> SunScale =
frnd(g_SunYello_MinScale, g_SunYello_MaxScale);</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">}</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt;">pGalaxy->Init_Sun(&StellarPosition[i], SunScale, SpectralType);</span></div>
<div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Courier New"; font-size: 10pt;">}}</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
Alexhttp://www.blogger.com/profile/12911562805026944414noreply@blogger.comtag:blogger.com,1999:blog-5848355335367860180.post-61904340795317342762012-05-24T05:37:00.000-07:002018-06-11T06:29:54.115-07:00Galaxy Generation – Sterne Teil 1<br />
<a href="https://abload.de/img/stars4d3sai.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="https://abload.de/img/stars4d3sai.jpg" width="320" /></a>Im ersten Beitrag über die prozedurale Erzeugung von
Galaxien befassen wir uns zunächst mit den einzelnen Parametern, mit deren
Hilfe wir die Größe und Gestalt der zu generierenden Galaxie beeinflussen
können. Die einzelnen Techniken, die hierbei zum Einsatz kommen, behandeln wir dann
im nachfolgenden Artikel.<br />
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br />
<br /></div>
<div class="MsoNormal">
</div>
<div class="MsoNormal">
Bei der Erzeugung einer neuen Galaxie werden insgesamt acht
verschiedene Sternentypen berücksichtigt:</div>
<div class="MsoNormal">
<br /></div>
<ul>
<li>Blauer Stern (Spektralklasse A)</li>
<li>Oranger Stern (Spektralklasse K)</li>
<li>Roter Zwerg (Spektralklasse M)</li>
<li>Roter Riese (Spektralklasse M)</li>
<li>Gelber Stern (Spektralklasse G)</li>
<li>Weißer Stern (Spektralklasse F)</li>
<li>Blauer Riese (Spektralklasse B)</li>
<li>Blauer Überriese (Spektralklasse O)</li>
</ul>
<div class="MsoNormal">
<br />
<a name='more'></a><br /></div>
<div class="MsoNormal">
Parameter für die spätere Beleuchtung von 3D-Objekten in der
Sonnensystem-Ansicht:</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunBlue_LightColor: 1.0, 1.0, 1.0, 1.0</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunOrange_LightColor: 1.0, 1.0, 1.0, 1.0</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunRedDwarf_LightColor: 1.0, 1.0, 1.0, 1.0</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunRedGiant_LightColor: 1.0, 1.0, 1.0, 1.0</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunYellow_LightColor: 1.0, 1.0, 1.0, 1.0</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunWhite_LightColor: 1.0, 1.0, 1.0, 1.0</span></div>
<div class="MsoNormal">
<span style="color: green; font-family: "Courier New";">SunBlueGiant_LightColor:
1.0, 1.0, 1.0, 1.0</span></div>
<div class="MsoNormal">
<span style="color: green; font-family: "Courier New";">SunBlueHyperGiant_LightColor:
1.0, 1.0, 1.0, 1.0</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunBlue_LightRange: 500.0</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">[...]</span><span style="color: green; font-family: "Courier New";"></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="color: green; font-family: "Courier New";">SunBlueHyperGiant_LightRange:
500.0</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Umrechnungsfaktor (1 Längeneinheit entspricht 10 Lichtjahre):</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="color: green; font-family: "Courier New";">GalacticDistanceScaleFactor:
10.0</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Maximaler quadratischer Abstand für die Darstellung von
Lens-Flare-Effekten:</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="color: green; font-family: "Courier New";">MaxLocalGroupDistanceSq:
65000.0</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Verwendete Texturen:</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">Texture_SunBlue: <b style="mso-bidi-font-weight: normal;"> </b></span><br />
<span lang="EN-GB" style="color: green; font-family: "Courier New";"><b>../Data/Textures/SunsAndFlares/SunBlue.bmp</b></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">[...]</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">Texture_SunBlueHyperGiant: </span><br />
<span lang="EN-GB" style="color: green; font-family: "Courier New";"><b style="mso-bidi-font-weight: normal;">../Data/Textures/SunsAndFlares/SunBlueHyperGiant.bmp</b></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB">Lens-Flare-Farben:</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunBlue_LensFlareColor: 0.5, 0.5, 1.0, 1.0</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunOrange_LensFlareColor: 1.0, 1.0, 0.5,
1.0</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunRedDwarf_LensFlareColor: 1.0, 0.5, 0.5,
1.0</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunRedGiant_LensFlareColor: 1.0, 0.5, 0.5,
1.0</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunYellow_LensFlareColor: 1.0, 1.0, 1.0,
1.0</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunWhite_LensFlareColor: 1.0, 1.0, 1.0,
1.0</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunBlueGiant_LensFlareColor: 0.5, 0.5,
1.0, 1.0</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunBlueHyperGiant_LensFlareColor: 0.5,
0.5, 1.0, 1.0</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB">Lens-Flare-Skalierungsfaktoren:</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunBlue_LightScaleFactorX: 25.0</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunBlue_LightScaleFactorY: 7.5</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunBlue_LensFlareScaleFactor: 0.0625</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">[...]</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunBlueHyperGiant_LightScaleFactorX: 25.0</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunBlueHyperGiant_LightScaleFactorY: 7.5</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunBlueHyperGiant_LensFlareScaleFactor:
0.0625</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Abhängigkeit der Lens-Flare-Intensität vom Kameraabstand:</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="color: green; font-family: "Courier New";">LensFlareCameraDistanceValue:
1000.0</span></div>
<div class="MsoNormal">
<span style="color: green; font-family: "Courier New";">LensFlareIntensityDecrease:
0.003</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Häufigkeit der unterschiedlichen Sterntypen:</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunBlue_DistributionValueMin: 0.49</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunBlue_DistributionValueMax: 0.5</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunOrange_DistributionValueMin: 0.5</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunOrange_DistributionValueMax: 0.85</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunRedDwarf_DistributionValueMin: 0.85</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunRedDwarf_DistributionValueMax: 0.95</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunRedGiant_DistributionValueMin: 0.95</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunRedGiant_DistributionValueMax: 0.98</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunYello_DistributionValueMin: 0.0</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunYello_DistributionValueMax: 0.39</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunWhite_DistributionValueMin: 0.39</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunWhite_DistributionValueMax: 0.49</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunBlueGiant_DistributionValueMin: 0.98</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunBlueGiant_DistributionValueMax: 0.99</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunBlueHyperGiant_DistributionValueMin:
0.99</span></div>
<div class="MsoNormal">
<span style="color: green; font-family: "Courier New";">SunBlueHyperGiant_DistributionValueMax:
1.0</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Größe der Sterne:</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunBlue_MinScale: 4.0</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunBlue_MaxScale: 6.0</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunOrange_MinScale: 1.5</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunOrange_MaxScale: 2.0</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunRedDwarf_MinScale: 1.0</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunRedDwarf_MaxScale: 1.5</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunRedGiant_MinScale: 6.0</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunRedGiant_MaxScale: 8.0</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunYello_MinScale: 1.8</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunYello_MaxScale: 2.2</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunWhite_MinScale: 2.0</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunWhite_MaxScale: 2.5</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SunBlueGiant_MinScale: 6.0</span></div>
<div class="MsoNormal">
<span style="color: green; font-family: "Courier New";">SunBlueGiant_MaxScale:
7.0</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="color: green; font-family: "Courier New";">SunBlueHyperGiant_MinScale:
7.0</span></div>
<div class="MsoNormal">
<span style="color: green; font-family: "Courier New";">SunBlueHyperGiant_MaxScale:
8.0</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Maximale Anzahl der Sterne in x-, y- und z-Richtung:</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="color: green; font-family: "Courier New";">NumSunsMaxXDir:
31</span></div>
<div class="MsoNormal">
<span style="color: green; font-family: "Courier New";">NumSunsMaxYDir:
31</span></div>
<div class="MsoNormal">
<span style="color: green; font-family: "Courier New";">NumSunsMaxZDir:
31</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Mittlerer Abstand zwischen den einzelnen Sternen in x-, y-
und z-Richtung:</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="color: green; font-family: "Courier New";">GalaxyParam_DeltaX:
44.0</span></div>
<div class="MsoNormal">
<span style="color: green; font-family: "Courier New";">GalaxyParam_DeltaY:
44.0</span></div>
<div class="MsoNormal">
<span style="color: green; font-family: "Courier New";">GalaxyParam_DeltaZ:
27.0</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Minimale und maximale Variation des mittleren Stern-zu-Stern-Abstands
in x-, y- und z-Richtung:</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="color: green; font-family: "Courier New";">GalaxyParam_MinVarianceX:
-7.0</span></div>
<div class="MsoNormal">
<span style="color: green; font-family: "Courier New";">GalaxyParam_MaxVarianceX:
7.0</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="color: green; font-family: "Courier New";">GalaxyParam_MinVarianceY:
-7.0</span></div>
<div class="MsoNormal">
<span style="color: green; font-family: "Courier New";">GalaxyParam_MaxVarianceY:
7.0</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="color: green; font-family: "Courier New";">GalaxyParam_MinVarianceZ:
-7.0</span></div>
<div class="MsoNormal">
<span style="color: green; font-family: "Courier New";">GalaxyParam_MaxVarianceZ:
7.0</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Mit zunehmendem Abstand vom Galaxiezentrum nehmen die
Stern-zu-Stern-Abstände mitunter immer weiter zu. Für die Berechnung dieser
Abstände werden die nachfolgenden beiden Parameter benötigt:</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="color: green; font-family: "Courier New";">GalaxyStellarDistanceIncreaseFactor1:
1.7</span></div>
<div class="MsoNormal">
<span style="color: green; font-family: "Courier New";">GalaxyStellarDistanceIncreaseFactor2:
0.01</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Über die nachfolgenden drei Parameter kann die Sternendichte
sowie die Ausdehnung der Galaxie beeinflusst werden:</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">GalaxyDistanceDecreaseParameter1: 0.25</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">GalaxyDistanceDecreaseParameter2: 5.0</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">GalaxyDistanceDecreaseParameter3: 2.5</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Augenblicklich lassen sich Galaxien mit zwei, drei bzw.
vier Spiralarmen generieren:</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">NumOfSpiralArms(2,3,4): 2</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Die Orientierung der Galaxie im Raum wird durch die nachfolgenden Richtungsvektoren beschrieben:</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SpiralGalaxyPlaneDirection1: 1.0, 0.0, 0.0</span></div>
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">SpiralGalaxyPlaneDirection2: 0.0, 1.0, 0.0</span><br />
<div class="MsoNormal">
<span lang="EN-GB" style="color: green; font-family: "Courier New";">3ArmedSpiralGalaxyBaseDirection: 0.0, 1.0,
0.0</span></div>
</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br />
Die nachfolgenden drei Parameter bestimmen das Aussehen
einer Spiralgalaxie (enge Spirale, weitläufige Spirale, Vergrößerung der
Spirale mit zunehmendem Abstand von Galaxiezentrum, etc.).</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="color: green; font-family: "Courier New";">SpiralGalaxyDistanceExponent:
0.6</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="color: green; font-family: "Courier New";">SpiralGalaxyTwistingFactorMin:
0.6</span></div>
<div class="MsoNormal">
<span style="color: green; font-family: "Courier New";">SpiralGalaxyTwistingFactorMax:
0.8</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
In ihrem Zentrum sind alle Galaxien mehr oder weniger stark
verdickt (ausgebeult), während sie sich – sieht man einmal von Kugelgalaxien ab – zum Rand hin immer weiter abflachen. Der nachfolgende Parameter bestimmt den
Radius dieser Ausbuchtung:</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="color: green; font-family: "Courier New";">SpiralGalaxyBulgeRadius:
60.0</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Der <span style="color: green; font-family: "Courier New";">SpiralGalaxyFlatnessFactor</span>
bestimmt, ob eine flache oder eine kugelförmige Galaxie generiert wird:</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="color: green; font-family: "Courier New";">SpiralGalaxyFlatnessFactor:
0.3</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>Alexhttp://www.blogger.com/profile/12911562805026944414noreply@blogger.comtag:blogger.com,1999:blog-5848355335367860180.post-67186907946482818432012-05-03T09:12:00.001-07:002022-03-15T13:02:24.706-07:00Eckpunkte bei der Entwicklung eines ersten Spieleprototyps<div style="text-align: left;">
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://abload.de/img/stars1t6sfh.jpg" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="240" src="https://abload.de/img/stars1t6sfh.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Spieleprototyp 1 - Screenshot 1</td></tr>
</tbody></table>
</div>
<b>Gute Spiele spielt man bis zum Ende durch, schlechte Spiele werden
deinstalliert oder landen im „Papierkorb“</b>. Doch warum genau sind die einen
Spiele so erfolgreich, während andere wiederum zu Ladenhütern mutieren? Was ist
das Besondere an Titeln wie <b style="mso-bidi-font-weight: normal;">Wing
Commander</b> oder <b style="mso-bidi-font-weight: normal;">Conflict Freespace</b>? Die Antwort ist einfach – sieht man einmal von sogenannten
Sandbox-Titeln wie <b style="mso-bidi-font-weight: normal;">Minecraft</b> ab,
dann verfügt ein beliebtes Spiel immer auch über eine erstklassige Storyline. Verliert
man andererseits das Interesse an der erzählten Geschichte, so wird man über kurz oder lang das
betreffende Spiel auch nicht mehr weiterspielen.<br />
<div class="MsoNormal">
<br />
Für sehr storylastige Weltraumspiele kommen
insbesondere die folgenden beiden Szenarien in Betracht:<br />
<br /></div>
<div class="MsoNormal">
</div>
<div class="MsoNormal">
<ul>
<li><b>Ein einzelnes Sonnensystem; Planeten, Monde, Planetoiden
sowie die wichtigsten Asteroiden sind mit detailliert ausmodelliert:</b></li>
</ul>
</div>
<div class="MsoNormal">
<div style="text-align: left;">
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://abload.de/img/stars2qai91.jpg" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="240" src="https://abload.de/img/stars2qai91.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Spieleprototyp 1 - Screenshot 2</td></tr>
</tbody></table>
</div>
Das beschriebene Szenario eignet sich für Spiele, die in
der näheren Zukunft angesiedelt sind und den Wettstreit um die wertvollsten
interplanetaren Rohstoffe – wie beispielsweise Helium-3 für die
Energiegewinnung – thematisieren.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br /></div>
<div class="MsoNormal">
</div>
<div class="MsoNormal">
<ul>
<li><b>Wenige Sonnensysteme, die der Spieler mit seinem Raumschiff
(Space Combat) oder seiner Raumflotte bereisen kann. Auch hier sind die
einzelnen Planeten, Monde, Planetoiden sowie die wichtigsten Asteroiden
detailliert ausmodelliert:</b></li>
</ul>
</div>
<div class="MsoNormal">
<div style="text-align: left;">
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://abload.de/img/stars38gd68.jpg" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="240" src="https://abload.de/img/stars38gd68.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Spieleprototyp 1 - Screenshot 3</td></tr>
</tbody></table>
</div>
Interstellare Reisen sind einzig durch natürlich vorkommende
Wurmlöcher möglich, was die geringe Anzahl der erreichbaren Sonnensysteme
erklärt. Technologien für den überlichtschnellen Raumflug (Warpantrieb,
Sprungantrieb, etc.) stehen nicht zur Verfügung, wodurch die Kontrolle der
Wurmloch-Passagen zum wichtigsten Gameplay-Element wird.</div>
<div class="MsoNormal">
<br />
<br />
<br />
<br />
<br />
<br />
<br /></div>
<div class="MsoNormal">
Computerspiele mit prozedural erzeugten Galaxien und
Planetensystemen bieten dem Spieler die größtmögliche Freiheit.
Für einen Game Designer stellt sich jedoch die Frage, wie sich hunderte oder
gar tausende Sonnensysteme vernünftig in ein Spiel integrieren lassen. Szenarien
wie <i style="mso-bidi-font-style: normal;">„Erobere alle Sternensysteme des
Galaktischen Imperiums XY“</i> erweisen sich als unspielbar, wenn das
gegnerische Imperium bereits eine zu große Anzahl von Systemen okkupiert hat.</div>
<div class="MsoNormal">
Wird jedoch die Anzahl der momentan erreichbaren Sonnensysteme
dadurch limitiert, dass der Spieler beispielsweise unerforschte Sektoren zunächst über
einen längeren Zeitraum mithilfe von interstellaren Sonden und
Forschungsschiffen aufwändig kartografieren muss, dann bieten sich vielfältige
Möglichkeiten für zahlreiche spannende Missionen, Kampagnen und Storylines. <b>Aus
diesem Grund nimmt die prozedurale Generierung der Spielewelt eine zentrale
Rolle bei der Entwicklung des ersten Spieleprototyps ein.</b></div>
<div class="MsoNormal">
<br />
<br />
<a name='more'></a><br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;">Eckpunkte bei der
Entwicklung des ersten Spieleprototyps:</b></div>
<div class="MsoNormal">
<br /></div>
<ul>
<li>Prozedurale Generierung einer Galaxie (vorerst ohne
Planetensysteme).</li>
<li>Die maximale Anzahl der bereits erforschten Systeme lässt sich bei
Spielbeginn festlegen genau wie die Distanz innerhalb derer sich die Systeme
befinden sollen.</li>
<li>Das aktuelle Spiel lässt sich jederzeit speichern.</li>
<li>Ein zuvor gespeichertes Spiel kann jederzeit fortgesetzt
werden.</li>
<li>Die Auswahl einzelner Spiele-Objekte erfolgt in einem separaten
Thread.</li>
<li>Die Durchführung von KI-Berechnungen erfolgt in einem
separaten Thread.</li>
<li>Sofern zuvor kein Spiele-Objekt selektiert wurde, kann die
Kamera völlig frei im 3D-Raum bewegt und gedreht werden.</li>
<li>Andernfalls wird bei einer Drehung die Kamera immer auch neu
positioniert, so dass der Spieler das aktuell selektierte Objekt stets im Blick
behält (die Kamera bewegt sich im Orbit des selektierten Objekts).</li>
</ul>
<div class="MsoNormal">
<br /></div>
<span style="font-size: large;"><b>Prototype 1</b></span><br />
<span style="font-size: large;"><b>(LGPL-Licence; Visual C++ 2010):</b></span><br />
<span style="font-size: large;"><a href="https://drive.google.com/uc?export=download&id=1-TqqLuhTCibY1u8_EA11HHON1swMN-eV" target="">Prototype 1</a></span><br />
<br />
<br />
<span style="font-size: large;"> </span>Alexhttp://www.blogger.com/profile/12911562805026944414noreply@blogger.comtag:blogger.com,1999:blog-5848355335367860180.post-21195533348710568922012-04-25T09:50:00.001-07:002018-06-11T06:32:24.000-07:00Endlose Weiten, unzählige Planetensysteme...<br />
<div class="MsoNormal">
Endlose Weiten, unzählige Planetensysteme, fremde Welten –
die Faszination für Weltraumspiele ist nach wie vor ungebrochen.</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Ein lebendiges Universum bevölkert von mächtigen galaktischen
Zivilisationen, epische Weltraumschlachten oder detaillierte Planetenoberflächen
– von der Leistungsfähigkeit moderner Computer und den Möglichkeiten, sie sich daraus für die Spieleentwicklung ergeben, konnten die Schöpfer der
unvergessenen Weltraum-Spieleklassiker nur träumen.</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
In diesem Blog wird sich alles um die Entwicklung von Weltraumspielen
drehen – mithilfe unserer OpenGL/OpenCL/OpenAL-basierten Frameworks.</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b><span lang="EN-GB">OpenGL/OpenCL-Framework:</span></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-GB"><a href="https://www.graphics-and-physics-framework.spieleprogrammierung.net/" target="_blank">https://www.graphics-and-physics-framework.spieleprogrammierung.net/</a></span></div>
<div class="MsoNormal">
<br />
<br /></div>
<div class="MsoNormal">
<b><span lang="EN-GB">OpenAL-Framework:</span></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://www.audio-framework.spieleprogrammierung.net/" target="_blank"><span lang="EN-GB">https://www.audio-framework.spieleprogrammierung.net/</span></a><span lang="EN-GB"></span></div>
<div class="MsoNormal">
<br /></div>
<b style="mso-bidi-font-weight: normal;">Lizenz</b><br />
Alle hier entwickelten Spiele-Prototypen stehen unter der GNU LESSER GENERAL
PUBLIC LICENSE (Version 3).<br />
<br />
<a href="https://www.gnu.org/copyleft/lesser.html" target="_blank">https://www.gnu.org/copyleft/lesser.html</a><br />
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>Alexhttp://www.blogger.com/profile/12911562805026944414noreply@blogger.com