Another long ramble: Think of the Environment!!!

General Stars in Shadow Discussion Forum
Post Reply
akkamaddi
Posts: 147
Joined: Tue Sep 26, 2017 5:11 am

Another long ramble: Think of the Environment!!!

Post by akkamaddi »

Sorry, but another long, ranbly one.

These are some things that have been bouncing around my head for a couple weeks. I would just like to get them sorted out and placed on the table, even if the table is being ignored until after Legacies is released and settles. That’s quite alright. Some of this comes from game play, some of this comes from poking around the code, and some of this comes from my old stuff added to MoO3.

Some of this is alteration on game mechanics, but I think it would be useful in the long run, and can avoid game save compatibility issues.

First off, I think it would be useful to have a value associated with planets that modifies terraforming costs. For sake of argument, I’ll call it the terraforming index, or “terraforming_index”. I think the easiest format would be an integer with two decimal places, “1.00”. The terraforming index would be a multiplier on a player’s final terraforming cost (hammer & coin). It would be added to the planet information display, if possible.

The easiest way to handle this is to have all planets default to an index value of 1.00. It would be reasonable to default Barren to 1.50 and Inferno to 2.00. (It would be reasonable to argue that it’s difficult to plant trees while the air around you is on fire.) If loading an old game, set the value to the default and write it to galaxy.lua the next time the game is saved.

If you want to make things a little more complicated, have the value vary from -0.10 to +0.10 (0.90 to 1.10 for a normal planet). Early in the game, a planet with a low terraforming index would be cheaper to terraform and be more desirable, though that level of complexity may not be desirable for the game.

Where this would pay off in the long run would be with planetary specials and special planet types.

With planetary specials, this would enable many specials that would influence game play. For example:

- “Easy Terraforming” : “This planet has stable geology and seasons, and a healthy ecosystem that adjusts well to changes. It is a best-case scenario for terraforming, which will be significantly cheaper on this world.” [terraforming_index (-0.20 - -0.30), permanent special]

- “Minor Terraforming Impediment” : “This planet has a minor issue that will cause some difficulties in terraforming. This could include a highly active volcanic area, dangerous organisms, geography causing massive storms, and so on. The first terraforming effort will be a little more expensive, the issues should be removed and resolved at that time.” [terraforming_index (+0.10 - +0.15), special removed after terraforming]

- “Impeded Terraforming” : “This planet has a series of issues that will make terraforming an enduring issue here. Issues like a caustic or radioactive environment, erratic seasons, or cycles of massive tectonic upheaval will cause terraforming on this world to always be expensive.” [terraforming_index (+0.20 - +0.30), permanent special]

- “Partially Terraformed Planet” : “It seems an unknown race began work on terraforming this world before the great war. The planet stabilized long ago, but some of the equipment is left behind and some mutagens are still in the environment. Our first terraforming effort on this world should be very easy.” [terraforming_index -0.75, special removed after terraforming]

I will actually loop back on this a few times.



Second, I would love to see some more planet types. The planets in the game are very well rendered. Some good artistic skill (and code skill) went into their design. Kudos.

Some new things that I think would be beneficial:

- Forest World (rare)
Forest 4
Reef 2
"These green worlds have vegetation rich biospheres, with continent wide old growth regions. The hydrosphere in these worlds is primarily freshwater lakes and rivers emptying into shallow seas, with deep ocean trenches being uncommon. These worlds are valuable to terrestrial races, but require terraforming by aquatic races."

- Geothermal World (rare)
Forest 1
Arid 1
Reef 1
Ocean 1
Vent 2
“Relatively shallow oceans and a thin crusts creates a world with plentiful ocean vents and many geologic hot spots. The oceans are warm and mineral rich. The warm oceans cause strong weather patterns, resulting in lush, fertile zones being next to arid deserts.”


:Tying into the idea of the terraforming index, I also thought of some special world classes. These worlds are large (20% Huge, 50% large, 30% medium), and represent extreme environments. They have a permanent terraforming index of 2.00, making terraforming unappealing. They also have more environment zones than normal planets. If the planet could be left as-is, it may be more valuable to some races. These worlds are rare.:

