0.11.0 Development Thread

Announcements and infodumps from the Species dev team.
Post Reply
User avatar
Quasar
Site Admin
Posts: 1732
Joined: Tue May 29, 2012 2:04 am

0.11.0 Development Thread

Post by Quasar » Fri Mar 02, 2018 10:46 pm

Here we go again!

https://speciesdevblog.wordpress.com/20 ... xt-0-11-0/
Greetings minions, and congratulations on surviving the incomprehensible eldritch horrors and repeated global memory wipes of the last couple months. You’ll be happy to know I have big plans for the future, and even happier to know a small number of those plans are not convoluted schemes to take over the world.

Among those…

Steam

Image

The next update will be something of a milestone, where Species moves away from our little rockpool on the shoreline of the internet and we attempt to put the game onto Steam. Steam is new territory for me, but Mike has experience with releasing games onto the platform, so I’m optimistic about our chances.

In the interests of full transparency: in the months leading up to the game’s launch, I’ll be taking Species 0.10.0 off the site so that everything can go through Steam. The steam release will mark the boundary between the Free Alpha and Paid Beta versions of Species ALRE, and the end of the free alpha versions. Everyone who pre-ordered the game will have steam keys sent to the email address they provided via paypal.



Don’t worry though, I’m not planning to move into the paid beta without making it worth your while! These are the major features planned for Species ALRE 0.11.0:







Underwater Ecosystems

Image

Who wants to evolve creatures under the sea, perhaps in a residence resembling some type of tropical fruit?

New underwater food sources. Kelp and Coral will provide essential food for species that choose to venture into the oceans. I’m also planning to introduce a new simulation mechanic: “shoals”. These clusters of small, indistinct creatures will be a valuable source of meat for carnivores, exploitable only by those creatures fast and maneuverable enough in the water to catch them.
Swim physics. A creature in the water will move differently from how they move on land, based on their body parts and shape. Their buoyancy will also have an influence on whether they swim close to the surface or walk along the ocean floor.
Oxygen. A gill/lung dichotomy will determine how well a creature takes in oxygen from their environment, which will in turn affect their stamina and speed. Simplistic creatures, like P. specium, will rely on an anaerobic metabolism that allows them to survive in both environments, but at a significant efficiency cost.
Body parts to support these new mechanics! We’ll need a variety of fins, tails, legs, feet, and head types to properly support aquatic and amphibious animals.




Social Behavihttps://speciesdevblog.files.wordpress.com/2018/03/751-animals.jpg?w=300&h=200w=300&h=200https://speciesdevblog.files.wordpress.com/2018/03/penguin-440.jpg?w=300&h=225w=300&h=225[/img]

It’s time for the species in Species to forgo their ardent individualism and start acting towards the greater good. The greater good.

Co-operation. Creatures will call when beginning an action, notifying other creatures in their vicinity of their intentions. This will cause other creatures with high co-operation and similar unmet needs in their vicinity to join in, whether this be to hunt as a pack, graze as a herd, or huddle together for warmth as a… flock, I guess? Yeah, flock. Because penguins.
Altruism. Creatures will also call when in need of help. Altruistic and/or closely related creatures whose other needs are met will be able to respond by feeding starving creatures or moving in to defend creatures that are under attack. And I guess huddling for the benefit of freezing creatures? Because penguins again.
Aggression. Social behaviors go both ways. In real life, creatures fight over food, mating rights and territory. I don’t believe I have the infrastructure in place for the latter two behaviors yet, but I do think food fights could be implemented.




Cross Platform Support – Mac and Linux

Image

How hard can it be?

Moving up to Mac and Linux means upgrading the game’s framework to XNA 4.0, and from there to Monogame. This is an engine change that I sincerely hope will allow me to provide cross-platform support.
I’d best note here that I can’t actually promise Mac or Linux support for 0.11.0. While it’s a goal, and upgrading to Monogame is a major step in the right direction, I don’t know for certain that it’ll be functional by then.


Cheers,
Quasar

Natural_20
Posts: 1659
Joined: Mon Jul 14, 2014 5:25 am

Re: 0.11.0 Development Thread

Post by Natural_20 » Sat Mar 03, 2018 7:44 am

I'm excited to hear the game's progressing, but what about multithreading? The game won't fare well with current performance. I cant just make the map smaller either, because map sizes under 1.0 just glitch out.
Quasar wrote:Dammit, we forgot to sell the psycho drugs and now the chickens are ODing.

docsy
Posts: 75
Joined: Sat Jul 29, 2017 8:50 pm

