Diji-Engine & Pacman
About the Engine & Pacman
The Diji-Engine is a lightweight C++ game engine built with SDL and GLM, following the C++ Core Guidelines. Designed as both a learning tool and a foundation for future engines, it embraces modern design patterns and a simplified pipeline inspired by Unity.
Applying modern practices, it served both as a learning tool and as a basis for future custom game engines. One such Expansion is my custom SFML engine which I highly encourage you to check out.
With the engine I made a pacman replica, it served both as an exercice in game programming as well as proof of the engine's capabilities. Going beyond what was required I pushed the engine and my skills to its limits making a one of a kind.
My Implementation
What I will present here is a sample of what I made, I wrote an extensive README on the GitHub Page of this project which I encourage you to look at.
Some Core Features
- Component System: Modular components allow reusable gameplay logic and rapid iteration.
- Graphics & Rendering: Built on SDL for cross-platform windowing and rendering, with GLM for math and transformations.
- Audio System: Integrated SDL_mixer support for music and sound effects. With service locator and multithreading.
- Input & Controls: Unified handling of keyboard and controller input through a flexible command pattern.
- Game Programming Patterns: Command - Observer - Singleton - Component - Dirty Flag - Event Queue - Service Locator - Parent-Child GameObject relationships
As for Pac-Man, I made a complete playable example showcasing the engine's capabilities, including AI, level creation, and multiple modes (Single Player, CO-OP, Versus Freemode, Versus Ghost Rules).
This project introduced me to engine development and advanced C++ programming. If what you read so far peaked your interest I invite you to read the GitHub page of the project.
Want to play the game?
The game works with any GamePads mapped to Xbox Controller Inputs, you may need to reload the page for controllers to work. Use "WASD" and "Enter" on keyboard (I forgot to add arrow keys!)
Some bugs may be present because of the webAssembly compilation, if you encounter any issues with the game feel free to reload the page. P.S. multiplayer modes don't work properly because gamepads are not properly assigned in webAssembly version.