Creatura cover
Creatura screenshot
Linux PC Mac Steam
Genre: Simulator, Strategy, Indie

Creatura

The New Almanac Update

Usual warning: Below text contains technicalities and developer insight. If You are just interested in playing Creatura - TL;DR: As always an update is coming, almanac has been replaced and now stores genomes for later use. Details are below, cheers!

Since the inception of the almanac feature in August 2018, it wasn't really part of any update cycle spotlight. In fact, the word "Almanac" on the changelog has been only a hero of a single category: "Fixed"; single handedly introducing many crashes and bugs into the game, as long as it was part of Creatura. Until now.

Keep It Simple, Stupid.


Most of us, given a problem, will attempt to solve it with the most efficient solution. Some classical solutions, however, could be seen by an inexperienced naive newcomer, as deserving upgrade, or worse - inventing them from scratch. That's an unfortunate part of the Dunning-Krugger effect - our inability to assess the complexity of what we don't know. Lacking necessary knowledge, one often assumes things are deceptively simple, or can be easily improved. Unfortunately as a new and naive developer, I have fallen into this exact trap.

Taxonomic systems are hundreds of years old. The people who have designed ways to visually represent them either had scientific titles longer than my name, or have spent most of their careers working with taxonomic systems. The chance to improve something in a field that has been meticulously shaped by experts over decades is relatively small. The chance to make it better from scratch is basically none. The chance to make it an unintuitive, confusing mess - is exactly what I did while designing the old almanac.

Premature micro-optimizations


While designing games, we are always limited by either computing power, or memory size. "Stuff" and "things" can be generally either calculated or stored. In 2018, my concern with designing the almanac was its possible size. After all, granting players the ability to create an infinite collection is a risk - inevitably a large enough collection of data will affect performance of any computer, no matter how good it is. That's why the old almanac would show only up to 10 entries from common ancestors to selected species.



Was it a reasonable fear? Probably. Will the large enough almanacs slow down older computers? For sure. Is it a good enough reason to artificially cap the players with better rigs to enjoy their unique evolutionary adventure in some sad, limited representation? Probably not. Why have I designed it to represent the entries in such a confusing way? I'm not sure, but I can say that the code behind it was even worse, as the almanac crashes have proven over and over again.

It's Trees All The Way Down


After a couple years of working on Creatura and a lot of feedback from players perspective, it was clear that almanac not only requires fundamental change of UI, but also new features to improve the game flow. Is your inventory stacked with chests and cuttings, to the point of just using vivariums as storage rooms? Have You ever tried to map a gene expression You've handled already, only to realize that the specimen is now gone from inventory and the 5 edyGene genome slots? Or maybe You've just repeatedly crashed while filling up the almanac, asking yourself what's even the point of it? Well - meet the new almanac.



It's a simple tree graph. From top to bottom, it will represent not only all the species discovered in the vivarium, but also any major missing link between them and the common ancestors. No longer is it necessary to start the almanac from the very first fauna and flora to not miss on any species - the entries store now not only description and images, but also the species DNA, usable directly in edyGene. Just click on the genome in the bottom part of the almanac entry, and it'll be loaded verbatim, ready to get applied right into the active specimen unexpecting sudden genetic transformation.

To The Infinity, And Beyond Available System Memory


This relatively small change has a huge impact on gameplay in general. Almanac can be now used as an infinite inventory for common plants, and a great help when mapping genomes. It also gives opportunity for completionists in the "end-game", and let's be honest - quite a cool widget to play with and appreciate the evolution of our vivariums (with the feature to 'screenshot' it as a whole into a file incoming soon).



The new almanac, as well as new sponges and a ton of bug fixes is a part of update 1.1.2, and should be live (with a soft-wipe of existing saves) in a couple days. Hoping to see many tree graph representations of evolution, just as it should be represented - in a simple, straightforward way. Have fun!


Mid-Update Content Supply

As You might have noticed, the recently released patch has been unusually large for the middle of the update cycle. While the version 1.1.2 is still brewing (and hopefully will introduce new animal species), the latest minor release brings changes to two quite neglected parts of the game - scenarios and tank parts.

Better Scenarios
The complete set of evolution scenarios has been redesigned and improved. Quests and environments got rebalanced, and each scenario now grants a unique tank stand on completion, so even if You enjoy the game more in Freeplay, there might be a couple of new reasons to complete the current "Evolution Vivarium" campaign.



