1. Ecosystem
  2. News

Ecosystem News

Development Update #04

Hey all!

Welcome to our fourth development update. These are our fortnightly check ins to discuss the development of Ecosystem!

Today's update will cover:

  • Some more information about our next big update
  • Your questions answered
  • Community screenshots!


There is no patch associated with today's update

---

What Have You Been Up To Tom?


Hello everyone,

Welcome to the fourth development update. I'm currently reworking the ranking and history menu (opened via the F5 key) into a suite of information displays. I've just completed the per-species section of the display, which shows the niche each species occupies in the ecosystem and how that changes over time. I've been able to store and display quite a substantial amount of data without performance impact, so there should be no problem looking back at what happened in your ecosystem even several days prior.

As a quick example, here in the overall graph, we can see a population of foragers called Renase gradually increase all the way up to the 45 minute point and then precipitously decline.




Examining its cause-of-death chart shows that the drop coincided with two pressures for the species: one, the introduction of a new predator which targeted it heavily, and two, other foragers moving into its territory, which we can detect both from the increasing amount of its deaths coming from starvation and the reduction in its diet, which seems to have caused it to switch from a diet of hydrilla to feeding on sponges.



There are also some new, high level ways to manage the environment, setting population caps on species and minimums under which a species will not be preyed upon. You can also now adjust the per-species mutation rate, allowing you to experiment with near-static species or extremely strange ones where each child picks up an average of five new mutations. I'm now turning to the last major piece of this update and the most important part, the phylogenetic tree, which I think will also be a big help for me when testing future, large-scale changes to the game.

Thank you for reading!
Tom Johnson

----

Your Questions Answered


In the last update I asked for you to submit your questions to be answered in this update and I have the answers from you straight from Tom!

Will there be a way to reduce the fog implemented for those with higher hardware (a slider with a warning that it may effect performance over a certain limit)

Sure, I can add this to the graphics settings. There may not be quite enough time to put it in the info display update I am working on now, but I think I could fit it in a small update soon after that.

Are there going to more integrations of fish with the depth of the water, ie, more bio-luminescence, stranger fish etc?

Yes, I like this idea a lot and I think that adding more ways for the environment to 'test' the creatures and more ways for the creatures to adapt to it is key to increasing the depth of the game and the amount of interesting things it has to show. I am not sure when I will be able to fit it in (I am trying to prioritize things by how much impact they will have) but it is planned.

Has the growth issue seen in at least some saved fish, been fully fixed or have people still been seeing it post v0.17? I thought I was still seeing it occur even in some newly created fish, but could be mistaken.

The growth issue should be fully fixed (though if a saved creature was affected by the bug prior to the fix, it would still exhibit the problem) but if you are seeing it on new creatures, that may mean there is a case that I missed or that there is a different underlying problem that results in the same symptoms. I will try to see if I can reproduce it on my end, but if it happens to you again, it could really help if you sent the saved creature (located in C:\Users\[YOUR_USER_NAME]\AppData\LocalLow\Tom Johnson\Ecosystem) and any details you remember about what happened to me at (tom [at] ecosystem-game.com)

How do the neural networks work?

Sure, I'd be happy to. As a warning, this may get a bit complicated, but that's how brains are! The neural networks govern the details of how the creature actually swims. There is a higher-level AI above it that governs higher-level behaviors, so the neural network isn't quite the whole picture. It answers the question of 'with this body, how do I actually swim?' but it doesn't, for example, handle selection of targets.

Each neural network is a little pipeline computer, a network where each neuron has 0-3 inputs, performs a function on them, and then outputs the result, which travels along a nerve and becomes the input for another neuron (they also sometimes have an internal state, like the oscillator neurons which are time dependent or the memory neurons that store a value).

There are special sensor neurons whose output is based on the environment, which are always displayed on the bottom row. There are also special muscle neurons who apply their inputs as torques at specific joints on the creature; these are always on the top row. The number of muscle neurons per-part is not always just one but instead depends on the degrees of freedom of the joint, so a hinge joint will have only one muscle neuron, but a ball-and-socket will have three.

The neurons are also embodied in the creature in the sense that each has to be contained in a specific body part, and neurons can only connect to neurons on adjacent body parts. In this way, most of the nerves that control a fin can be located on the fin, and if a mutation creates a duplicate of the fin, the new fin gets most of the neural structure that controls it as well.

The displays leave a lot unexplained so maybe a quick example of how to read one of the neurons might help. In the picture, if we look at the middle Wave Oscillator neuron:



