3D Platformer Engine
This project was a collaborative effort between my brother and me. Together, we developed a 3D game engine designed specifically for creating simple 3D platformer games. Our goal was to build a powerful yet accessible toolset that would streamline the game development process, offering essential rendering, physics, audio, and input features. The project allowed us to deepen our understanding of game engine architecture, graphics rendering, and real-time systems while tackling the unique challenges of 3D platformer gameplay.
Key characteristics and features of the project include:
- DirectX11 Renderer: Built using DirectX11, the engine provides efficient rendering capabilities, allowing for high-performance graphics suitable for 3D platformers.
- Simple Phong Lighting Model: Implements the classic Phong lighting model to achieve realistic lighting and shading effects, enhancing the depth and detail of the 3D environment.
- Shadow Maps for Static Shadows: Uses shadow mapping techniques to cast shadows for static objects, adding realism to scenes while minimizing performance impact.
- Geometry Shader-Based Particle System: Leverages geometry shaders to create a flexible and visually appealing particle system, perfect for adding effects such as smoke, fire, or sparkles to the game environment.
- Map Loader: Includes a map loader that allows the engine to load level maps created in our 3D Brush-Based Level Editor. This enables users to design and test game levels directly within the engine.
- Custom Model and Animation Data Loader: Provides a custom loader for 3D models and animations, giving flexibility in asset import and management.
- Animation System: A robust animation system supports skeletal animation, allowing characters and objects to move realistically, essential for character-based platformers.
- Entity-Component System (ECS): Implements an ECS architecture, which enhances flexibility in object management, making it easy to add, remove, or modify game entities and their behaviors.
- Integration with XAudio2 for 3D Audio: Uses XAudio2 to incorporate spatialized 3D audio, allowing sound effects and background music to respond dynamically to player movements, creating an immersive audio experience.
- Keyboard, Mouse, and Joystick Input Support: Supports multiple input methods, including keyboard, mouse, and joystick, for versatile and responsive player control.
- Collision Detection with GJK: Utilizes the Gilbert-Johnson-Keerthi (GJK) algorithm for collision detection. Since our levels are created with convex geometry, the GJK algorithm can be efficiently applied to detect collisions between objects and the environment. This approach improves the performance and accuracy of collision detection in our platformer game, ensuring smooth and responsive interactions between the player and the game world.
- Collision Resolution with EPA: Implements the Expanding Polytope Algorithm (EPA) for collision resolution as an extension of the GJK algorithm. Once a collision is detected, EPA calculates the penetration depth and contact points, allowing for accurate and realistic collision responses. This enhances the game’s physics, ensuring that objects interact naturally upon impact with the environment.
- In-Game Editor: A built-in editor that allows developers to modify game objects, adjust properties, and test changes in real-time directly within the engine.
- Custom UI Library for the Editor: Features a custom-built UI library, tailored for the in-game editor, offering intuitive controls and easy navigation to streamline the game development process.
This project was a challenging and rewarding experience, combining elements of graphics programming, physics, and real-time interaction. Through our collaboration, we were able to create a fully functional 3D engine that provides both the power and flexibility needed for 3D platformer game development. The engine stands as a testament to our shared dedication and interest in game development, and it has significantly advanced our technical skills and understanding of game engine design.