More Tank Parts
In any game mode, looking for chests (or grinding credits to open them, in case your inventory is full of stashed chests) just got much more exciting. 11 new rare tank stands can be now collected from the reward chests, and the old rewards have been improved. With the new content, there are now close to 30 tank parts ready to collect, and even more are waiting to get introduced to the game.



While there are other gameplay features planned in 1.1.2 cycle (and obviously more fixes), those changes should ease a bit waiting for the first new post-release animals, as the new stars of the update are definitely coming. On many, many legs. Stay tuned!

Update 1.1.1

- Implemented new developer DNA editor
- Implemented legacy compatibility indirect renderer for DirectX 10 and OpenGL 4.3 GPUs
- Plants DNA can mutate now nodes tilt
- Plants DNA can mutate now nodes weight
- Plants DNA can mutate now leaf grow position
- Plants hover highlight is now visible only on selected nodes
- Plant nodes weight is now visibly bending plants
- Fixed plant roots visibility when handling active plant
- Optimized game startup and loading time by structuring transform data into discrete class
- Refactored growing plant caching to no longer use singleton method

Update 1.1

- Optimized rendering large amounts of plant nodes
- Refactored plants renderer to use indirect instancing
- Refactored flowers and fruits animations system

Creatura, Up To Ludicrous Speed

Warning: Below text contains technicalities. If You are just interested in playing Creatura - TL;DR: Update is coming, performance will be better, unique order of words and numbers achieved this. Thanks for the attention, now for the actual post:



When my work on Creatura started in 2016, the priority was to keep the game performance high. In a game where selecting plants is part of gameplay, the amount of plants that can be displayed at once becomes bound to difficulty level, giving advantage to people with rigs powerful enough to render millions of nodes without the simulation slowing down to keep the frame rate stable.

Over the course of 5 years between the prototype and 1.0 release, computer hardware got more powerful, the game gained many more features, and became more complex visually. While the performance would be considered good enough by ~2015 standards, now with screens capable of 300FPS+, Nintendo Switch release coming soon, and the GPUs limited availability, 60FPS is just not good enough anymore. An optimization was necessary.

Any framerate improvement in an already developed game is a success.


A 20%-40% gain can be considered a huge optimization. Anything beyond requires a radical new approach to code functionality, since no simple solutions (like just reducing the number of operations per frame) can itself help that much. For computationally heavy tasks there is always the premise of multithreading, but in the case of Creatura, most of the weight was put on the GPU, required to render thousands of different plants, composed of thousands of unique nodes in various states of growth.

One of the solutions was to reduce the draw calls count. Instead of drawing each leaf and stalk, one after another, the game combined all of the growing and grown nodes from a plant into a single mesh, in theory cutting the need for a graphics card to just perform one draw call per each plant in the tank. However, this solution had many issues. Still growing nodes couldn't be efficiently combined, to avoid further increasing number of draw calls material variations in a single plant were considerably limited, and the whole system was incredibly complex, with a constant stream of meshes coming in and out of combine queue, and GPU memory was bogged down with moving around millions of vertices every frame. Countless hours went into creating and maintaining it, even more were required to fix the problems it caused, and frankly - it simply wasn't good enough.



Everyone likes grass.


After the implementation of grass bags, the statistics were obvious - players were attempting to cover the ground with grass or algae, with thousands of simple, but still draw-call consuming plants. With some micro-optimizations, code reduction, or straight trickery, I could probably find an additional 10 to 15 more FPS, but that's just not much room for growth (literally). Even on fairly beefy computers, the built-in benchmark would bog down to around 80FPS, with many milliseconds short to achieve modern refresh rates. My initial approach to optimization was correct, reducing the number of draw calls was an answer to high draw calls count, but the original "fix" was too naive, and wasn't scaling up. I could however, stop batching plants, and start to batch unique node types together.

In Creatura, many plant nodes share the same mesh. The textures are different, giving them unique shapes and aesthetics, but the vertices positions are uniform. This allows mesh batching. While there are some variations (hardwood leafs have different shape to softwood, stalks use unique meshes, etc) the total number of unique plant meshes in game is still under 100, much below the number of plants an involved player can grow at once. Even in most complex vivariums, consisting of tens of thousands of plants, the performance should still be comparable to a tank with less than 100 plants. And that would be a massive improvement.


No solution is perfect.


By skipping the rendering pipeline built into the engine and tapping directly into the GPU API, manual memory and render management is required. That creates overhead, and doesn’t work on the very old machines without compute buffers support. Performance-wise however, the benchmarks seem to show improvement in order of 2x to 3x. This isn't the gain of a couple frames per second here and there - the frame rate realistically has at least doubled.

