Contra Operation Galuga: The 2.5D Pipeline in Unity with Maya and ZBrush

Published on May 29, 2026 | Translated from Spanish

The return of Contra is not just a matter of nostalgia, but a technical case study on how to modernize a classic. Operation Galuga abandons pure 2D to adopt a 2.5D approach, using three-dimensional models for characters and enemies on a strictly two-dimensional game plane. This hybrid allows for smoother animations and dynamic lighting without sacrificing classic side-scrolling gameplay.

Contra Operation Galuga 2.5D pipeline in Unity with Maya and ZBrush 3D models on 2D background

Workflow: From ZBrush to Unity for Massive Bosses 🎮

The art pipeline relies on Autodesk Maya for creating base models and ZBrush for high-resolution sculpting of final bosses. These models, rich in 80s action details, are retopologized and baked to transfer their detail to low-resolution textures. Texturing is done in Substance Painter, generating roughness and metallic maps that Unity's Universal Render Pipeline leverages for a cinematic finish. The technical key lies in optimization: models are rendered in real-time with a controlled polygon count to maintain 60 FPS, while massive particle effects (explosions and fire) are managed through Unity's VFX Graph system, avoiding GPU saturation.

Art Direction Lessons for Indie Developers 🚀

Operation Galuga's greatest success is its art direction, which captures the essence of 80s action cinema without falling into parody. For developers, the project demonstrates that the 2.5D style is a viable solution for mid-budget projects. The combination of Maya for rigging, ZBrush for enemy detail, and Substance Painter for metallic finishes allows for a visually striking product without needing an AAA engine. Integration in Unity also facilitates the implementation of particle systems that replicate the saga's characteristic pyrotechnics.

How can the workflow between Maya, ZBrush, and Unity be optimized to maintain the 2.5D aesthetic of Contra Operation Galuga without sacrificing real-time performance?

(PS: 90% of development time is polishing, the other 90% is fixing bugs)