The bottom layer of entries, "1.00, 2.97, 1.68", are the inputs which are passed to it from other neurons, in this case a GreaterThanOrEqualTo neuron, itself in a loop, and an Exponent neuron respectively. The next layer, "5.00, -0.64, -1.61", are the input scalars, which are applied by the neuron to any input it gets. These determine the strength of the connection between the neurons and can be quite important in evolution. Each input and scalar are multiplied and then clamped within the range of [-3, 3] to get the final input layer, "3.00, -1.91, -2.70." This is what the function is applied to; in this case the final inputs scale and shift the wave oscillation that the neuron produces (the equation is Input1 × Sin( Input2 × Pi × time + 2 × Pi × Input3)). Finally, the result of this is the output, which in this case is piped up to two muscle neurons to control the contractions at joints and also back to itself to function as its own input.

----

Community Screenshots


We've got two great community screenshots to share with you this week both from Steam!

First up is this very surprised look fish from DragonCheles:



Followed up by this lovely serene scene from AXTMoon:

Development Update #03

Hello everyone!

Welcome to the third development update. This is a small series which aims to keep everyone up-to-date on where the game is and where it is headed.

Today's update is a little smaller than the previous two. In it we will cover:
  • A message from Tom about the first major update
  • A call for questions!
  • Mods
  • Community screenshot roundup!


There is no patch associated with today's update.

----

What Have You Been Up To Tom?


Hello everyone,

Welcome to the third development update. I'm midway through work on the first major update, which is all about better displaying information. For this post, I thought I would walk through some of the changes coming when it's completed.

I am currently reworking the ranking and history menu (opened via the F5 key) into a suite of information displays. It will include charts of animal and plant populations over time, which can be zoomed into or out of, and which also allow for toggling the display of the different species, to let you focus on just the information that is pertinent to what you're interested in at any given moment. If a plant or animal goes extinct, this should help with the investigation into why, and by analyzing trends in the data, you should be able to see if trouble is coming and act to prevent it. There tend to be interesting alternating sinusoidal curves as you go down the food chain, with crests of prey population leading to crests of predator population as its food supply booms, which then leads to valleys in the prey population as the large predator population feeds upon it, and so on.



Also coming soon are displays aimed to help pinpoint what kind of niche each species occupies and how that is changing. This will include charts of its overall diet and most common causes of death, along with info panels with every trait I can think of that might influence its fitness. It will also feature a few ways to interact with entire species at once: adjusting the mutation rate of each species, setting soft population caps, setting population minimums under which a species will not be preyed upon, and removing entire species at once. The most important visualization is yet to come though: the phylogenetic tree, which should allow for a full evolutionary history of creatures in the ecosystem, allowing you to trace all the way back to the dawn of life. If it is possible, I hope to allow for zooming all the way in to the level of the individual creature, pinpointing when key mutations occurred and the effect that they had on the individuals who carried them, whether they led to success or ruin.

I'll continue to provide these updates as development continues. Thank you for reading!

Tom

----

A Call For Questions


Normally in this spot we would have space for some pressing community questions but so far there doesn't seem to be any major burning questions for this weeks dev update. Is there something you would like to know about the game? Leave a comment below!

----

Mods


Whilst mods aren't officially supported in the game we have seen a small community pop up on Nexus Mods, where people are sharing maps for the game and we thought we would flag it here for those of you who want to share maps you're proud of!

We are currently looking into Steam Workshop support for a future update (possibly after the first major update) - whilst we can't make any promises, if we can get it up and running we think this would be a great way for players to share maps and fish with one another! But for now, Nexus mods seems like the community go to :)

----

Community Screenshots
Arara posted this tentacled delight!

TheColorAndTheChaos shared this lovely screenshot with us

Djemelhi posted this serene scene

BeanbagToad shared these two happy fish

[previewyoutube][/previewyoutube]
Finally we have this GIF from Stobz over on Discord who showed his land map in action with this land fish making it's way over some small rocks!

Development Update #02

Hello everyone,

Welcome to the second development update. This is just a small series to keep everyone up-to-date on where the game is headed in the future and how well progress is going along the way there.

In today's update we will cover:

  • A message from Tom about what he's been up to.
  • Answers to some community FAQs
  • v0.17 Patch Notes
  • Some of our favourite screenshots from the community!


-----

What have you been up to Tom?


I'm currently midway through the first major update, which should see more and better information displays and more ways to customize the creatures in the ecosystem. These are steps along the way towards my overall goal of adding more for the player to do and adding more variety and depth to the evolution of creatures over the long term.

Coinciding with this post is a smaller update. This smaller update has a focus on performance fixes, and you should see noted improvement in how the game runs in a variety of situations, though I still expect performance improvements to be an ongoing task as development progresses. There have also been improvements to the minimap, several bugfixes, and some tweaks to the game balance.

