Back to Home

Difficulty creating an isometric game in Unity

unity3d · isometric · two-dimensional game

Difficulty creating an isometric game in Unity

Original author: Emiliano Pastorelli
  • Transfer
First, a small introduction. We are working on the Empires in Ruins game with pre-rendered 3D models that, before being saved to Unity, turn into sprites and sprite atlases. Briefly explained, the process is quite long and slow, but it allows us to use very high resolution textures for very clear graphics. This style is reminiscent of strategic games of the 90s, like Age of Empires (and many others), combined with the Baldur's gate manufacturing process, complemented by a modern style and the ability to scale strongly. We generally like to impress.



I must say that we are absolutelythey’re happy with the results, and people on the Internet like them too, but we’ll rather agree to torture than start making another game in the same style.

The reasons are simple: the results can be wonderful, but it’s actually hard to find a slower workflow. For the very first game, this is quite normal, the work continues endlessly, and we enjoy the process, the lesson is learned. But in the future it is still worth releasing one game more often than once every five years.



If someone else does not believe me, we will list the reasons. I suggest you study them if you are thinking of creating an old-school isometric strategy in Unity3D.



I am sure that you are well prepared and know all the suggested (and usually very useful) optimization techniques when working with Unity. It is time to apply them in a new game, and fail over and over again.

  • If you need depth in the scene, then forget about batching. Even two objects with the same sprite and material, located at different depths (either along the Z axis, or in the sort layers) with several objects between them (and this happens often) will require one draw call for each. And there are no limits. PS For this reason, forget about the release of the game on mobile platforms.
  • If you preferred 2D instead of 3D because you were afraid of the number of triangles, then don’t think that when using sprites with alpha channel there will be much less triangles. Sprites with an alpha channel, that is, with an uneven outline, can also use many triangles and vertices.
  • Always use only atlas of sprites PoT (Power of Two). Especially if you need a high resolution and a high level of scaling, only this will save the game from disk overflow (do not forget to pack textures in Unity before the final assembly) and video memory. Not that PoT atlases can be saved to disk if objects have many frames of animation in different directions, but you will have a chance to take up less space than Mortal Kombat X.
  • Get ready for math problems. Let's say you need to simulate perspective 3D-like trajectories on a flat surface with an orthogonal camera looking at it. It is possible, but not as simple as it might seem at first.
  • Another huge problem will arise when animations are a bit more complicated than the base ones. If you do not break them down into several sub-animations (with the inevitable creation of cumbersome animators to control them), then what happens, for example, when a soldier attacks? So, he’s getting ready to hit, and frame X should do the damage, play the sound of the hit, etc. Well, what about telling the game when this happens? The only reasonable way is to add an event to the animation, and everything looks fine so far. But one big problem at first is not so obvious. Naturally, you want the game logic to run in FixedUpdate (because in that case it will be reliable and deterministic), but the animations are executed in a simple Update. Already notice an impending problem?
  • Always turn on MIP texturing. Do not even ask yourself, do it on the machine. Turn on MIP texturing if the game does not have the same zoom level. Do not forget that when you turn on MIP texturing, textures grow in size (suppose we have a texture of 1024x1024, when generating MIP textures, Unity will create versions 512x512, 256x256, etc.). I'm not trying to teach you MIP texturing, but you just need to know what it will be.
  • Create object pools. If you try to reduce the load on the processor, a bunch of Instantiate and Destroy calls will NOT be your best friends!
  • Do you like Unity physics? It is a pity that gravity is not coordinated and it is impossible to reconcile with the simulated vertical axis of your game world. Well, life is unfair.



And finally, to summarize:

  • It is almost impossible to avoid a large number of draw calls. Rendering calls can create bottlenecks in the processor and reduce FPS. The solution is to make everything related to game logic as smart and easy as possible. Use coroutines, think, maybe some operations can be performed not every frame, but, for example, once in x frames. If possible, optimize the game for batching, but keep in mind that you won’t be able to do much.
  • Large textures and large sprite atlases heavily load video memory. Do not forget this and always strive for the best game performance on target platforms. Of course, these days computers are infinitely more powerful than they were just a few years ago, but if you do not make the game only for the most powerful PCs (and this is most likely not so), then it will be crazy to take up more than 1 GB of video memory.
  • Gather very good animators / 3d-artists into the team - sprite animation does not forgive mistakes and cannot be controlled when it gets to Unity.
  • Carefully study 2d assets in the Asset store. There are many assets that will save you many hours of painful work for a couple of dollars. Therefore, it makes sense to buy them.
  • If you want, in addition to development, you have time left for your personal life, then it’s better to play a game in a different style.
  • Unity profiler is your best friend. Spend as much time on it as you need, and it will be rewarded a hundredfold.

Well, maybe I had a difficult week during which I had to deal with most of the problems listed in this article. Maybe this did not help me gain optimism, but I admit that over the past few days we have greatly improved.



If I am mistaken in something, please prove that I am wrong, and throw off the link showing that something can be improved. I really hope that I was wrong, and I want to find new ways to further optimize my game!

Read Next