You can opt in to the experimental branch by right clicking on “Species”, selecting “Properties” and going to the “Betas” tab.


* Added option to display temperatures as Celsius, Fahrenheit or Kelvin. (Rankine temperatures still in development)
* Fixed a bug locking the Creature Cap and preventing it from being adjusted after being set to a value lower than 5
* Fixed the Starting Creature counts on the “Customize Blank Slate” page not affecting creature generation
* Fixed a crash when “Restart on Mass Extinction” is enabled and you attempt to restart a game that was loaded from a save file.
* Fixed a crash when you set the Mutation Rate to a negative number.
* Fixed a crash when you set the nursery’s Mutation Rate to a negative number.
* Fixed a crash when you set the Feature Location in the gene editor to a negative number (special thanks to those of you who keep breaking the game on purpose. :thumbsup:)
* Fixed a crash when you Initialise Aquatic/Predator and Prey after loading a save file and then quitting to the main menu.
* Added a bit more detail about the game state to the crash logs to assist with future debuggery.

Leave a comment Experimental

Scrollbars. Scrollbars everywhere.


* Added scrollbar to the Save World page
* Added scrollbar to the Load World page
* Added scrollbar to the Export Creature page
* Added scrollbar to the Import Creature page
* Added scrollbar to the Species List on the Sat Map/Cladogram pages
* Added scrollbar to the Clade Diagram itself
* Acknowledged I might have a scrollbar problem
* Added scrollbar to the Gene Editor
* Added scrollbar to the Creature Overview page
* Added scrollbar to the Creature Physiology page
* Increased the gene editor value spinner size to match the rest of the UI
* Added a “Reset To Defaults” button for the Season Editor
* Implemented a minimum value for Seasonal Curve Period to prevent crashes
* Moved the map editor “Randomize” Button
* Moved the map editor “Erode” Button and progress bar
* Fixed some bugs related to the Nursery thinking it’s enabled when it’s not
* Quickstart worlds now have the Nursery enabled by default
* Tweaked the blank-slate “preferred temperature” calculation
* Turned the “Show Tutorials” Yes/No menu back on

Leave a comment Experimental


* Right-click now rotates the Map editor.
* Middle-click now pans the Map editor.
* Fixed bug with Creature Cap value spinner not setting Creature Cap correctly
* Fixed bug with Creature Detail Cap value spinner not setting Creature Detail Cap correctly
* Added the Creature Cap value spinner to the Quick Start page for easier access
* Fixed crash when selecting “Initialise Random” after quitting a world and going back to the menu
* Fixed “Erode” button removing terrain and temperature changes
* Some tooltip wording changes

Leave a comment Experimental


* Fixed map reverting to 0 fertility after a few minutes when using “sediment” fertility type (this happened in development builds, and was re-introduced as a result of the performance fix in
* Fixed sediment map reverting to default when you use height brushes in map editor
* Fixed fertility brushes not working in map editor
* Fixed Save/Load removing brushed temperature/fertility changes and reverting the temp/fert target map to base settings
* Fixed temp/fert variety defaulting to (0.5, 0.5) instead of (0.7, 1.0) when using quickstart without visiting the Map Editor
* Fixed options not being selectable in the Options page.
* Fixed Resolution/Full Screen not prompting a restart when changes were made
* New games should once again automatically select the font size appropriate to your resolution.
* Tweaked the fertility cycle (Wet/Dry season) to be less harsh by default
* Tweaked the sediment map to provide more average fertility by default

Leave a comment Experimental

You can opt in to the experimental branch by right clicking on “Species”, selecting “Properties” and going to the “Betas” tab.


* Dropdown menu’s now display on top of all other controls except ToolTips
* Dropdown menu’s now hold focus when you click them, so that they don’t interact with controls behind them
* Fixed issue with terrain-height brushes sometimes raising/lowering/flattening terrain to the left or right of the brush location, instead of under the brush.
* Water height is now set correctly when adjusted in Map Editor and Quickstart
* Fixed some incorrectly positioned UI controls
* Improved menu performance when eroding/generating sediment map

Leave a comment pre-release is now available on the Experimental Branch!

It’s a surprise! Have a surprise shoggoth:


The (New World Update) Pre-release is now available. You can access it by right-clicking on “Species: Artificial Life, Real Evolution” in steam, selecting “Properties”, selecting “Betas” and opting in to the Experimental Branch.

As always, a word of caution: things on the experimental branch may be unstable! Also, be warned, the default season settings will probably need some tweaking. They can be quite harsh.

Final note, 0.13.0 does not have backwards compatibility with old saves or exported creatures. Sorry about that, here, have an apology shoggoth:


I’m handing out shoggoths like candy today.

1 Comment

‘Tis the Seasons

Geez, the SeasonalCycleEditor UI control has well and truly gone through a it’s fair share of iterations now.


The goal here is to provide an intuitive interface for customizing the duration, magnitude and offset of seasonal temperature/fertility cycles, which themselves follow a straightforward sine curve.


The first version of this control utilized a straightforward 2D texture of a sine curve, which I figured I could stretch, tile and crop to create the cycle graph. As mentioned in a previous post, that attempt failed because frickin’ arithmetic, how does it even work, science can’t explain that.


So I scrapped the sprite-based control and made this shader-based control instead:




Technically, this is two controls: the temperature and fertility curves are rendered separately on top of one another. It’s a somewhat prettier result, but it lacks polish and isn’t exactly intuitive: 6 handles on a single surface is way too many, and if it wasn’t labelled “seasonal cycle” it’d be quite difficult to guess at it’s purpose.


Not good enough. Try again:




Better. Separating the curves was a good call. Their units (Celsius and percentage respectively) are unrelated, so sharing graph space only makes it more difficult to label the Y-axis.

Labeling the seasons was also a good call. I originally considered “Spring/Summer/Autumn/Winter”, but “Wet/Hot/Dry/Cold” are more descriptive and less tied to real-world seasons.

Also, they’re shorter. Easier to fit on the UI.

The result is still non-optimal, however. I don’t like that the hot and cold season bars overlap with the wet and dry seasons, a) because that’s not accurate (“hot” shouldn’t start as soon as “cold” ends!) and b) because it’s not how we *think* about seasons. Sure, we’re aware that in reality one fades into the other, but in our minds, the concept of spring is distinct and separate from the concept of summer.