There are still quirks to iron out, and undoubtedly this solution will introduce many bugs to fix, but it seems to be more than worth it. Vivariums consisting of many more plants can radically change the gameplay experience, and allow new features to get implemented. Lower-end machine should be now able to play in comfortable, constant high frame rates, and the more powerful rigs will be able to run Creatura much smoother, with less energy consumed, perfect to let it run in a window on a side.

Creatura 1.1 should be available for testers on the nightly branch soon, and the update will get hopefully released early next month. Thanks, and hope You’ll have soon a lot of fun with much more filled tanks.

Update 1.0.1

- Implemented Japanese fonts
- Implemented dialogue portraits
- Implemented 9 stored vivariums limit
- Implemented microbiome zooming indicator
- Animals have now minimal size
- Camera can be now rotated with keyboard
- Main menu has now “Return to Vivarium” button
- Store descriptions are now added for every rock
- Camera edge rotation is now disabled by default
- Camera can now move and rotate simultaneously
- Camera horizontal and vertical range is now extended
- Fixed biomes data not loading when more than one tank was stored
- Fixed research experience not increasing after sequencing genome
- Fixed crashes and issues when loading grown cached plants
- Fixed plants position drift in Seeds Inherit Mutations mode
- Fixed scrolling to next/previous species in Almanac
- Fixed research experience bar visually not filling up
- Fixed black screen on Mac after starting the game
- Fixed crashes on adding new species to Almanac
- Fixed objects visibility in extended parts of tank
- Fixed crashes in Seeds Inherit Mutations mode
- Fixed grabbing ground sometimes not working
- Fixed loading scenarios quests and states
- Fixed loading missing animals animations
- Fixed texts missing from localization files
- Fixed overview camera ground rendering
- Fixed vivarium animal cap not resetting
- Fixed overview camera controls
- Optimized algae seeding position raycasting
- Optimized plant stalk mesh generation
- Optimized growing plant handling
- Improved tutorial dialogues clarity
- Improved tooltip descriptions

Beta Update 0.51

- Implemented lizards
- Implemented Seeds Inherit Mutations mode
- Active plants limit is removed
- Tooltips are now available for every button
- Leaf particles now fall from hardwood plants
- Eaten animals are now emitting particle effects
- Engine updated to Unity 2020 LTS

Beta Update 0.5

- Balanced plant nodes prices
- Implemented nutritional values
- Implemented UI particle effects
- Implemented weight scale in research slot
- Implemented hold-to-scroll camera binding
- Implemented animals behaviour animations
- New stone landscapes added to store
- New wooden landscapes added to store
- Fruits have now chance to fall from plants
- Scenarios time to complete is now counted
- Fruits grow now after leafs in node are grown
- Fruits grow now bigger towards top of the plant
- Complex leaves have now more shape variations
- Thumbnails are now generated in higher resolution
- World fastest scenarios completion times are stored online
- Fixed animals getting stuck when moving over ground at no time lapse
- Fixed plant cache mismanagement when cutting grown plants at root
- Fixed edyGene reverting synonymous codons to default value
- Improved plant hitboxes accuracy with mesh based colliders
- Improved plant textures
- Refactored plants shaders into Amplify compatible
- Refactored plants color inheritance and mutations
- Engine updated to Unity 2020.2

Beta 0.5 Save Wipe

Hello folks. Due to the incoming release of version Beta 0.5, a save wipe will take place with the next update.

Thank You all very much for participating in the beta! Over a year of your input has resulted in many, many great features, and an uncountable number of bugs found, reported and fixed.

To avoid any issues that might stem from old, corrupted save files, and to improve compatibility with future versions, all Your vivariums, settings, global inventory and player data will be reset.Global almanac and global statistics will also be reset. Your Steam achievements and statistics will remain unchanged.

Hope to see You all creating incredible vivariums soon, with all the brand new plants and decorations You'll find in update Beta 0.5, and all the future content incoming after release! Stay tuned!

Beta Update 0.41

- Balanced rare plants prices
- Implemented insects
- Implemented evolution scenarios
- Implemented consumable bags of seeds
- Animal evolutionary tendencies now trigger particle effects
- Animal order lifespan is now displayed in collections menu
- Vivariums state is now permanent and auto-saved
- Store decorations have now color sliders
- Leafs grow now slower than stalks
- Fixed crashes and issues when loading mutating or growing cached plants
- Improved almanac save file compression and loading times
- Improved animals material textures