One day eats the next, and before you know it, it's time for a new edition of Dinolords Monthly!
Fresh off the press (or, well, my keyboard I guess), this time we will be talking about construction and destruction of buildings, some cool tech in Entities/DOTS, and ending with some concept art and new models.
So strap in and lets set sails on this Viking ship of updates!
By now it is getting pretty clear to us that you will be building, and you will end up building quite a lot. So making the act of constructing various structures and building satisfying and cool looking has been among the tasks in the safe hands of Jesper, our 3D wizard. (You might know him from our weekly show-and-tell posts on discord and reddit).
Part of that is making sure that buildings are constructed and don't just appear out of thin air as if by magic:
As the Danish song goes: "med min hakke min skovl og min spade"
Another part of that is paying attention to small details and really make the construction animations go above and beyond. One of those small details is small dust particles as shown in editor-footage here:
But building stuff is one thing, since you have a mighty enemy there is a pretty real risk of your buildings also being destroyed. Having buildings show their damage state before collapsing in glorious rubble is one of the ongoing tasks right now, and while smoke, particles and even fire can do a lot to help convey this, the building model itself also needs to mirror this.
Intact, damaged, and critical states for one of the buildings.
And ultimately, the entire thing crumbles and falls apart when it is destroyed, leaving just a bunch of rubble and embers.
It's really nice to get more of these kinds of details and visual effects into the game as it really makes it feel much more tangible and real. We definitely set the bar high for ourselves but we choose to make videogames not because it is easy, but because it is hard!
Second on the schedule for this Monthly, we are talking about some substantial changes to the underlying code of Dinolords, as we have been (and are still in progress of) switching the game systems over from using unity's MonoBehaviour to using Entities & DOTS, with all the burst and jobs and bells and whistles that follows that transition.
This segment is going to be a little technical, and a bunch of it requires more wrinkles than my brain has to comprehend fully but I will do my best to summarize and hopefully explain it in a way that makes sense to those of us who are not deep in the coding soup. So to set off, let's look at one of the main reasons for us to do this switch: performance.
MonoBehaviour is neat, it's fairly straightforward and easy to get going real fast. You write MonoBehaviour scripts with all the game logic you want and you don't have to think too much about what goes on "under the hood" (in the CPU, that is). But that comes with a trade-off, and that is performance. MonoBehaviour has limited support for multithreading, and that means as the project grows and more and more stuff needs to happen, all the things needs to stand in line and wait their turn on the main thread (this is somewhat a simplification, but I had to draw the line somewhere as to how deep this segment goes). If you imagine a hundred units on a battlefield, they all have a bunch of things each they want to do, you quickly end up with thousands of things that lines up to be done by the CPU that only does one at a time, in order, in a neat line, and each of the things asking to be done can be very pretty abstract from a processors point of view, so it also spends longer on each task as it needs more time to translate what needs to be done into calculations it can do well.
Now, DOTS uses a data-oriented approach, and what does that mean? To crudely simplify; if you imagine how abstract the object-oriented approach of MonoBehaviour is for the CPU, this is sort of the proportionate inverse but for humans; it is a more abstract way for us to think about what the systems do, but it is much closer to how the CPU thinks about things, so it needs to spend a lot less time translating and can spend a lot more time just doing the math it's so good at. On top of that, it uses a different compiler called Burst, and you write your code using the so called Job System that chops all the things the processor needs to do into highly optimized bite sizes that can then be spread out across multiple cores a lot easier, so it is sort of like a double-whammy in a sense, instead of having one Deinonychus eat an entire Brontodon, we carve it out and chuck a nice bite to each of 4, 8, 10, or more Deinonychus - I am sure you can also imagine that being eaten a lot faster this way!
The result of all this is a pretty substantial performance gain for Dinolords, and the benefits of this are plethora, but to highlight a few:
Much better and more stable performance as the total unit count in a level increases into the triple-digits.
Game can run a lot better on weaker and more varied hardware
Better utilization of modern hardware like new multicore CPU's with modern instruction sets and large cache sizes.
Now, for the nerds who have laughed at my crude simplifications but are still curious, a lot more detailed and in-depth descriptions of the general DOTS system can be found over on Unity's website.
Okay, phew, after that technical lingo, let's have a nice palate cleanser in the form of some great concept art and some of the models our artists and 3D-people are working on.
Various different sketches for different looking units with different armor and different appearances.
Some concept art for new buildings, some of which are for environment, some potentially for players.
Icons for upgrading different things via research.
New environmental models, some new Viking encampments and an abandoned watermill.
That was all for this months edition of Dinolords Monthly.
If you just can't get enough of the techy stuff, don't hesitate to ask any question you might have either as a comment below, in a discussion thread, or over on our discord. If I can't answer, I will make sure to pass it along to someone who can, and I know all our datamancers are already experts in the whole Entity/DOTS thing!
Catch you all in the next one!
-panxter