Re: 0.11.0 Development Thread

Post by docsy » Sat Mar 03, 2018 5:02 pm

This is great news, good luck developing Qu

User avatar
Quasar
Site Admin
Posts: 1732
Joined: Tue May 29, 2012 2:04 am

Re: 0.11.0 Development Thread

Post by Quasar » Sat Mar 03, 2018 11:50 pm

Natural_20 wrote:
Sat Mar 03, 2018 7:44 am
I'm excited to hear the game's progressing, but what about multithreading? The game won't fare well with current performance. I cant just make the map smaller either, because map sizes under 1.0 just glitch out.
I will spend at least some time into optimizing, as I'm of the opinion that the behavior tree needs some attention in that department.

However, multi-threading is extremely unlikely to happen any time soon (except for relatively standalone uses, like fixing the Autosave pause and allowing the loading screen to not hog the main thread). Half the bugs I have to fix right now are because of code being accidentally executed in the wrong order. The additional cost of debugging wouldn't be worth the performance improvements.

Natural_20
Posts: 1659
Joined: Mon Jul 14, 2014 5:25 am

Re: 0.11.0 Development Thread

Post by Natural_20 » Sun Mar 04, 2018 10:03 am

Quasar wrote:
Sat Mar 03, 2018 11:50 pm
Natural_20 wrote:
Sat Mar 03, 2018 7:44 am
I'm excited to hear the game's progressing, but what about multithreading? The game won't fare well with current performance. I cant just make the map smaller either, because map sizes under 1.0 just glitch out.
I will spend at least some time into optimizing, as I'm of the opinion that the behavior tree needs some attention in that department.

However, multi-threading is extremely unlikely to happen any time soon (except for relatively standalone uses, like fixing the Autosave pause and allowing the loading screen to not hog the main thread). Half the bugs I have to fix right now are because of code being accidentally executed in the wrong order. The additional cost of debugging wouldn't be worth the performance improvements.
OK, not "soon", but what about "ever"? It seems like a gigantic waste for a game about large populations to use an eighth of the available processing power on a modern gaming PC.
Quasar wrote:Dammit, we forgot to sell the psycho drugs and now the chickens are ODing.

User avatar
Quasar
Site Admin
Posts: 1732
Joined: Tue May 29, 2012 2:04 am

Re: 0.11.0 Development Thread

Post by Quasar » Tue Mar 06, 2018 4:50 am

Natural_20 wrote:
Sun Mar 04, 2018 10:03 am
Quasar wrote:
Sat Mar 03, 2018 11:50 pm
Natural_20 wrote:
Sat Mar 03, 2018 7:44 am
I'm excited to hear the game's progressing, but what about multithreading? The game won't fare well with current performance. I cant just make the map smaller either, because map sizes under 1.0 just glitch out.
I will spend at least some time into optimizing, as I'm of the opinion that the behavior tree needs some attention in that department.

However, multi-threading is extremely unlikely to happen any time soon (except for relatively standalone uses, like fixing the Autosave pause and allowing the loading screen to not hog the main thread). Half the bugs I have to fix right now are because of code being accidentally executed in the wrong order. The additional cost of debugging wouldn't be worth the performance improvements.
OK, not "soon", but what about "ever"? It seems like a gigantic waste for a game about large populations to use an eighth of the available processing power on a modern gaming PC.
Yes, of course. Species is more dependent on optimization than most games, and doesn’t have as many options in that department as other games due to the need to maintain the simulations fidelity at all times. I’ll almost certainly end up trying to multithread it at some point.

But parallel programming has hella restrictions. Sadly I can’t just farm out an eighth of the creatures to each core, because the creatures are affected by, and affect, each other. It’s a really bad idea to read or write to an object from two threads at once for a whole bunch of reasons.

That’s why a lot of games are still single-threaded, even though parallelized cores have been around for years. Unless you’re building atop an engine with multithreading already built into it (which usually takes the form of doing draw and update code on two separate threads, rather than full-scale 8-core multithreading), it’s really painful to work with, and the time is better spent optimizing the bottlenecks in the existing code than trying to parallelize it.

Natural_20
Posts: 1659
Joined: Mon Jul 14, 2014 5:25 am

Re: 0.11.0 Development Thread

Post by Natural_20 » Tue Mar 06, 2018 12:05 pm

Quasar wrote:
Tue Mar 06, 2018 4:50 am
Natural_20 wrote:
Sun Mar 04, 2018 10:03 am
Quasar wrote:
Sat Mar 03, 2018 11:50 pm