To be maximally intuitive, a graph like this should reflect the mental model the player has of the thing being graphed.


One more try:

SeasonsMkIIISmlMuch better. Still could use some tweaks, labels, and a brighter season description bar (my laptop has a very bright screen, which makes it hard to see how dark some parts of the game are until I export the screenshots to a different machine), but it’s very much getting there. I’m happy to leave it here for the moment and make progressive tweaks to the design as I push forward to 0.13.




1 Comment

More Multithreading. Also Terrain Brushes

One advantage of doing multithreading for 0.12.0 was that it de-stigmatized it for me. So this week, rather than keep trying to optimize the lag I had created in the map editor, I did a thing and dumped it all on another thread.

Two other threads, actually. The erosion algorithm spits out a heightfield, which needs to be converted into vertices for rendering. Both of the erosion and the conversion are expensive functions, which is why they now both happen on other threads. I’ve become quite fond of the backbuffer pattern, in which I complete all the internal work on a backbuffer and flip it to a forebuffer copy for display and use by other parts of the program. The results are promising: not quite real-time but close enough to be workable, and the UI remains responsive throughout.

All that out of the way finally freed me up to start working on the map editor itself.

For the brushes, I needed the ability to pick a point on the 3d terrain with the cursor (okay yes, I could have just had players paint on a top-down map, but where’s the fun in that?). I’ve already done this in the game proper, of course, but remember how the in-game terrain is a) heavily optimized and b) a static, unchanging object? Yeah, the triangle-picking technique I used for that caused far too much lag on a dynamic heightfield to be viable in the map editor.

Instead, I took a different approach: ray-tracing from the cursor position to the terrain object and polling the height field for every pixel travelled. The result is nowhere near as accurate as triangle-picking, but it’s a lot faster and you’ll never be as close to the map editor terrain as you will to the in-game terrain.

And with that done, I started work on the brushes. I’ve got some simple raise/lower/flatten brushes in place, but no real UI for them yet. Still working on that part.


I blame my laptops touchpad for this. 

All things considered, this was a good week.


Leave a comment

Keepin’ on

Sorry for the radio silence everyone, I’ve been submerged in some refactoring work that, while vital to keep a codebase the size of Species workable going forward, doesn’t make for great screenshots and/or interesting blog material.

“Dear diary, today I converted ProfileOptions from a static class that reads from a flat text file to an easily expandable object contained in the Game class that writes to xml format so that World settings can be more consistently managed when loading and unloading games, and will probably have to spend a fair number of hours tomorrow refactoring all the references to it.”

Also, and I made an attempt to draw the “Seasons” UI using 2D sprites that failed miserably and set me back a week. I’m reworking it with shaders, because I’m apparently better with trigonometry than I am with basic 2D arithmetic.

That effort is going somewhat better: I have a working graph and all the data I’ll need to actually implement seasons without too much trouble.

Still to do: Map Editor brushes, Erosion Optimization, Creature Settings UI and Scrollbar control. Progress is slow, but steady.


The Quickstart Page

The New World UI is a mess. Let’s not sugarcoat it: clicking the “New World” button is like kicking a beehive, except instead of kicking you’re clicking and instead of being assaulted by wrathful insects hell-bent on vengeance you’re exposed to a confusing excess of numerical input spinners hell-bent on vengeance.


So, the first part of the new 4-part New World screen will be a simple Quickstart screen, designed to get you away from menu and into the game as quickly as possible. New players will still have a few of the most vital controls, but the vast majority will be offloaded to the other screens.


I’m not quite happy with the current design and am still experimenting with it, but it showcases the idea well enough.



On the left, a preview of the starting creatures. Since we have more space available than before we can make this bigger than the one on the old New World screen, but more importantly, it shows several specimens rather than just one. This makes it easier to see the difference between ‘single species’ options (‘Initialise Blank Slate’, ‘Initialise Aquatic) and more varied settings (‘Initialise Random’, ‘Initialise From Exported).


On the right, the new 3d Map Visualiser. The erosion algorithm has been built into it and it’s been hooked up to the in-game terrain, so it’s now possible to start games with eroded terrain. The erosion process looks good while it’s happening, although it’s a major performance issue. I’m still looking for a solution for that: I tried lowering the fidelity of the map visualiser and it somehow made the lag worse. So I’ll probably have to resort to multithreading again. At least I know how to do that now!


The three pop-out sliders on the right hand side are water-level, temperature and fertility, and they update in real time too. A similar UI control could come in handy for the climate settings in the main game.


Unexpected feature: if you adjust the water height while the erosion is happening, you can get a neat ‘layered’ effect to the erosion.