Today we want to uncover our modeling and design approaches on Deadly Labs. A few words upfront – you know when it comes to mobile games, you have to know exactly what to put in your models and why. You don’t want to burst your phone. Of course nowadays they have pretty good GPUs in it, especially as VR is becoming a thing, but not everyone has the latest high end device, and you want to support a broad range of people.
This blog is about the compromise of saving performance while keeping good looking objects, possibilities and techniques in mobile games.
Phase 1 – Model the “artist” way
When we start a model, we don’t care about polygons and vertices. The only important thing here is that it looks good. The same goes for materials, we just used as many as necessary. It’s like drawing a picture – you don’t count the strokes you make, right?
Phase 2 – Rendering a texture off the model
After finishing the model, we use a technique called “baking” or “texture baking”. What this means is basically: Take all render information like lights, shadows, bumpmapping, colors, textures and so on, and put all of that combined on a texture. What you see above is the result of these 2 objects – the time machine with satellite dish and the lab computer.
Phase 3 – Create a low poly model
That’s how the final objects look like. The rendered “high detailed” texture was now put on a low poly version of the objects. So you only fake the high poly object which could never be rendered properly by a mobile phone: instead an object with 100 times less polygons is created and slipped into this texture. Usually I create the low poly model first, save that for later, and then go into more detail – creating the high poly model. This way I don’t have to model the same object twice.
Phase 4 – Batching
We made most objects in the game with this technique. Here you see some of them. What is batching? Well, in Unity terms, objects are drawn on the screen by a process named “draw call“. A call to the underlying graphics interface like DirectX etc…Since that uses lots of resources, you want to make as few as possible per frame. “Batching” is combining these draw calls for multiple objects = making only one call for multiple objects. To make that happen, they have to use the same material!
Here we go, next problem. How can we apply the same material to totally different objects? If you look at the picture at Phase 2, you notice that both objects are rendered onto the texture. The time machine parts are almost everywhere and the lab computer is the little green piece on the right. I admit, the proportions could have been better…
Both objects share the same texture by using only their particular parts of the image. This saves 1 draw call per frame. All objects on this last picture are also sharing textures. I’ve put about 5 – 6 objects on one texture. This makes a noticeable difference on rendering time.
There is one thing I had to learn the hard way, by doing it wrong at the beginning of the game development. And that is: not having a timeline – which leads inevitably into the main mistake: getting lost in details! Modeling is basically never finished. You can model something in 5 minutes or in 5 weeks. When it comes to mobile, there is only a small screen. In a fast moving game like Deadly Labs, chances that someone sees a perfectly designed screw inside a bucket are almost 0! Keeping focus on visible things makes more sense. And skipping almost invisible details during the modeling phase, because no-one sees it!
B.t.w. We are using Blender for all modeling related stuff. It’s unbelievable that this is free software. One of the most powerful tools ever produced!! Personally I’m a big fan of it. I was amazed that not only it’s open source, but even open “door” for people who want to stop by :-)! What we did last year in Amsterdam. The Blender Institute is located in the middle of the house row:
Blender guys at their weekly roundtable, discussing progress on Agent 327. Totally recommended to pay them a visit!
More in the next post. Tell us in what subjects you are interested most: Shading, Analytics, Design, etc…We’re happy to share.