It’s April! There is a Technical Status Update. You know the drill.
When last we left the programming team, I think I mentioned that Chris Whitman was working on Animals. Well, we now have Animals. The Common Aurochs wanders the fields and streams alongside its more robust wooly cousin and the occasional family of plump deer.
Aurochs and deer travel about in herds, and will look for food. A large part of their behaviour comes from ‘not wanting to move to new areas where there are things that they don’t like, namely humans’; by default, wild aurochs and deer will attempt to avoid humans and civilization. Since animals do ‘Animal Jobs’, or as Mr. Whitman put it, ‘Animal… Jobs?’, we extended this system to provide a preference for, or against, things that your in-game population may like or may not like. For instance, it is possible that a work crew’s overseer does not like aurochs all that much, and therefore will look less favourably on jobs that will put him near the smelly things.
Characters also got the start of rudimentary steering functions. Here we see forty characters aimlessly wandering around without tasks:
Here is a scene consisting of one hundred and fifty characters, moving from place to place, at about twenty frames per second:
I’ve turned on character steering debugging mode, which shows velocities (cyan), paths (green), and collision spheres (green, or red if colliding). Characters forward project their velocities using swept spheres to try and evaluate if there is a collision; if so, they will attempt to move away from things. They also try to maintain good separation from each other in general, similar to standard flocking algorithms. Right now things still need tuning, but characters in general make a pretty good attempt at steering around each other when they are about to collide. I expect I will end up spending more time on it as the game progresses.
It is worth noting that the 150 characters are all fully simulated, and will do things like feed themselves, perform tasks such as tree chopping and building creation, and generally bumble about from place to place. We are far from done optimizing – in particular, character skinning still occurs on the CPU – but this makes me feel pretty good about the game’s eventual performance.
Mr. Whitman has also been busy working on what we should call ‘dependency resolution’ – making characters smart enough to put things in stockpiles if stockpiles exist, putting things not in stockpiles if there are no stockpiles or no full stockpiles, and generally knowing what to do with themselves when they’ve picked up something. Jobs now have requirements blocks, and lists of requirements that they fill; if a character wants to do a job, but has to do another job to fill a requirement of their first job, they will now do so.
We now support Fog of War, like your favourite RTS games:
Here we see a naturalist attempting to reach a pre-determined exploration point, designated by the small rock in the corner. (We’re using rocks to represent order points as a placeholder.) Orders are a new type of command you can issue to specify that you want somebody to do something at a certain geographical location that is not tied to an object, a building, or a person; examples of orders include “Explore”, “Flatten Terrain”, “Perform Geological Survey” and “Search for Nature”. Quite likely this will expand to include certain types of military operations, and other things.
We also put in some things from Creepy Week… but we’re not ready to show them to you yet.
The rest of the month looks to be occupied with workshops, building, and events. Exciting times! We’ll keep you posted.