Progress Report


Hello again minions!

Apologies for my extended leave of absense. I’m going to blame the vitamin D deficiency, although it’s quite possible I’m just lazy.

I’ve been all over the place lately. Here’s a few of the things I’ve been working on, changing, designing, redesigning, staring blankly at or considering scrapping entirely in favor of something objectively more awesome…


Content Management

The current content system is a lot better than nothing, but it’s still a pain when I’m trying to import assets in bulk. It stores assets like this:


That’s a seperate folder, asset file (in this case, png images) and a data.txt file for every single asset in the game. The game interprets that structure to automatically import the assets and get their stats from the text file, but it’s still a pain to set up the folders and files.

My current task is to rework it into much simpler system, which simply stores all the assets in the same folder and uses a single large ‘Stat Dictionary.txt’ file to provide values for every asset. This reduces adding assets from a 4 step process (create folder, create file, create data.txt, edit data.txt) to a 2 step one (create file, edit Stat Dictionary.txt)

I’m very nearly done with this, and will be returning to the nursary once I’m done here.


Common Species Names

I did some experiments with the idea of generating common names for species (as opposed to the existing faux-latin scientific names). I’m thinking the most immediately recognisable way to do it would be to have an adjective that describes some aspect of them, followed by a name: “rainbow lorikeet”, “eastern rosella”, “bottle-nose dolphin”, “spotted quoll”.

So I threw together a quick, half-hour library of adjectives and sounds (I literally just pulled apart the common names of a bunch of animals), dumped it into the same algorithm that generates the latin names, and this is the result:

Yellow Dracadpo
Deep Celf
Yellow Pazarey
Green Flgon
Day Al
Pigmy Lolf
Aboreal Butop
White Padger
Shy Monk
Island Owk
Large Falcgeton
Laughing Fllashi
Northern Doon
Short furred Ralf
Bare Dor
Uncommon Atopie
Whale Snnn
Common Linnus
Mountain Snake
Dwarf Ranny

One or two bugs where I accidentally cut the syllables at the wrong point (“Snnn” and “Flgon”), but otherwise the rules I’m using for syllables work quite well. If I could just find a way to assign the adjectives logically, this could be quite a viable addition to the game.

In case you’re wondering about the rules:
– Syllable 1 must end with a vowel,
– Syllable 2 must begin and end with a consonant
– and Syllable 3 is often empty.

So the first one, “Dracadpo”, is “Dra-cad-po” (Dragon-cicada-kakapo). See how many other animal names you can spot!

And yes, I’m aware I’m using the word “syllable” wrong.



Progress is being made, but it’s slow. Some images:



Some of the mechanics are in place (you can add creatures to the nursary with the move tool, and the game registers them and their offspring as “player owned”), others are still in progress.



As I already mentioned on the forum, I’ve finally given in and started using downloaded, royalty-free assets rather than modelling my own.


This isn’t quite as lazy as it sounds: it takes quite a bit of effort to turn a wolf modeled by someone else into an evolvable head type. I need to download the model, cut off the head, remove the eyes and eye sockets, seal the gaps in the model, UV it to use the fur textures, UV it a few more times if it’s got geometry for mouth or horn textures, optimise or smooth it if the poly-count is way off the average, scatter fur polygons over it, and export it.

Oh, and then I need to repeat the process for a few intermediate types so wolfy faces don’t just appear out of nowhere…

You get the idea: it’s actually more work to bastardize a downloaded asset than simply to adjust the shape of an existing one and export it. But since I suck and can’t actually model (ability to screw with existing models notwithstanding), the downloaded assets more than make up for the extra effort in quality.




Improvements to discrete/mutation-mapped Head Types

Currently, the game stores Discrete genes (head types, limbs, body covering) as integers. They mutate rarely and when they do they provide big stat changes, in comparison to the floating point genes which mutate commonly in small ways and provide a continuous spectrum between points.

For a discrete mutation to evolve, it’s proponents have to actively outcompete and displace the existing population in order to take over: the entire population can’t simply evolve statistically through hundreds of tiny converging mutations the way floating point genes can.

Those familiar with evolution may actually recognise this: it’s a textbook example of the Hopeful Monster hypothesis vs Darwinian Gradualism.

And here in Species we have something genuinely remarkable: evidence that the hopeful monster method of evolution is highly inefficient.

