top of page
image_2024-11-05_101748150.png

Metroidvania Game Engine

The project was developed by a team of students, including myself, designed with a focus on spline-based level creation. The engine emphasized ease of use, allowing designers to create dynamic, interconnected spaces. 

The engine was developed as a cross-platform game engine for both Windows and the PS5. 

  • Role: Tools Programmer

  • Responsibilities:​

    • Spline editor tool for level design

    • Enemy AI

  • Team size:​ 7

  • Tools/Language:

    • Custom engine​

    • C++

Final Result

To showcase our engine, we created a small demo where all features were showcased. The demo can run on both Windows and the PS5, but I am not able to share the PS5 footage due to an NDA regarding the devkit. All the geometry in the level is created using splines.

Spline collider

  • Dividing the spline into evenly sized quads was challenging because a straight segment length doesn't match the curved spline length.

  • After reviewing how Unreal and Unity handle it, I allowed users to set a desired segment length.

  • Internally, the algorithm finds a segment length close to the user’s input that results in even quads.

  • This ensures consistency for texture mapping.

  • The quad width is also adjustable for creating thinner or thicker splines.

Creating a level design tool using splines

My main responsibility was developing the spline editor, crucial for designing interconnected levels in a metroidvania.

  • Used cardinal splines for their intuitive control points.

  • Users can draw a spline and then add, remove, or move points to modify it (Fig. 1).

  • Includes settings for tension (Fig. 1) and quad segmentation length.

  • Objects can be snapped to the spline and remain positioned even after edits (Fig. 2).

  • Splines are also used for enemy patrol paths.

  • The whole workflow can be in seen in Fig. 3.

  • I did not work on texture mapping for the spline.

Fig. 3

Fig. 2

Fig. 1

Enemy AI

  • Managed enemy behavior using the previously developed Behavior Tree Tool (Fig. 1).

  • Created two enemy types: one that chases the player until contact is lost, and another that stays on its spline path and shoots the player (Fig. 2).

Fig. 2

SplineBT.png

Fig. 1

bottom of page