I will spend at least some time into optimizing, as I'm of the opinion that the behavior tree needs some attention in that department.

However, multi-threading is extremely unlikely to happen any time soon (except for relatively standalone uses, like fixing the Autosave pause and allowing the loading screen to not hog the main thread). Half the bugs I have to fix right now are because of code being accidentally executed in the wrong order. The additional cost of debugging wouldn't be worth the performance improvements.
OK, not "soon", but what about "ever"? It seems like a gigantic waste for a game about large populations to use an eighth of the available processing power on a modern gaming PC.
Yes, of course. Species is more dependent on optimization than most games, and doesn’t have as many options in that department as other games due to the need to maintain the simulations fidelity at all times. I’ll almost certainly end up trying to multithread it at some point.

But parallel programming has hella restrictions. Sadly I can’t just farm out an eighth of the creatures to each core, because the creatures are affected by, and affect, each other. It’s a really bad idea to read or write to an object from two threads at once for a whole bunch of reasons.

That’s why a lot of games are still single-threaded, even though parallelized cores have been around for years. Unless you’re building atop an engine with multithreading already built into it (which usually takes the form of doing draw and update code on two separate threads, rather than full-scale 8-core multithreading), it’s really painful to work with, and the time is better spent optimizing the bottlenecks in the existing code than trying to parallelize it.
Fair enough, it's just frustrating to watch one core straining while the other 7 idle. Hopefully those optimizations will make a big difference.
Quasar wrote:Dammit, we forgot to sell the psycho drugs and now the chickens are ODing.

User avatar
Prudentia
Posts: 3947
Joined: Mon Nov 03, 2014 2:56 am

Re: 0.11.0 Development Thread

Post by Prudentia » Fri Mar 09, 2018 12:24 am

When it comes to social behavior in terms of intraspecific social behaviors, any chance you are going to make them a mutatable gene, and incorporate density dependence?

Density dependence is already kind of built in the manner of: There is no food left, so virtually everything starves: Or, there two members of a sexually reproducing species left on opposite sides of the world, no mates = extinction. This could be a gateway to introduce stress. At a certain density (genetically determined), each individual becomes more aggressive with their own kind, perhaps more aggressive in general and less efficient at conversion of food into energy. Essentially adding a secondary behavior type (eating, sleeping etc, being primary) that could actually tell you what the trend of that species is. This secondary behavior type could be more like a status and can tell you how well a species is coping with the current environmental and climatic conditions. A relaxed status could indicate that a species is coping with the environment and not encountering issues that endanger its short term survival, while a stressed state could indicate that a species' short term survival is in serious trouble.


If you decided that you want to eventually add mutagenic variability, this could provide the framework for that by triggering at a certain proportion of individuals of a given species being in a stressed state. If you wanted to be really adventurous, or conservative (depends on your point of view), you could make only some areas of the genome susceptible to a variable mutation rate.
Black Rockfish, Sebastes melanops, ~12 inches, of the coast of Newport, Oregon.

User avatar
Quasar
Site Admin
Posts: 1732
Joined: Tue May 29, 2012 2:04 am

Re: 0.11.0 Development Thread

Post by Quasar » Fri Mar 09, 2018 2:15 am

Prudentia,

I'm not sure if it counts, but one thing creatures don't currently have, and probably should have, is an 'idle' behaviour state. They try to fulfil whatever need is most urgent, regardless of whether or not any of their needs are actually urgent. For instance, if a creature has fulfilled all their immediate needs they'll probably try to optimize their temperature, even if they're reasonably comfortable and there's little benefit to be gained by doing so.

For 0.11.0 'idle' will most likely be a relatively simple behaviour, but having behaviour as a node on the behaviour tree opens up options. There's a lot of things a creature that has fulfilled all their immediate needs could be doing to optimize their chances of reproduction: resting to reduce costs while producing offspring, storing food or defending a natural food source, building a nest, migrating or (relevant to your post) gathering/dispersing based on a preferred population density.

In 0.11.0, behaviours are likely to affect density, but density probably won't affect their behaviour.

User avatar
Quasar
Site Admin
Posts: 1732
Joined: Tue May 29, 2012 2:04 am

Re: 0.11.0 Development Thread

Post by Quasar » Fri Mar 09, 2018 11:52 pm

Blahblahlablablhablha typingtypingtyping blahblahblah

https://speciesdevblog.wordpress.com/20 ... o-xna-4-0/

Post Reply

Who is online

Users browsing this forum: No registered users and 7 guests