Saurian DevLog #55
Jake and Henry are carrying the team for the DevLog again this week. It is good to see Jake so excited about animation, and whittling away at these is piling up plenty of new work for Henry! They’re the dream team right now!
We hope you enjoy what they have to show off:
These past few weeks I've been keeping to the animation pipeline and trying to get as much done as possible. Aside from finishing the Ankylosaurus animation set (which was teased last week) I've also finished the entirety of the Denversaurus animations.
They are both very similar animals so it was good practice to refine my technique without really trying anything super new and foreign. Denversaurus is much more maneuvrable than Ankylosaurus, and being smaller it is also a little faster but neither of these boys are speed demons. It became apparent pretty quickly why these guys were so heavily armored. Though they won't be out running you, the tail attacks will be one of the more powerful moves in the game.
In addition, I spent some time rigging and animating the Didelphodon. This wasn't a huge task as it has a much simpler animation set than the larger creatures in the game, but having more small fodder type creatures is going to help make the world feel more alive. We based a lot of the movements of Didelphodon on marsupials like Tiger Quolls which we found moved very differently from placentals. This has some gameplay implications which glorious Henry will get to in his entry.
If you thought I was going to just leave it at that you are a fool. Just like last DevLog, I have one more surprise up my sleeve (though it won't be a surprise if you follow my Twitter). I've also been working on the animation set for Anatosaurus which is nearing completion. I'll leave you with one last little teaser.
Jake handed me off three(!!!) new animals since the last DevLog, and I've put all of them in-game: Ankylosaurus, Denversaurus, and Didelphodon. I haven't written special defensive behaviors for Denversaurus and Ankylosaurus yet, but that's on its way. I have also been tweaking movement processing code passively in the meantime, which will be useful for these two new dinos since they should be turning in-place significantly more than other, faster dinosaurs (such as Ornithomimus, which should spend more time running and less time turning in-place ideally). Didelphodon, a major cutie, was much slower than our team anticipated once Jake had put it in motion, so we've decided to make it very keen on hiding, in addition to wandering - a small increase in complexity over Chamops' AI. All of the new additions will likely be in the next patch; here’s a clip showing them up and running:
Aside from that, I've been working on an elaboration for the hiding system that I hope will succeed, since it has the potential to make the system significantly more involved and interesting. In many games with stealth systems, using cover is considered as a binary: if you're in a specific area, you're considered covered; if not, you're visible. However, while testing the hiding mechanic as detailed in a previous devlog, I found this unsatisfactory: what if you're a hatchling Dakotaraptor on the other side of a bush from an Acheroraptor? Even if you're not literally in the bushes, it's still potentially important that you're among the bushes.
The most straightforward solution to a problem like this involves simple raycasting, but due to the insane volume of colliders necessary, I fear this would be too computationally expensive to be viable. Instead, I developed a system which supports multiple plants being grouped together using a single collider, and simulates a raycast through them in 2-dimensions. More specifically, the foliage density within the collider is represented as a 2D matrix (with variable length, depending on performance requirements) filled with height values; a probe is then sent through the matrix checking the height of the perceiver against the height of the plants on the way to the perceived entity. Here is a visualization of one of the matrices, side-by-side with a crude MSPaint illustration of how small differences in position can have a big impact on visibility due to this sytem.
Assuming that the system I've developed remains performant enough to put in the game, in practice this all simply means that hiding will work how you'd intuitively think it should: if you can't see an animal, they likely can't see you, either. Here are a couple screenshots showing the system in action: the blue lines depict line-of-sight between perceived and perceived:
Notice that, even though none of the animals are physically in contact with any foliage, foliage is still playing into their line-of-sight calculations along with their respective heights. Combined with the other hiding work shown earlier and further developments (assuming its performance viability), I'm really hoping this hiding mechanic will feel natural when we release it.
That’s it for this week. See you in two more!