3D Sprites

Hello everyone! In today’s post we will cover some technical details. In July, we published a gif to show you how our scene looks like in Unity (link)  and today we’ll tell you what we’ve been working on in the past couple of months and why.

In the late 90s and early 2000s, all isometric games used a similar method of rendering a scene – through sorting 2D sprites. In this way, you can make quite nice games, such as: Jagged Alliance, Diablo, Ultima, etc. But all of them have a lot of limitations related to lighting and shadows. There are either no shadows at all, or they are completely static, and the lighting is baked into sprites and does not work as expected with dynamic light sources. In addition to all of this, the method of sorting sprites itself is very unreliable and generates a lot of artifacts – it’s when sprites do not properly overlap each other and can stick out through other graphic objects.

We aim to create the most versatile, flexible and aesthetic framework to create RPGs and release content updates for Tribal for years. Therefore, we decided to rework the way the scene is rendered. The result is a completely new technique for rendering sprites. Now they are rendered with a special shader, which uses “depth maps” and behave almost like a 3D model. On the gif, the naked guy is a 3D model, and everything else are sprites(2D). At the same time, sorting works as if the walls and the well are 3D models, there is a concept of depth for these sprites, and we also use an invisible and a very primitive 3D model to get shadows as in ordinary 3D with shadow casting.

These are far from all the details of the technical implementation of rendering in our project, in future posts we will briefly talk about other details.

Date : 05 03 2021 Tribal development team