The latter involved investigating reports I had seen of inexplicable die-offs of plant life. This can be a reasonable outcome of the simulation if a large forager population drives the plants to extinction and then goes extinct themselves, but it's poor from a gameplay perspective if the die-offs are too frequent or occur out-of-nowhere. One player helpfully provided me with a savegame and a collection of eight subsequent autosaves in which a die-off occurred while running the game overnight. I ran several test cases using the initial save; here is what one looked like:



One reason this issue was difficult to isolate and fix was that this took five hours from start to finish (while running at 2x speed)! Another reason is that collapse is not a guaranteed result of an overpopulation of foragers; instead, it is the outcome of a long chain of events where each responds to the previous state. For example, after an overpopulation of foragers has decreased the plant population, if the lowered food supply decreases the forager population by a large enough amount, this may lessen the pressure on the remaining plants enough to allow them to recover, which may then lead to the recovery of the forager population too! In fact, this happened in one of the test runs:



It's notable that this is almost a literal example of the butterfly effect. The initial conditions in both of the ecosystems depicted above were exactly the same and I didn't intervene at all in either of them. The only differences that could have been introduced were the very small ones that can occur when the physics engine resolves collisions and handles joint constraints on the creatures' limbs, but these differences were enough to lead to the ruin or recovery of the whole ecosystem, five hours later. For this reason, from a game development perspective, it is often best for me to attempt the smallest adjustments possible. In this case, slightly increasing the rate at which the plants seed and age relative to the creatures should not affect the way the plantlife grows in the environment, but should make them a little more capable of bouncing back when heavily fed on by foragers. It is possible that this won't solve all the die-off cases, but it did work in the test cases I had, and the information displays coming in the next major update should help you to diagnose if something like this is in danger of occurring.



-----

Your questions answered!


Do fish eat the plankton?

Yes, they do. It pulses a bit when it is eaten, like this:

[previewyoutube][/previewyoutube]

Plankton is often a little easier for creatures to eat because it is less likely to grow around crags and crannies that creatures can have trouble reaching or get stuck on. However, creatures have a strong tendency to prioritize food that is nearest to them (being the first one to the food can make a big difference) so depending on the location of your populations, it may go for awhile without attracting attention, and it does grow very fast when it isn't eaten due to not competeing so intensely with the plants that are on the soil.

Are different kinds of plants / corals / etc more nutritious than other kinds?

At the moment, everything is equal. The plants do actually have hidden scores for how much of various vitamins and minerals they possess, but for now this isn't used by the simulation. Diet (both in terms of protein/fat/fiber composition and in terms of, for example, magnesium helping to enable bioluminescence) affecting creatures is on my long term list, but there are a few big features that I think will really improve the game that I hope to get in first.

Will you be implementing a population limit setting to help reduce lag in the late game?

Yes, I will. In the next major update, I hope to allow adjusting population caps and endangered species protection measures on both a per-species and ecosystem-wide level. This will be accessible on the same screen as the informational displays that are a big part of the update.

Do you plan on introducing temperature to the simulation at all, through thermal vents or underwater volcanoes?

I'm not sure yet! I am keen to introduce both underwater vent communities and whalefall to deep sea environments, and temperature would certainly make sense to simulate as well, but it may take some time both to simulate it meaningfully and to allow the creatures to adapt to it in interesting ways. Sorry that this is a bit of a nonanswer, but it is something I will keep in mind.

-----

v0.17 Patch Notes


[h2]CHANGES[/h2]
Prevent unpredictable plant die-offs that were resulting from forager overfeeding by increasing the plant time-scale.
Automatically clean up small floating remnants that can be left after digging.
Minimap: allow toggling terrain, plant and creature display.
Minimap: legend supports 20 species instead of 10.

[h2]PERFORMANCE[/h2]
Improve efficiency of target-seeking AI, which became worse the more creatures there were.
Fix performance degradation when food source placement menu is visible.
Fix poor performance after loading a saved game.
Fix excessive memory usage by procedural materials used for creature skins.

[h2]BUGS[/h2]
Fix issue where saved dna can get its food source set to 'any', which results in it never maturing (included in hotfix to v0.16).
Fix issue where the player can change the timescale while the game is paused.
Fix issue where creatures' current behaviors were not loaded but instead recalculated.

-----

Community Screenshot Roundup


Thanks for keeping the screenshots coming in - we're glad to see you've all been having a blast being underwater photographers!

Mykk Robo posted this lil fish man monstrosity on Steam!

Lil_Ronin_666 shared this picture which I'm calling "Lost Among The Spires" over on Steam too.

