Greeting warriors of Calradia!
The main advantage of creating your own game engine is that, instead of being a Swiss-army knife (second-best in everything it tries), you can craft it to specialise in what you need it to do. As you know, we created an engine from scratch for Mount & Blade II: Bannerlord. We had many goals when we started working on it, but three of them had top priority: of course it had to do what we needed in order to create a huge sandbox game such as this one, but it also had to be easily moddable, and on top of that, it had to be flexible enough to work on low-end computers. In this week's blog, we talk to Engine Programmer, Burak Dermanlı, one of the people responsible for the engine and its optimisation for all kinds of computers.
B.S, Yıldız Technical University, Mathematical Engineering
OFFICIAL JOB DESCRIPTION
WHAT DO YOU NORMALLY DO DURING YOUR DAY?
“As a programmer, I spend most of my time working on issues that are usually scheduled on a monthly basis. However, working on the engine level requires you to be prepared for any interruption during the day, such as a crashing bug that prevents people from progressing with their work.
Most of my work revolves around particle systems, asset pipeline, cloth simulation and memory management. I implement new features as requested but it can be said that they are almost finalised for Bannerlord needs. Both the particle systems and cloth simulation are extremely optimised so that they can run efficiently on low-end hardware. I sometimes see people’s concerns about these kinds of systems and if they will face a performance bottleneck with the game. There is a psychological fact that if there is something visually attractive on the screen then those elements come under scrutiny when performance problems arise. I have both low-end and high-end GPUs equipped on my rig and I am constantly checking their performance during development. For example, cloth simulation did not take more than a millisecond per frame on low-end hardware in any of the scenes you have seen in our gameplay videos.”
WHAT DO YOU LIKE THE MOST ABOUT BANNERLORD?
“I like the spirit of Mount and Blade and I am sure you are also going to feel it when you play it. Almost every single part of the game has been developed or reworked from scratch. However, we are dedicated to preserving Mount & Blade’s unique elements. Bannerlord is a new Mount and Blade game with more features, smoother gameplay, better graphics and larger battles. I can assure you that it will not disappoint anybody who likes our previous games. I also can’t wait to see the amazing work that will be done by our modders with Bannerlord.”
WHAT'S THE MOST DIFFICULT THING THAT YOU SOLVED SO FAR, DURING THE PRODUCTION OF BANNERLORD?
“It is hard to remember every issue I have solved in five years, but I remember that there was a very tiny jittering issue in cloth components which was caused by a gameplay-engine communication problem. I was able to solve it a couple of months later than I finished the actual implementation.
I also want to mention asset import and compression issues. An image compressor may ruin your normal maps if you tell it that it is a normal map or you might see an asset file can’t be imported by the program that actually exported it. You need to spend hours or even days to figure out the problem.”
WHAT DO YOU CURRENTLY WORK ON?
“I currently work on improving our flora billboard system. I am implementing a modern technique which utilises parallax mapping so that you won’t be able to notice transitions between actual trees and billboard ones. We are planning to use this in most of our scenes and the campaign map. At the same time, I am beginning to design small refactors with the rest of my team on our resource management system to speed up the content modification process for both our artists and modders.”
WHAT FACTION DO YOU LIKE THE MOST IN BANNERLORD?
“I like Khuzait the most because I like their culture, architectural style and cloth simulation looks really nice on their armours. :)”
WOULD IT BE POSSIBLE TO INCLUDE SOME HIGHLY DETAILED AREAS, SUCH AS TAVERNS, IN BIG MULTIPLAYER MAPS WITHOUT LOSING PERFORMANCE?
"I mainly do optimisations for the GPU/CPU, so I will only answer those parts of the problem. Our engine can tick static objects really efficiently. You don’t need to do any special optimisations and can populate the inside of the building with lots of static meshes. Agents are also ticked, animated and rendered in the most performant way. For the GPU performance, the first thing I would check is whether the occluder bodies in the tavern walls are set correctly. If so, the meshes inside the building will not be rendered for gbuffer and shadows. Finally, I can say that, by being careful at some specific points, this is very possible with our engine.”
CAN WE DESIGN OUR OWN PARTICLE EFFECTS WITH THE ENGINE? (FOR EXAMPLE, IF ONE WANTS TO MAKE A “MAGIC EFFECTS” OR BOIDS BIRD FLOCKS IN HIS/HER MOD)
“We have a very detailed particle editor created from the feedback given by our artists. It is possible to create an infinite number of different particle effects with this editor by defining emission, movement and visual properties of the desired particle effect. You can use one or more emitters in a single effect (which might have a parent-child relationship) to create complex effects like a flying stone creating a dust trail, or as mentioned, a magic effect. But currently, we don’t have a built-in flock algorithm implemented in the particle system. However, you can implement it yourself with our scripting system.”