Posted2 screenshots
Adding dinosaurs to the world

One of the next things I wanted to start looking at was dinosaurs.
I could probably have left this much later.
There are still plenty of systems to build before Evolve is really a game, but I had one fairly big concern that I wanted to answer early.
Most voxel games do not have enormous creatures walking around in them.
And some dinosaurs are enormous.
A Brachiosaurus moving through a voxel world is a very different problem to a player walking around in one.
How does something that large move across the terrain?
What happens when it reaches a ledge?
How does it path around cliffs?
Does it look ridiculous walking across one metre blocks?
I decided it was probably worth finding out now rather than discovering much later that my terrain and creature systems fundamentally did not work together.
Building the first dinosaurs
So I started putting together the first voxel dinosaurs.
At the moment they are intentionally quite simple.
Very blocky models, fairly basic texturing and nowhere near the amount of detail I eventually want them to have.
I expect I will come back to the dinosaurs visually quite a few times as the game develops.
For now, I mostly need them to exist.
That lets me start putting different body sizes into the world and work out how they actually behave against the terrain.
I've put together an initial roster of dinosaurs that I'd eventually like to get into the game, but so far I've only brought three of them properly into the world.
A Compy.
A Brachiosaurus.
And a Pteranodon.
That gives me three quite different problems to solve.
The Compy is tiny and needs to deal with relatively enormous steps compared with its body size.
The Brachiosaurus is at the opposite end of the scale and spans a huge amount of voxel terrain while it moves.
And then the Pteranodon gives me something that doesn't really care about the terrain at all.
It seemed like a reasonably good set to start with.
Everything comes from data
One thing I am trying to stick to throughout Evolve is making the game as data-driven as possible.
Dinosaurs are no exception.
The model, configuration and behaviour of a dinosaur should ultimately come from data rather than being hard-coded into the game.
The same approach will apply to world items and quite a few other systems.
Part of the reason for that is simply development speed. It means I can create something new without having to write a completely new system every time.
But the bigger reason is modding.
Long term, I want players to be able to add their own things to Evolve.
That could mean changing an existing dinosaur, adding a new one or creating something completely different.
I'm not at the stage where any of that is exposed properly yet, but I'm trying to build the foundations so that it can be.
Ideally, creating new content should eventually be mostly a case of providing the data and assets rather than needing to change the game itself.
Getting them around the world
The more interesting problem has been AI.
A traditional nav mesh isn't really an option for Evolve.
The entire world is destructible.
A player can dig through terrain, build a wall, remove a wall or completely change the route that a creature would previously have taken.
There isn't really a static world that I can bake navigation information into.
So instead I'm working towards an on-demand pathing and steering system.
The current idea is that creatures make navigation decisions at a relatively low frequency, probably somewhere around four times per second, and then steering and movement smooth everything between those updates.
Exactly where that ends up will depend heavily on performance once there are lots of creatures in the world.
For now, though, it is working surprisingly well.
I've got Compies running around the terrain and reacting to the voxel landscape.
The first version looked slightly ridiculous because every half or one metre change in height made them visibly snap upwards or downwards.
So I've had to add quite a lot of smoothing to make movement across the blocks look natural.
That already makes an enormous difference.
Losing Compies in the grass
There are also some problems I didn't really think about until I actually put creatures into the world.
Compies are very small.
My grass is not.
They therefore have a habit of disappearing.
From a realism point of view you could argue that this is exactly what should happen. A tiny dinosaur running through long grass probably shouldn't be particularly easy to see.
From the player's point of view, I'm not quite as convinced.
There is probably a point where realism stops being interesting and just becomes annoying.
I don't know what I'll do with that yet.
It might mean changing how the grass reacts around small creatures, changing how visible the dinosaurs are or simply accepting that sometimes something small is going to disappear into the undergrowth.
It is another one of those things I'll probably only understand properly once there is more gameplay around it.
So far, so good
For now, I'm mostly happy that the basic idea works.
Small creatures can move around the terrain.
Very large creatures can exist within it without immediately looking completely wrong.
Flying creatures give me a completely different navigation problem to start experimenting with.
There is still a huge amount of work to do on AI, particularly once dinosaurs need to do more than simply move around.
Eventually they need behaviours, needs, reactions to the player, reactions to each other and some understanding of the world around them.
But the first step was really just answering the question of whether dinosaurs of completely different scales could live in this voxel world at all.
So far, I think they can.
I'll put the current dinosaur roster below. Most of them aren't actually in the game yet, but it should give a fairly good idea of where I'm hoping to take things.