The discrete genes do evolve and even seem to respond to natural selection a little, but they don’t do so nearly as fast or as efficiently as the continuous ones. Creatures are far more likely to optimise their limb sizes than they are to optimise their limb type despite the significant speed/stamina benefits a more developed limb type would provide.

But enough theory, how can I use this information to improve the game?

If I convert these discrete genes into continuous ones, they would be far more responsive to natural selection. The trick is finding a way to do that. Consider this mutation map:


As a discrete map it makes perfect sense: each node is represented by an integer. Each node might be a head type, or a body covering… any of the existing discrete genes.


As a continuous map, it doesn’t work.

It *nearly* works: it works for 0-1 (0.2 rounds to 0, 0.8 rounds to 1), and can be interpreted to work for 1-2, 1-3 and 1-4 (1.2, 2.2, and 3.2 all round to 1). But the moment you have more links than nodes in the map, it fails.

The solution, therefore, would be to not represent the nodes genetically at all. Decouple the actual node’s from the genes entirely. Instead, represent the *links*.


Mutations will be a bit more complicated under this system: usually they will just add or subtract a small random value, but when they pass a node the mutation map will have to decide which branch they’re moving to and adjust the value accordingly. For example, adding 0.2 to 0.9 could result in 1.1, or it could result in 2.1 or 3.1. In all these cases it will still reference the same node and look the same, but which branch it is on will affect it’s offspring and it’s future evolution.

So that’s the technical implementation, and it would work for natural selection, since the stats of each head type could be easily lerped for in-between states. But what about the visual side of things?

It would be easy enough to just round it to and display the closest head type/body covering. But there’s other possibilities here too, although I’m not completely sure how viable they are. Fading between body coverings is the obvious one (although I’m honestly not sure how much more complexity Shader Model 3.0 can handle on top of the skinned animations and fur shader), but an even more interesting one would be morph targets on the heads: moving the vertices of the head model to an in-between state resembling the model on the other end of the link. It wouldn’t be possible to make it perfect: there would still be noticeable pops when the model changed it’s UV’s and how many vertices it had, and implementing it would be asking for some weird visual glitches, but it would provide a much smoother and more interesting transition between head types.

All long term stuff, of course, but I’m feeling optimistic some of these at least stand a good chance of being implemented.

  1. #1 by Maxwell_Edison on November 18, 2015 - 1:53 pm

    Hyped for 0.9.0. It’s a shame you had to get royalty free models, though, as I feel if you tried you might be able to find some dedicated fans with modelling abilities that would be willing to chip in, though either way i’m sure they’ll look great. Keep up the good work, you’ve got a lot of work done, and still more left to do; I hope you keep on rolling like the great developer you are.

  2. #2 by Bryan Dumas on November 22, 2015 - 5:12 am

    I am hyped for 0.9.0 as well. Though I have a question:
    Do you plan on putting this on steam when it’s finished? If so, I would not have a problem buying it, unless you plan on making it free to get and play (Which I find unlikely), but either way, I hope to see this game finished! I can give a few ideas for future updates if you like. One other question: Will flying and swimming creatures be added any time soon? Just curious.

  3. #3 by John Mowat on November 25, 2015 - 5:05 am

    This is such an awesome project! Your concept, design, and attention to detail are great, and I’m impressed at how long you’ve been chipping away at it.
    The world needs good evo-sims, keep it up!

  4. #4 by AnarchCassius on December 5, 2015 - 1:05 pm

    I might be able to find you a modeler but frankly I think using royalty free assets is a great way to buik out the game. There’s no reason to reinvent the wheel.and I love the way you worked those new heads in. That sort of customization is no small task.

    As for the hopeful monster.that IS interesting data. I do think Stephen Jay Gould may be on to something so I do raise these caveats: The population sizes in Species are so small one could argue larger orders of magnitude may not have the same problem as they can behave more probablistically.

    More crucial, Species organisms are haploid, complex life on Earth is diploid. Passing on a macro trait is purely binary in Species logic but in complex organisms the trait can be passed on even when not expressed. Having diploid DNA, at least as an option, would be very useful for experimental purposes.

    As to you deintegerization of the nodes I think you do a great job of problem solving. More sub steps and diploid DNA might turn out to be a better solution for simulating Earth but the technique is interesting in it’s own right.

    Dynamic in-between steps sound awesome but potentially very computationally expensive given the number of organisms at once and possible options.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: