Ingenium

Ingenium

Game Development

Overview

Ingenium is a 2D souls-like melee platformer with an emphasis on mechanical skill and exploration, appealing to hardcore gamers looking for a challenge.

The game was built from the ground up on a custom engine developed in-house, allowing the team to tailor core systems such as combat, physics, and rendering to the game's needs.

Tech Stack

C++C#GLFWOpenGLFMODImGui

My Contributions

Roles

Physics Programmer, Engine Programmer, Gameplay Programmer

Physics

  • Wrote collision detection and resolution logic for AABBs, utilizing Minkowski Sum & Difference for detection and custom logic for resolution.
  • Implemented configurable physics timestep and rigidbody interpolation.
  • Added support for triggering C# script-related callback functions, such as OnTriggerEnter, OnTriggerStay and OnTriggerExit as well as their collision equivalent counterparts.
  • Wrote a CharacterMotor component that allows querying grounding status information and surface type (metal, cobblestone, etc.)

Engine Development

  • Created the initial version of the Entity-Component-System.
  • Created the initial version of the Scene class, where all game loop related logic resides.
  • Implemented Inspector support for core physics components, including BoxColliders, Rigidbodies and the Collision Matrix.
  • Designed and implemented the physics API in C# for gameplay programmers, including raycasting utilities, LayerMasks, and physics event callbacks.
  • Assisted teammates in porting existing engine functionality into the Inspector GUI.
  • Added spritesheet support to the Animator component, as well as animation preview and all other necessary changes to its front-end GUI.

Game Design

  • Assisted lead game designer with designing the player’s moveset, the skill tree as well as enemy types and their movesets.

Gameplay Programming

  • Created base classes for attack hitboxes, as well as their derived counterparts (for players and enemies).
  • Created base classes for breakable objects, as well as various derived counterparts (crates, barrels, etc.).
  • Created a simple camera controller that tracks a target and provides support for triggering camera shakes.
  • Implemented HUD which displays the player character's vitals.
  • Created collectibles such as elixirs and experience orbs that are dropped by breaking breakable objects or defeating enemies.

Enemy AI

  • Created all 3 mob enemy types (Driller, Bomber and Glider).
  • Created the Vallas boss fight which features 2 phases. In the first phase, players must destroy the generator in the center of the room while avoiding attacks launched by the enemies summoned by Vallas. In the second phase, Vallas attempts to take down the player personally by casting new spells in addition to his summoning magic.