For those not familiar, Tilengine is a 2D rendering engine programmed in C, with bindings for several other languages. It focuses on providing a rendering system very much in-line with classic video game consoles. It features similar structures and limitations to what you might find in a Super Nintendo or Sega Genesis. It uses SDL bindings for many of its built-in window support, and has few features aside from its 2D rendering.
With such a meager feature-set, it is understandable to wonder why anyone would bother with Tilengine. The modern landscape of game engines is flush with appealing options. Far more flexible licensing plans have placed even the most advanced game engines within the budgets of small or even single developers. Why constrain yourself to older systems when much more robust choices abound? In this introductory tutorial, we’ll go over some of the biggest disadvantages to using Tilengine. And then we’ll present some of the most compelling arguments in its favor.
All Those Against
The biggest argument against Tilengine is that it has now support for 3D rendering. 3D rendering has been a staple of game engines since the late 1990’s. It is commonly considered to be standard. Any game featuring 2D visuals is often considered to have adopted a “retro” aesthetic. Tilengine is purely focused on classical 2D pixel rendering. It has a few transformations to support Mode-7 style effects, but even those are pseudo-3D and not true 3D rendering.
Another drawback to Tilengine is the fact that it is only really a rendering system, not a full game engine. Support for many features that come standard with other engines aren’t incorporated into it. Audio, music, advanced control mapping, networking, and GUI systems are all absent. A limited degree of animation control and collision detection are provided, but even these are optional. A developer would have to augment Tilengine with other systems if they hope to produce a full experience.
Perhaps one of the biggest problems that Tilengine faces at the moment is its diminutive community. Engines like Unity or Unreal Engine 4 have numerous years of use, and enormous communities that they’ve built up. These countless developers support their engines of choice by adding to the knowledge of how to use those engines effectively. They share tips and tricks with each other, even creating and distributing tools and plug-ins designed for their engines. Tilengine is young by comparison, and there is far less practical application. Thanks to this, finding answers to how to use it is much harder.
All Those In Favor
One big advantage to Tilengine is that it is able to render true pixel-based 2D. While many modern engines boast 2D tools, very few of them actually provide scan-line based 2D rendering. Most of them simply offer faux 2D rendering using 3D graphics with 2D textures stretched across them. While such systems have advantages of their own, they are terrible for low-resolution pixel graphics. Any game attempting to emulate the retro style of older, lower-resolution games would be well-served by using Tilengine.
A related point worth considering is that Tilengine allows for certain effects and tricks that were specific to the era of graphics it seeks to emulate. Some of these tricks are actually quite difficult to pull off in modern 3D-focused engines. So while certain graphical effects have to be sacrificed, others become available. I am planning to demonstrate a few of these in future guides.
One advantage that Tilengine enjoys is performance. It is written in C, a very low-level language. It is also a language that allows for broad cross-platform support. Tilengine runs very quickly, and can produce smooth, 60-fps action-heavy graphics on modest hardware. While games made using it would have to settle for 2D graphics, they can at least be assured of solid performance. Modern processors are vastly more powerful than those used in classic consoles. Even basic laptops without GPUs can handle Tilengine respectably, allowing developers to reach a broader audience.
Tilengine’s secret weapon is its embed-able nature. While it is possible to use the bundled windowing system, it is also possible to roll your own, or use Tilengine with a different system. I’ve experimented with this myself with quite a bit of success. The advantage here is that Tilengine can be used as a rendering alternative in other engines, or paired with other frameworks. This provides it with a greater degree of flexibility.
Perhaps the biggest advantage to Tilengine is the very limitations that set it apart. Modern game development is powerful, but it is also extremely intimidating. The level of complexity that beginners have to grapple with is frequently overwhelming. By stepping back to an earlier era of rendering, Tilengine provides an environment that is more manageable. By working within the constraints it presents, developers are able to practice their problem-solving on a scale that they can handle. These limits also force new developers to dial back the scope of their projects, a common pitfall that the inexperienced fall into.
While certainly not for everyone, Tilengine is a compelling alternative to modern rendering systems. It is an especially enticing option for those looking to produce pixel-art games, or anyone working under tight hardware constraints. I look forward to see how it is used going forward, and will attempt to provide a few additional guides based on my experiments with it.