Metroid Remake - Retro Unity Project

Progress: 70% Complete

The Metroid Remake project was a project designed to replicate the classic NES game Metroid in Unity while maintaining gameplay, look, and feel as close as possible to the original game. This was training in rapid prototyping and mimicking specific design mechanics while also dealing with writing many various systems to drive the game and manage the game's resources.

The project was done entirely in C# in Unity and builds a 2D engine around a Sprite Management and Animation system. The system "fakes" 2d by using UV offsetting to allow animation by moving the offsets around a sprite Atlas. Combined with an Orthographic camera and some resource management it creates a 2d experience in a game engine not designed to handle 2D games very well.

Play the Latest Build!

Screenshots

MetroidMetroidMetroidMetroidMetroid

Resource Management

Resource Management became a big issues as the project progressed and the realization came that there would be many thousands of gameobjects in existance in the world at any given time. These objects utilize both draw calls and bottleneck the physics system if they are left active all of the time. Because of this and a combination of wanting to match the game's original systems a camera based resource management system was created. The camera is the trigger for the spawning, despawning, and respawning behavior of the game much like the original. This makes it so that at any given time only a handful of objects are active and the fresh enemies are always just a screen away.

Other Game Systems and Challenges

  • Built a functional 2d animation framework expanding on an open source sprite class.
  • Acquired and implemented original assets from the NES title to allow the contribution of the look and feel.
  • Designed and constructed gameplay systems that are nearly indistinguishable from the original game
  • Created a toolkit to allow easy implementation of various common objects such as enemy spawns, colliders, doors, powerups, destructable objects, and so on.
  • Recreated the original game map in its entirety
  • Added a pausing system which is not only useful for taking a break but also allows for camera transitions and brief cutscenes when certain events occur by stopping the game while the action occurs.

Tech

  • Unity
  • C#