Sometimes the smallest of changes can have the largest effects. Case in point, this patch dramatically increases the stability, longevity and food production of forests simply by preventing herbivores from grazing the biome out from under trees. (which was killing the trees and destroying the forests. Aww, they think they’re people).
* Creatures can no longer graze from a ground pixel if there’s a tree on it.
* Trees can no longer spawn on ground pixels which are already occupied by other trees.
* Fixed Nurse bots escaping the nursery and running away. (Why does everything in this game try to escape the inescapable? Wait, better question: why do they keep succeeding?)
* Climate device effect radius increased
Species ALRE has migrated to another habitat: Mac OS X! This release also includes another metric bucketload of polish. For those who use the imperial system, that’s 1.102 Fahrenheit and 3 inchfoots of polish.
Special thanks to both Jared and Jay, who volunteered to help me test the game on Mac. Without them this wouldn’t have been possible.
* Survivability curve has been broadened. This will particularly benefit creatures generated via the “Initialise Random” setting. (Have you tried “Initialise Random”? I highly recommend it! It’s made from only the finest quality nightmares)
* ‘Niche’ food efficiencies will now very slowly attempt to return to the setting specified in ‘World Options’. (give it a whirl, see what you think!)
* Carnivory and Herbivory further balanced against each other. Still a way to go, but carnivory isn’t quite the knife edge it used to be.
* Adjusted fatigue so that creatures sleep for longer and recharge more of their stamina before setting out again.
* Tail stats will now affect the creatures correctly. (Hopefully they’ll actually evolve tails now!)
* Creatures are more competitive: a creature calling “dibs” on a food source no longer discourages others from going for it if they’re closer.
* Head Type “Eat Rate” will influence oxygen absorption, making the intermediate stage easier to survive for higher order organisms.
* If no viable food source is available, hungry creatures will idle rather than targeting non-viable sources. (Was causing problems for carnivores affected by the hunting suppression system)
* Nursery wall collision planes replaced with an impassible ‘bubble’, both for performance and to prevent critters from escaping.
* Fixed the most common cause of crashes in hands-off simulations (the “IndexOutOfRange” exception coming from the clade diagram)
* Fixed not being able to select items in multi-column dropdown boxes.
* Fixed trees frequently not being selectable.
* Fixed temperature simulation to utilize the same approach as the fertility simulation. (should clean up some lingering temperature issues)
* Fixed bug causing Time Accelleration to influence grass growback rates.
* Fixed being able to generate “underwater” biomes on dry maps by increasing the fertility.
* Fixed a bug causing the map to freeze if you pick the ‘height’ variation method. (Fixing this meant inverting the height-temperature correlation. Set “Temperature Variation” to a negative value if you want cold-up/hot-down)
* Added functionality for showing tooltips on gene spinners in genetic engineering.
* Adjusted bubble particle sprite (Easily the most important fix in this list)
* Adjusted large splash particles for performance
* Minor tooltip adjustments across the board.
* Downgraded the Unhandled Exception dialog into a basic text file for better cross-platform support.
* Reduced fertility adjustment ‘smoothness’ to ensure grass always regrows on specific graphics hardware.
* Added fallback climate shaders to provide support for older Macs.
* Disabled restart when adjusting resolution, since the restart function wasn’t compatible with the Mac build.
I’m hard at work on getting the Mac version up and running (thanks again to Jared Mann, without whose help all this cross-platform goodness wouldn’t have been possible) and once that’s out I’ll also be able to release all the polish and bug fixes I’ve been adding to the Windows version.
You’ll like this version, I’ve made so many change’s. I spent half-an-hour re-making the bubble sprite today! WHY YES MY PRIORITIES ARE IN ORDER THANK YOU FOR ASKING.
In the meantime, presented without comment: the Species ALRE Roadmap.
Obligatory Disclaimer: nothing on this road map is guaranteed or promised. While I have put plenty of thought into at least some of these features, implementation hasn’t actually begun on any of them. At this point, almost everything this map is purely conceptual.
Also, I reserve the right to go off on unplanned tangents at any time and implement things not on this chart if I think they’ll add to the game.
(Okay, presented with minimal comment)
* Added an Overhunting Suppression System that reduces carnivores reproduction, hunger and desire to hunt (as opposed to scavenging) when prey organisms in the local area are sparse.
– (I’d have preferred to allow something like this to evolve naturally, but mass extinctions aren’t much fun and the ecosystem size in species isn’t large enough to consistently recover from over-hunting induced population crashes)
* Added a mouse-tracking tooltip containing some basic information about the biome pixel and/or creature you are currently hovering over
* Rebalanced vegetation energy content for easier early game survival.
* Reduced corpse decay rates
* Fixed a bug making the Mass Extinction dialog unclosable
* Fixed a bug causing the Species dialog to close when the selected individual died
* Improved “Zoom To” button functionality (again).
* Semi-complete ‘Niches’ Automatic Population Control option. The underlying system works correctly (as far as I can tell), but I’m not ready to make it the default until a few unrelated issues are sorted out and I can give it a proper test and make sure it does what it’s supposed to.
– If you try it out, try pressing ‘H’ to see the food source efficiency table. It’s actually kinda cool to watch it adjust itself over time.
* Significantly reduced meat build up during grazing to make carnivory less appealing overall. This is to reduce the number of overhunting-induced mass extinctions until carnivore AI can be made smarter.
– In particular, this should make Mass Extinction events easier to avoid for folk with low population caps.
* Added blue lines between the selected creature(s) and their chosen target(s). (Should have done this ages ago. Makes it so much easier to see what the little creeps are up to)
* Gently tied “scanning” speed when making a decision to eyesight. (Better eyes = faster decisions)
* Set default fertility variation to 1.0 to add a bit more biome variety to default maps
* Fixed a bug causing creatures with gills to run for the origin point (top left on the map) instead of downhill towards water when air-drowning.
* Fixed a separate bug causing creatures with lungs not to swim upwards for oxygen when drowning.
* Fixed a crash when generating repeat worlds with “Initialise Aquatic” or “Initialise Predator and Prey”
* Fixed fossils not showing when hovered over in the clade diagram
* Fixed tooltip display issue the first time you hover over fertility buttons
* Re-compiled Linux binary for compatibility with earlier Ubuntu releases (14.04)
Species now includes an officially supported Linux build! Was hoping to get a Mac build too, but that’s going to have to wait for a bit more.
I’m also putting up a weeks worth of polish for the windows build. Call it a bonus.
Note: your saves should still load, but with this many changes there’s a good chance you’ll need to babysit your creatures until they can adapt to the new conditions.
* Reasonable performance gains, particularly during population explosions.
* Improved world loading times to around twice as fast.
* Fixed a major bug with the anti-cannibalism function that was severely reducing meat efficiency across the board
* Increased the rate of meat-buildup in grazing creatures
* Halved the corpse decay rate
* Clamped automatic population control food efficiency adjustments to 2.0 for meat and 4.0 for vegetation.
* Significantly changed the ground fertility to make it’s behavior easier to understand and predict.
* Separated “water fertility” and “land fertility” into two independent values.
* Implemented Habitability calculations during world generation, which will try to find viable habitats for the newly spawned creatures rather than just placing them randomly
* Fixed a bug which tied maximum stamina to pregnancy cost (giving a significant boost to creatures with long pregnancies or larger litter sizes)
* Fixed one possible cause of the nursery allowing all the creatures in it’s care to die
* Fixed a bug which caused creatures to be lit brighter under certain circumstances
* Fixed “Zoom To” button frequently zooming the clade diagram to a random location
* Fixed possible crash during loading
* Fixed possible crash when selecting climate devices
* Added underwater fog to the nursery geometry
* Added underwater fog to shadows
* Added underwater fog to corpses
* Increased underwater light penetration to make ocean worlds much brighter
* Colour-patterns are now smaller and tiled more aggressively.
* Colour-patterns are now applied to the head and feet
* Fixed geometry holes in 6 specific foot assets
* Fixed wonky animations in 3 specific leg assets
* Fixed horizon appearing as a dark blue line when looking into the distance from high locations
* Better camera target display when panning/rotating
* Reduced the stats on combination leg/flipper limbs
* Randomly generated creatures are now slightly larger overall to reduce the number of insect-scale creatures in random worlds
* Upgraded to Monogame 3.7
I’m hard at work implementing cross platform support for 0.11.1, with the assistance of a few volunteers (thank you to Jared, Kristen and Ewery!). We have a very promising Linux build that works on our test system, and I’m working on getting the Mac build going!
In the meantime, I’ve also been doing some optimization and polish work. The next version, whether it’s 0.11.1 and includes cross platform support or 0.11.0.17 and doesn’t, should run faster and have fewer rough edges all ’round. Lookin’ at you, nursery water fog.
I’ve also had time to pay a bit of attention to the longer term balance and survival strategy game as it currently stands, and they’re fun to discuss even if I haven’t started work on them. So let’s do that…
Making cannibalism less viable took away the most (perhaps only) effective carnivore strategy: hunt prey creatures when they’re available, ‘recycle’ your fallen in order to survive the long famines in between.
As a result, meat is off the table at the moment. In 0.11.0, creatures have a strong tendency to lean herbivore.
I’ll be making a few small tweaks to make carnivory more viable (higher food efficiency, slower decay rate, etc), but the primary issues preventing carnivory are a bit more structural than that:
- Other creatures are rare, at least in comparison to vegetation, and lifespan isn’t long enough to consistently find one. Cannibalism was only effective because creatures are born in close proximity to the food source.
- Hunting behaviour is pretty dumb. If there’s not a prey creature in the area, they simply wander at random. I need to implement a migration routine that suspends reproduction and allows creatures to travel longer distances to find habitable zones when the current zones habitability fails.
- Decay rates are very high. This was mostly to reduce scavenging in the hope of getting hunters, but it’s also so that the corpse list doesn’t overly affect the creature cap (corpses count towards the cap). If I’m going to decrease decay rates substantially, I need to stop using creature objects to represent corpses.
As mentioned, these issues are more structural, so I’ll need to delve a bit deeper than just tweaks to address them. Nevertheless, they’re clearly on my list.
Currently, when you spawn in creatures, there tends to be an immediate die-off due to creatures being spawned in inhospitable locations. Air breathers spawn in water, water breathers spawn in air, insulated endotherms spawn in the desert, low-mass ectotherms spawn on the ice-sheets and everybody spawns in areas with no food at all.
This is not for lack of trying: the game tries to place each creature 10 times, checking for a habitable location each time, before it gives up and randomly spawns it. (The only reason we don’t keep trying is to keep the loading speed reasonable)
The problem is, with oxygen and temperature being newly added to those habitability checks, the target is now very narrow. Most creatures miss it, even with 10 attempts.
So the game needs a new solution: Habitability Checks.
For each zone, generate variables representing: O2 Temperature Vegetation Quantity Meat Quantity (0 to start with) Create All Species Sort Species list from herbivore to carnivore Foreach Species Generate Habitability value. Sort zone list by Habitability value. Foreach Grid square Place group of creatures randomly somewhere in most habitable zone Reduce vegetation quantity of selected nodes. Increase meat quantity of selected nodes. Repeat for second most habitable zone, then third most habitable, etc.
You may have noticed I’m using the same term, “Habitability”, that I used when describing my plans for hunting/migration behaviour. That’s because once these values are generated I can re-use them to inform the migration behaviour, so long as I keep them updated occasionally! It *will* unfortunately mean tying another behaviour (migration) to the artificial “species” category, but that ship has already sailed with empathy and it likely won’t be noticeable short of user-defined, abnormally high breeding ranges.
Niches and OP Water life
Water biomes ‘restore’ themselves more quickly after being grazed than land biomes do. This leads to water creatures out-competing and killing off land creatures. Except… that’s not how niches are supposed to work. How can they be competing if they exist in different habitats?
In real life, niches are occupied because there is always *room* for a niche to be occupied. In Species, unfortunately, we’re limited by CPU. That will always be true, no matter how successful multithreading turns out to be. There is a limited amount of CPU time we can dedicate to the creature simulation, so there are a limited number of “Creature slots” available to fill in the game.
I hate implementing ‘artificial’ solutions to these problems, but the problem is itself artificial, so I’m not really left with any choice. Automatic population control reduces the food efficiency when things start to get out of hand.
Unfortunately, that means a population explosion in a successful water species will lower every creatures food efficiency, potentially killing off land-based critters. So, rather than occupying every niche as in real life, only creatures in the most successful niches end up surviving. This is… unfortunate.
I made a bit of an effort to combat this with the “H&C” (Herbivore and Carnivore) automatic population control. It measures who is eating what and lowers vegetation efficiency when herbivores are exploding and meat efficiency when carnivores are. But I can’t keep manually defining niches like that. We’re up to 3 potential axes now (hot/cold, water/air, herbivore/carnivore) and that number is only going to increase. I need a better solution.
Geographical niche definition is one possibility. Lower food efficiency in the area around the population explosion. For a variety of reasons it’s not the best solution, though, and besides: it already happens to some extent thanks to the effects of overgrazing.
A much better option might be to lower food on a per-food-source basis. For example, if kelp-and-reef grazing is too OP, lower the efficiency of kelp plants and reef ground cover. This idea is hardly perfect, though: it’s easy to see how a booming species on Island 1 that feeds on pine cones could wipe out a less well-adapted species on Island 2 that also feeds on pine cones.
An even more targeted solution might be to nerf/buff the eating efficiency of specific species, rather than the efficiency of the food they are consuming. I object to this idea on principle, however: at this point it starts reading less like a proxy for natural feedback loops and more like artificial selection for low population counts. Maybe that’s an academic distinction, but I’d rather stay as far away from that line as we can. Species is a game about natural selection, emphasis on the “natural”.
Monitoring every type of food source could end up being a bit expensive, but looking at it rationally, I think sacrificing a bit of performance to give creatures room to expand into every niche is a fine use of CPU time. The choice between more creatures or greater biodiversity and more inter-species interactions is an easy one to make.
Looking forward to finding time to address this stuff,