Stobz shared this fish looking fish over on our Discord

Farmer Jenkins over on our Discord shared this submarine long boi

v0.17 Patch Notes - 16th April 2021

PATCH NOTES
v0.17

CHANGES
  • Prevent unpredictable plant die-offs that were resulting from forager overfeeding by increasing the plant time-scale.
  • Automatically clean up small floating remnants that can be left after digging.
  • Minimap: allow toggling terrain, plant and creature display.
  • Minimap: legend supports 20 species instead of 10.


PERFORMANCE
  • Improve efficiency of target-seeking AI, which became worse the more creatures there were.
  • Fix performance degradation when food source placement menu is visible.
  • Fix poor performance after loading a saved game.
  • Fix excessive memory usage by procedural materials used for creature skins.


BUGS
  • Fix issue where saved DNA can get its food source set to 'any', which results in it never maturing (included in hotfix to v0.16).
  • Fix issue where the player can change the timescale while the game is paused.
  • Fix issue where creatures' current behaviors were not loaded but instead recalculated.

Development Update #01 (+ v0.16 Patch Notes)

Hello, Dan from Slug Disco here, the publishers of Ecosystem! We have quite a hefty blog post to get to here so I won't keep you too long - here is what to expect in today's development log:

  • A dev update from Tom
  • Patch notes for v0.16
  • Your FAQs answered
  • Community screenshot roundup
  • Where to keep in touch


But first, we have created a new Gameplay Trailer to show off more of the game's interface and how exactly you will be interacting with your Ecosystem. Of course, there's a lot more to Ecosystem than this trailer can convey, but hopefully it gives a high level overview of the tools at your disposal for creating the perfect ecosystem.

[previewyoutube][/previewyoutube]

-----

Dev update from Tom


Hello everyone,

Thank you for supporting Ecosystem and following its development. I just wanted to write a brief update regarding my plans for future development. I appreciate all the feedback everyone has given; I wasn't able to respond to people as much as I would like, but I have read everything that was written and I think I learned a great deal from it.

My two major focuses for the long-term future development of the game are to add more for the player to do, and to add more variety and depth to the evolution of creatures over the long term. This is in addition, of course, to continuing to fix bugs, optimize performance, and add polish to places that need it, such as the creature editor.

For the first major update, which I hope to complete in roughly two months, I hope to add substantially to the information displays in the game, adding clade diagrams, population statistics, and more, to display what's going on in the ecosystem and how it has evolved since the start of the game. I hope to also allow adjusting things like population caps or protections for endangered species.

Another feature I intend to add is a kind of 'constrained evolution' where the player can specify an archetype such a large herbivore (akin to a whale) or something with tentacles (akin to a squid or octopus) and the spawned creature will evolve as normal, but its genetic code will be kept within the requested parameters. My hope is that this will allow a greater amount of customization over the ecosystem.

There are also a few targets for optimization that I intend to aim for in the first update or as minor updates along the way, including reducing the amount of memory used when creatures are spawned in, and addressing an inefficiency in the target-seeking AI that becomes more severe as the population grows.

I'll continue to provide these updates as development continues.

All the best,
Tom

-----

Patch notes for v0.16


PATCH NOTES
Today's patch brings the game up to v0.16

CHANGES
  • Forward button now moves where the camera is facing instead of keeping the same depth.
  • Add some mouse options to controls menu.
  • Replace on/off sliders with buttons in options menu.
  • Update demo to match current version of full game.


BUGS
  • Fixed issue where off-screen pointer could stay on after you deselected a creature.
  • You can no longer click and drag the loading screen progress bar.
  • Fix issue where the follow camera in the neural display can start very far away from the creature.
  • Fix issue where when you exit neural display, you warp back to where you were before instead of staying in the same place.
  • Fix bug where graphics settings were not saved if you exited with escape instead of clicking the button.
  • Fix bug where, when you click the 'Reset' button, the target framerate is set to infinity instead of the monitor's refresh rate.
  • Fix potential crash in rare case when loading saves.


-----

Your FAQs answered


For each development update we will be rounding up the most frequent questions and putting them to Tom to get the definitive answers from him!

If you would like to have your question answered in the next newsletter, comment down below and we will answer as many as we can!

Will we get creatures with legs that use the sea floor?

I do hope to implement this! It may be a little while in the future though, and I can't be 100% certain of future plans in the event that an unforeseen difficulty makes it impossible to work them into the game. I've run some tests to verify that the evolution simulation can produce creatures that crawl around. One such example is here:

[previewyoutube][/previewyoutube]