- Cocytus World
ice 3
airless 3
ocean 1
vents 1
"Cocytus worlds apear as iceball worlds, stripped of atmosphere by solar winds except in keep chasms and caves. Unlike standard ice worlds, the core of these worlds are small and highly radioactive. The heat of the core produces zones of thermal vents, creating a thin hypersaline benthic ocean zone."

- Phlegethon World
Inferno 2
Arid 2
Ocean 2
Vents 2
"These burning worlds have highly radioactive cores causing violently active planetary mantles, intense tectonic activity, and large regions of continuous volcanism. Frequent earthquakes rock these worlds, and areas outside the volcanic zones are subject to ash clouds, toxic and caustic gasses, and possibly even radioactive pyroclast. In the hydrosphere, this creates vast regions of highly active, if potentially toxic, thermal vents."

- Stygian World
Reef 2
Ocean 3
Vent 3
"A Stygian World is an ocean world with a highly radioactive hot core causing extensive undersea volcanism and geothermal vents. These worlds have warm oceans covering the majority of the planet, which leads to massive powerful storms being common. While the waters tend to be mineral rich, sudden infusions of toxic or caustic chemicals are a common occurrence."

-Lethe World
Forest 6
Swamp 1
Reef 1
"Sometimes called Emerald Worlds not only because they are balls of brilliant green, but also due to the hardness of corundum. These rare worlds were observed before the Great War. They are huge forest worlds, with the forest biome extending into mountainous, desert, arctic, and even marine environments. The forest grows aggressively and is consuming, so cities require constant upkeep. The name Lethe comes from an ancient Human myth. The humans so named these worlds because it is believed that the forest consumes and forgets a hidden past, erasing it from history.”


:Yes, Swamp. I would love to see more swamp environments. If you have it, use it.:

- Jungle World
Forest 2.5
Swamp 2
Reef 1.5
"These green worlds have low laying topology and many water saturated regions. The hydrosphere in these worlds is mostly inland water and shallow seas, with broad tidal flood zones. Costal flooding is common and far reaching. Humidity and rain allow for lush forests further inland. Shallow seas and lack of large oceans provide limited growth for aquatic races."

- Marshland World
Forest 1
Swamp 3
Reef 1
Ocean 1
Vent 1
"These worlds are similar to the more common Garden worlds, but have a notably flatter continental topography. This leads to vast salt marshes, swamps, and extensive flood zones. Ocean storm fronts are blocked by few mountain ranges, regularly bringing large amounts of water inland."

- Taiga World
Ice 1.5
Arid 2
Swamp 1.5
Forest 1
"These cold worlds have a relatively small hydrosphere concentrated in large lakes and small seas along the equator, feeding vast coastal swamps and tidal flood zones. Cool temperatures cause little evaporation, leading to little rain or snow moving water away from equatorial areas. The marshes and cold resistant forests of the equator give way to vast arid regions and tundras in the cooler zones of the planet."


I would also recommend adding a new zone: Toxic (alternatively “Chemohazardous”). Worlds with Toxic zones would be rare. Besides the possibility of a “poison-eater” minor race and “Toxic World” as an alternative to “Inferno World”, it can also be used to enhance the verisimilitude of “something bad happened here”, enhancing the post-war mood. A world with a Toxic environment zone would be automatically inhospitable for agriculture, and population growth would be halved.

- War Ravaged Planet (very rare)
Metro 1
Arid 2
Toxic 3
“These worlds were cities before the Great War, but are now graves tainted with war’s many poisons. This world was subjected to more than standard orbital bombardment. Against treaties of the Galactic Council, this world was subject to forbidden weaponry in what must have been a desperate act or last stand. This world is hostile to life, and terraforming to a more standard environment will be very expensive.”

- Failed Terraforming Planet (very rare)
Inferno 0.5
Ice 0.5
Arid 2.0
Ocean 0.5
Vent 0.5
Toxic 2.0
“This is a world that an unknown race attempted to terraform, and their efforts came to a violent end. Mutagenic chemicals infuse the ecosystem, creating a toxic environment. Damaged terraforming equipment causes areas of extreme tectonic activity and harsh climate differentials. Massive regions of violent weather are common. Expensive terraforming efforts will be required to stabilize this planet.”



The last thing I would like to bring up ties into new planet types, and the game’s population growth. As I understand it:

growth 'orthin' {
High = { 'Iceball', 'Island', 'Coral' },
Medium = { 'Hive','Supercity', 'Paradise','Garden', 'Ocean', },
Low = {'Arid'},
}

