I was thinking a generating stars/planets/lifeforms/societies in a way inspired from roleplaying games (Star Wars, GURPS - see e.g. here), but in a flexible way that can be modded easily.
Because in my view, the atomic element is the planetary AI (and for simplification, I would target 1 planetary AI = 1 star system - see below for a possible relaxation of this constraint), we would have basically a planetary AI object with expandable properties and expandable influence on each property on other properties.
What I mean is: one property of the planet is temperature. Another property is "biome" (as we probably go with the standard sci-fi 1 biome per planet). Now the biome property is dran at random; but it is possible to tweak the randomisation according to previous properties - in our case we add a threshold for temperature: if too hot, it cannot be an ice planet.
So in XML, the planet would have properties:
Code: Select all
<Planet_Property>
<ID>PL_TEMP</ID>
<Name>Temperature</Name>
<Mode>NormalRandom</Mode>
<Mean>20</Mean>
<Sigma>100</Sigma>
<Unit>C</Unit>
< ... further properties ...>
</Planet_Property>
<Planet_Property>
<ID>PL_BIOME</ID>
<Name>Biome</Name>
<Mode>List</Mode>
<List>
<Item>
<ID>1</ID>
<Name>Desert</Name>
< ... further properties ...>
</Item>
<Item>
<ID>2</ID>
<Name>Ice Planet</Name>
<Condition>
<Type>Incompatible</Type>
<Property>PL_TEMP</Property>
<Threshold>gt</Threshold>
<Value>0</Value>
</Condition>
< ... further properties ...>
</List>
</Planet_Property>
This is simply done by making a new file:
Code: Select all
<Planet_Property>
<ID>PL_DIST</ID>
<Name>Distance to Star</Name>
<Mode>LogNorRandom</Mode>
<Mean>1</Mean>
<Sigma>4</Sigma>
<Unit>A.U.</Unit>
< ... further properties ...>
</Planet_Property>
<Planet_Property>
<ID>PL_TEMP</ID>
<Condition>
<Type>Minimum</Type>
<Property> PL_DIST</Property>
<Factor>0.01</Factor >
<Origin>0</Origin >
</Condition>
...