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,
* Fixed a common crash when loading save games (some corrupted save files should now be viable as well, though the game may reset the clade diagram on them)
* Fixed a rare crash on startup.
* Prevented player from attempting to delete exported creatures/genomes when there are no creatures/genomes in the list
* Fixed a separate crash that could happen when deleting exported creatures/genomes.
* Increased the padding on Clade diagram fossils and species to make them easier to hover over
* Removed depth-floor on how far rovers could sink.
* Removed backwards compatibility with Shader Model 2.0 to prevent associated crash.
Note to people still using Shader Model 2.0: sorry about this. Not many people are still using hardware that doesn’t support Shader Model 3, it has no performance benefits, and it would take quite a bit of development time to refactor the fallback shaders to work with Monogame.
Sometimes you do something and then kick yourself repeatedly for not having done it earlier. Hotfix 15 was one of those times.
The procedural animations have always been a bit of a pain to work with, a pain reflected in how janky they can often appear.
In part this is because, while I do understand transform matrices, it can be a bit hard to intuit how applying one will affect the animation while you’re working with it. Do I need to rotate this bone +Pi/2 radians around the X axis, or -Pi/2 radians around the Z axis to get it where I want it?
(Trick question, of course: this was the wrong bone entirely and now every creature’s torso is painfully folded through six dimensions and I don’t remember how to get back where I started)
But the other problem has been iteration time. Because I am an idiot I was loading up the game, importing a critter with the features I wanted to test, and trying to follow it about with the camera as it moved to get a sense of whether my animation changes had worked.
So, to address this issue, I added the ability to play walk and swim cycles in the gene editor, and added a debug button to the main menu to bring it up quickly. This gave me the ability to go full trial-and-error on the animation issues for a day or two.
There are still some janky animations and limb assets, and there will continue to be: one does not simply fix procedural animation issues in Species. But dang if hotfix 15 isn’t better animated than 14 was.
Truth be told, I actually kinda love that even when they’re working properly, the animations often still look goofy as hell. More than realistic or stylistic, the creatures animation and appearance should be memorable, and the best way to make something stick in the mind is by prompting an emotional reaction. Species is surprisingly good at that: people generally find the creatures either funny or horrifying, or some combination of both. Strong reactions like that are good, as far as I’m concerned!
I don’t think anybody has found them “adorable” yet, though. I wonder why?