A race’s growth rate is tied to the planet type. While this makes sense, it causes an issue with adding new planet types. All types must be allocated to all races, or you get

for race ; RACES
if not growth_rate[race]
errorf('missing growth rate for: %s', race)
end
end

This causes a major issue for modding. Any new planet type must include growth rules for all races. If a player adds a new race, that race’s information must be expanded to include any new planet types.

Just to make this clear, say Legacies 1.1 adds the region type cybervault, and the planet type “Dzibix Paradigm”, which is a sort of cyberpunk mega-city world highly amenable to cybernetic life, but inhospitable to other races. (How Hive worlds look to Phidi & Orthin.) If a player adds a minor race (hello!) or adds another player’s mod, those minor races will cause an error if placed on a Dzibix Paradigm world, and either crash the game or not be able to grow.

An easy fix for this would be to divorce growth with planet type. This would be some back-end work up front, but I think would pay off in the long run.

Growth Rate would be a multiplier. Format it like Terraforming Index, a “1.00” number. The default Growth Rate would be 1.00, so reproduction would start off as a base rate. The higher the Growth Rate multiplier, the faster reproduction, and vice versa

Instead of planet types, use environment variables, some of which are in the game. The game already includes temperature and atmosphere. Other posts have mentioned making gravity significant. I would also recommend adding hydrosphere as a fourth variable, as this would be both logical and useful in determining planet type.

Each variable would have either a three-point spectrum, which would be easier to manage, or a five point spectrum, which would be more detailed and better detail extreme environments and extremophile races. Each variable and point on the variable would get a multiplier, which would be multiplied against the base/current Growth Rate.

Each race would then get a personalized grid of the variables reflecting population growth.

As an example, let’s say the four variables end up being temperature, atmosphere, gravity, and hydrosphere, and each has low / medium / high.

Humans would be an average race:
Temperature-low *0.90, Temperature-medium *1.00, Temperature-high *0.90,
Atmosphere-low *0.90, Atmosphere-medium *1.00, Atmosphere-high *0.90,
Gravity-low *0.90, Gravity-medium *1.00, Gravity-high *0.90,
Hydrosphere-low *0.90, Hydrosphere-medium *1.00, Hydrosphere-high *0.90,

Whereas the Orthin shown above may be more like:
Temperature-low *0.80, Temperature-medium *1.00, Temperature-high *1.00,
Atmosphere-low *0.90, Atmosphere-medium *1.00, Atmosphere-high *1.00,
Gravity-low *0.80, Gravity-medium *0.90, Gravity-high *1.00,
Hydrosphere-low *0.70, Hydrosphere-medium *0.90, Hydrosphere-high 1.10,

Or a guess at the Yoral:
Temperature-low *1.00, Temperature-medium *1.00, Temperature-high *0.80,
Atmosphere-low *1.00, Atmosphere-medium *1.00, Atmosphere-high *0.80,
Gravity-low *0.90, Gravity-medium *1.00, Gravity-high *0.90,
Hydrosphere-low *1.00, Hydrosphere-medium *1.00, Hydrosphere-high 0.90,

This would also simplify racial special feature, and could add a few:

Sterile: growth_rate *0.0
Infertile: growth_rate *0.50
Slow Reproduction: growth_rate *0.85
Fecund: growth_rate *1.15

The big advantage of this becomes future DLC and player mods. While this would be some work in the present, it would pay off in the future. By linking growth rate to environmental variables that all planets have, it would be easy to add and remove existing planet types. New DLC and mods would become much more backwards compatible. Player mods could be mixed with less conflict. Mods could add variables like “Dark_matter_radiation” or “Hyperspace_saturation”, along with new races or planet types, and other content that does not recognize the new data would simply ignore it. (Dark Matter Radiation would not affect the Abbizi, because the Abbizi population growth does not use that multiplier, so it would be ignored without an error. Races listed in the Dark Matter mod would be affected.)

Most importantly, this change would work with old save game files. Gravity, atmosphere, and hydrosphere could be given default values based on planet type, which are added to the game saves. Given that population growth is not in the save game files, the game saves would otherwise not be affected.

Anyway, sorry this is long. I hope what I said was coherent. Thank you for your time.
Post Reply