Phoenix Engine
Phoenix Engine is a personal C++ based game development engine.
It features: -
-
Network System
-
2D and 3D Rendering via DirectX 11 API
-
2D and 3D Particle System
-
Multithreaded Job System
-
2D Physics Engine
-
Event System
-
Dev Console
-
Monospaced Font Engine
-
Debugging Visualization System
-
Thread Safe Data Structures
-
Clocks and Timers
-
XML Data Parsing
-
​Audio Engine via FMOD API
-
Math Libraries
-
Primitives
-
Input System with Xbox Control support
Games Developed Using Phoenix Engine Sizzle Reel
Performance Analysis of Multithreaded Rendering
(Work In Progress)
The renderer of a game engine is often a performance bottleneck from the CPU side. Adding multithreading to the rendering step is an effective means to address the performance issue without losing content details. The primary factors affecting multi-threaded rendering performance are analyzed, and the relevant optimization methods are explored as well.
​
Wanna learn more about this project ? Click Here
Multi-Threaded Rendering - Shadow Maps
Multi-Threaded Rendering - Demonstration
Fantasy Ball is a breakout clone with a Forest-Fantasy theme to it.
The goal with developing this game was to build a modular game that can be easily modified by the level designers.
It features: -
-
2D Particle System
-
Per pixel Color Key Image based data driven map generation
-
XML based data driven gameplay
-
XML based Data Driven Power-Ups support
-
Randomized Background Music and Level Background Images
​
Wanna learn more about this project ? Click Here
Fantasy Ball - Power Up
Fantasy Ball - Debug Visualization
Battle City
Battle City is a game developed using the Incursion Project.
The goal with developing this game was to understand the complexities of developing online networked multiplayer games.
It features: -
-
2-Player Online Multiplayer game
-
TCP based server connection
-
Reliable UDP Messaging
-
Entity Replication
Battle City - Entity Replication
Battle City - Movement Replication
Vampstein
Vampstein is a doomenstein clone.
The goal with developing this game was to develop a 2.5D game/tech demo.
It features: -
-
A 3D world built using AABBs and XML parsed data
-
4 different types of billboards
-
2.5D Raycasts - 2D horizontal and vertical raycasts to mimic a 3D raycast
-
Multiple types of AI
-
Billboarded Sprite based Animation
-
Validated XML based Data Driven Gameplay and Entity factory
Vampstein - XML Map Switching via Dev Console
Vampstein - XML Map Raycasting and Debug Visualization
2D Physics Sandbox
2D Physics sandbox is a playground for testing the 2D physics system.
The goal of developing this was to engineer a 2D Physics Engine similar to Unity Engine.
It features: -
-
Disc and Convex Polygon Colliders and Rigid bodies
-
Bounciness, Friction, Angular and linear Drag
-
Collision Detection and Angular Impulse resolution
-
Collision Layers
2D Physics Sandbox - Collision Detection, Collision and Impulse Resolution
2D Physics Sandbox - Polygon creation from Point Cloud
Adventure
Adventure is a Rougelike game/tech demo.
The goal with developing this game was to understand some map generation technique and driving engine development.
It features: -
-
Parsing XML files using TinyXML2
-
Data-Driven (XML based) gameplay
-
Data-Driven Sprite based Animation Engine Side System
-
Multiple Map generation techniques like per pixel color key image based, cellular automata, ranged drunken wander
-
It support only Xbox controller Input
Adventure - Movement
Adventure - Map Generation
Incursion
Incursion is a top down shooter game. Also used for Battle City Project.
The goal with developing this game was to understand how game engines development progresses with textures and audio.
It features: -
-
Add a basic audio system using FMOD
-
Upgraded rendering system to process textures and sprite sheets
-
Sprite sheet based levels
-
Simple Monospaced Font Engine
-
Multiple Levels with 4-way and 8-way flood fill validation
-
Simple level generation techniques like random in fixed range drunken wander
-
Multiple types of AI
-
Physics and debug visualization tools
-
Keyboard and Xbox controller support
Incursion - Gameplay
Incursion - Debug Visualization
Starship
Starship is a clone of the classic arcade game asteroids.
The goal with developing this game was to understand how game engines development starts.
It features: -
-
Flat shaded textures
-
AI - Constant Velocity and Constant Acceleration based
-
Keyboard and Xbox controller support
-
Debug Visualizations along with other basic debugging tools
Starship - Gameplay
Starship - Debug Visualization
Math Testing & Visualization
The Math utilities are tested on a custom test framework in a console app.
The Math is also visually tested in a separate app for debug visualization. The following visualizations can be observed in the app: -
-
Nearest point on a capsule, OOBB 2D, AABB 2D, Line Segment, Disc relative to the current mouse position.
-
If the Mouse is inside the OOBB 2D, AABB 2D, Line Segment or Disc you can see those objects highlighted with increased opacity.
-
A pentagon has been render at the bottom left corner for testing the rendering of polygons.
​
Math - Debug Visualization
Math - Unit Tests
Post Mortem
What Went Well ?
-
Developed a personal game engine from scratch.
-
Understood and developed various major subsystems, their intricacies and the scale of complexity of commercial and proprietary game engines.
What Went Wrong ?
-
Game code and engine code got mixed at times.
-
As the engine got bigger I forgot about certain utilities and ended up re-inventing the wheel on the game side.
-
Overly complex engine systems sometimes defeat their own purpose when used in game code.
What We Learned ?
-
Learned the importance of nuances that come when developing Engine code versus developing game.
-
How good engine systems save time when developing a game.
-
When it's best to develop game code and then port the game code to engine code depending on it's utility and robustness.