Saurian Devlog #44
We're back with a more substantial DevLog for you this week. Henry is doing some exciting reworks on his AI, Erin is continuing to flesh out our in-game encyclopedia, while RJ keeps plugging away at T. rex, this time on the bubs.
In the mad rush to program many different aspects of Saurian, my work on AI behavior has largely ended up falling to the side. No more! After taking a short sanity-break, I'm back to the grindstone and focusing on AI again. I'm about to get a lil' nerdy, so for those of you who want the TL;DR: AI behavior logic is being largely overhauled with the hope of producing more natural and flexible reactions from all creatures. For those of you who want to get nerdy with me, keep on reading!
Saurian's AI uses Apex's wonderful Utility AI asset--though at the moment not to its full potential. Utility AI isn't just a flexible asset, but also a relatively unique approach to behavioral architecture. At the moment, the way Saurian's AI is designed much more closely resembles traditional behavior trees than true Utility AI as envisioned by Apex. The difference between the two, in simplified terms: behavior trees select behaviors by evaluating boolean conditionals (ex. "if I'm hungry and if I see an animal under 1.25x my weight, then I hunt it, otherwise choosing another behavior).
Utility AI, on the other hand, uses numerical scores assigned to perceived stimuli to choose behaviors (ex. I could assign a score to being hungry, and a score of an animal as prey based on its mass, then multiply them together and compare to other behavior scores, choosing whichever behavior has the highest score). The advantage of Utility AI is that, hypothetically, AI behavior selections are much more robust to unpredicted situations in a way that they might not be with behavior trees.
While it may seem like a subtle difference, it has a potentially huge impact on the way behaviors are designed. Rather than thinking of well-defined combinations of conditions that result in specific behaviors, behavior selection has to be thought of in terms of numerical functions - which is significantly harder to intuitively design the same way (hence the use of behavior tree-like design up until now). To help with this task, I've written up a crude little tool in Python to help visualize the animal behavior graphs for my first passes at the new scoring functions. Here's a tiny peek at what that looks like at the moment:
In addition to giving Saurian's NPCs better behavioral responses, I will be using the opportunity to both optimize the AI's CPU usage using Unity 2018's new job system (potentially allowing for more AI on screen) and to refactor the AI with multiplayer in mind. Exciting times ahead!
As you know, I've been spending the last million hours working on this massive T. rex redesign. I've started work on the juvenile stages of the big fella. The baby coloration is being modeled on baby emus, cassowaries, and monitor lizards. The contrasty pattern of the hatchling stage will dull down a lot as it grows. I've also learned that baby Tyrannosaurus are just baby horses with the arm slider turned down to zero.
Besides working on some cool plant stuff, I've been working on assembling a special entry for the Encyclopedia. This entry focuses on Bone Butte: the specific locale in Hell Creek that Saurian is based around, and the one where Dakotaraptor was found. The picture shown is very in-progress and the end result will represent a still diorama similar to like what you would see in a museum with multiple animals doing animal things. We hope this entry helps people get better acquainted with what we know of Bone Butte and its relevance in Saurian.