There are some substantial additional difficulties that need to be addressed when it comes to uneven terrain and target-seeking behavior, and they will need a slightly different procedural mesh generation system. For this reason, it may take a fair amount of time to implement, and so I would like to focus first on adding more for the player to do and adding more variety and depth to the evolution of the swimming creatures already in the game.

  • How does the game determine when a species should be created?
  • Can species only emerge from "misc" creatures or can extant species split off to form a new one?
  • It looks like there's a limit on how many species are displayed - do "hidden" species exist in the "misc" group?


When you spawn in a batch of creatures, each creature that is spawned in that initial batch is considered to be the progenitor of a new species. However, they are all grouped together in misc until there are at least four currently living creatures in that family tree, at which point they get their own entry in the legend under the map, so long as there is space there. If the species display runs out of room, it does end up staying in the misc section; it would be nice to improve the UI here or give better options for what is collapsed and what is shown. Species can definitely evolve distinct subpopulations and if they are geographically separated enough they kind of function as distinct species, but the displays don't yet recognize this and they could still mate with each other if they are nearby. This is because the displays and mating decision use a simpler progenitor-based approximation of species instead of calculating the genetic distance between individuals. There is a lot of data in the DNA in Ecosystem so this is a more computationally expensive calculation than in some other evolution simulations, but it is something I am interested in attempting.

How often do plants seed?

The plants live through about fifteen lifecycles, where each cycle they have a chance to reproduce (a low chance, about 5%) and their age ticks up by one. When they do reproduce, the amount of seeds they release is scaled by their adaptability percent, so a low adaptability can be a slow death for the plant population as they pass away from age and do not produce enough offspring to replenish their numbers. For performance reasons, only one plant is allowed to release seeds at a time, so the cycles take longer the more plants there are (as opposed to the creatures, whose lifecycles are always a fixed amount of time).

  • What does the "survival/energy" stat mean?
  • How often do creatures need to eat / how does starvation work?
  • Does the "any" diet mean omnivorous?


Creatures eat once per lifecycle, which is about five minutes for a mature creature. Creatures gain energy from eating, though foragers need to eat more than predators to get the same amount. The survival and children stats are determined by the energy the creature acquired during its feeding phase: survival is the creature's chance of surviving at the very end of the cycle and children is the amount of eggs it can produce during the mating phase (when it says something like 1.3 children, that means the creature will definitely have one child and has a 30% chance of having two). A creature that didn't manage to get any food is guaranteed to die at the end of the lifecycle and cannot lay any eggs, though it can still fertilize the eggs of others. The total energy also kind of shows the influence the creature's DNA will have on the next generation - if it is more than one, the creature's traits will become more prevalent in the next generation and otherwise, less. The 'Any' diet isn't actually meant to be displayed yet! Sorry, that's a bug.

Is genetic disease random?

It's not quite random but the answer is a little complex. Game physics engines sometimes have stability issues with particularly contorted ragdolls, where they blow up and generate extremely large forces trying to resolve the joint constraints and collisions. Ecosystem detects when this happens to a creature and removes it from the population, calling it 'Genetic Disease'. For creatures affected by this, there usually is something in their DNA that specifies a movement style or body shape prone to physics explosions, so in some ways it actually is like a genetic disease.

Are there plans to make differences between larger and smaller creatures, like a health difference / attack strength?

There are, but they are tentative at the moment. One of my major aims for future development is to widen the variety of niches that are available to creatures and to give them more ways to differentiate themselves, and I think that traits like this may be the core way to make that happen. Because of the way the evolution simulation works, it's necessary for me to experiment, and small changes can have very large effects on what kind of creatures evolve, so I haven't discussed these plans in detail because I don't want to promise something that it turns out I can't deliver. But it is very much something I have in mind.

Thanks for the questions, everyone!

-----
Community Screenshot Roundup


We've been loving seeing the screenshots roll in so below I have collated the ones that stood out to me the most! Massive thanks to Steam user Crispygoat for sharing the image that made its way onto the thumbnail for this very post!



Steam user Lil_Ronin_666 made this lil urchin field and put the terraforming tools to use to create these pleasing columns!



PaintDragon on our Discord server shared this wonderful house they created for their creatures!



"From death comes life", so say Dinoman again on our Discord server who created what appears to be a megalodon skull overgrown with new life!



And here is one final screenshot from Rahvynn again on Discord, who shared this happy boi bopping along who was actually a predator they just spawned in...I wonder if it grew into the feracious boi it was destined to be?



-----

Thanks for reading!


That's all for this development update, I hope you enjoyed it! If you'd like to keep up to date on smaller updates on Ecosystem you can stay in touch on Twitter, Reddit or Discord.

See you in the next one!