Microbird Games has surprised the indie community with Dungeons of Hinterberg, a game that blends dungeon exploration with the aesthetic of a European comic. Far from being a simple post-processing filter, the title uses a custom deferred shading system on Unity. The biggest technical challenge was maintaining the sharpness of the black lines of the Ligne Claire style (inherited from Tintin) while rendering vast alpine landscapes in real-time, without sacrificing the dynamic lighting required by a modern dungeon crawler.
Technical Pipeline: Maya, Photoshop, and Deferred Shading in Unity 🎨
The artistic pipeline begins with asset sculpting in Maya, where models are designed with clean, low-density geometry to facilitate flat shading. Textures are painted in Photoshop with limited palettes and hard shadows, mimicking manual inking. The real trick lies in Unity's custom shader: a modified deferred rendering that separates the diffuse light channel from the contour channel. Unlike standard cel-shading (which blurs edges under complex lighting), this system prioritizes normal and depth detection to draw perfect black lines even on backgrounds with snow or alpine fog. Optimization was key: geometry passes were reduced to maintain 60 fps on consoles, sacrificing soft shadows in favor of more stable toon shading.
Lessons for Indie: Visual Coherence over Realism 💡
Dungeons of Hinterberg demonstrates that a commercial engine like Unity can emulate 2D animation techniques if style coherence is prioritized over photorealism. The decision to use a custom deferred shading system, rather than a third-party shader, allowed Microbird to control every contour pixel, critical for ensuring the Ligne Claire style didn't break in dark interiors. For indie studios, the lesson is clear: investing time in a solid artistic pipeline between Maya and Photoshop, and then translating it into a custom shader, can turn technical limitations into an unforgettable visual identity.
Is it possible to achieve the Ligne Claire effect in Unity without resorting to complex custom shaders, using only standard assets and post-processing techniques?
(PS: optimizing for mobile is like trying to fit an elephant into a Mini Cooper)