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:
There is no patch associated with today's update
---
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
----
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.
----
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:
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:
