Language

C++ For the engine development

C# For scripting in game objects

Libraries Used

Overview

Software Engineering 200

My third Software Engineering project at Digipen marked a significant departure from past endeavors, representing an interdisciplinary collaboration. Partnering with an Artist and a Game Designer, we embarked on a two-trimester journey, tasked with developing both an editor for the game engine and the game itself. The trailer for the game is below!

With a team comprising five Programmers (2 specializing in Real-Time Interactive Systems and 3 in Interactive Media and Game Development), alongside 2 Designers (User Experience and Game Design) and 1 Artist (Digital Art and Aniamtion), the project’s scope expanded considerably. Given the Designer’s familiarity with Unity, our challenge lay in bridging the gap and crafting an editor tailored to their expertise.

Roles and Task

In this project, I took on the role of Engine Architecture programmer, responsible for building the core components of the engine. This involved tasks such as

  • Managing the main loop, structuring layers and systems.
    • With the exponential complexity of creating an editor on top of the engine, proper software design is needed. A layer design is made to seperate the the engine systems from the editor system.
  • Entity-Component-System (ECS)
    • A ECS is mandotary has it is versatile, efficient and powerful. Since we were not allowed to use any libraries that support it, it has to be designed ourselves. Designing it ourselves taught us the importance of contigious memory management, the L1 L2 L3 cache in the CPU.
  • Serialization/Deserialization.
    • With an ECS made, the structure of how our data is saved is important
    • Add UML Diagram here
  • Implemented C# embedding into our C++ program.
    • Bridge any custom C++ functions into the C# runtime
    • Collate all the scripts in the game assets folder
    • Utilise the mono libraries C# compiler to generate the the .dll file for the engine to read
    • Hot reloading and Safety Checks to improve game development efficiency
  • Resource Manager
    • A singleton utility class that manages the loading, retrieval and free-ing of every asset in the game.
  • CPU-based Particle system
  • Animation with scripting

Research Material

Summary

Our resulting creation, “Jam-boree!”, emerged as a vibrant 2D rhythm platformer. Set in the enchanting realm of Castella, players follow the journey of Brio as he navigates through musical landscapes, forming bonds with sentient guitars and navigating perils by staying in sync with the beat. It’s an adventure brimming with musical wonders and rhythmic challenges, inviting players to explore and groove to the rhythm of the game.

Our creation earned recognition and was featured on the Digipen Website under the “Rhythm” category. Additionally, it was published on the DigiPen Games Gallery, marking a significant achievement and showcasing our success in the realm of game development.

Download!