top of page

Phoenix Engine

Phoenix Engine Logo

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

Role

Engine Programmer

Languages & API

C++ | DirectX 11

Development Time

18 Months, Ongoing, 2019-2020

Platform

Windows

Team Size

1 Programmer

github32x32.png
Phoenix Engine Sizzle Reel
Games Developed Using Phoenix Engine Sizzle Reel

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

Download
Orange Download Icon Transparent.png
Shadow Maps | Directional Light shadow maps | Spotlight Shadow maps | Phoenix Engine | Thesis | C++ | DirectX 11 API | Multi-Threaded Rendering

Multi-Threaded Rendering - Shadow Maps

Shadow Maps | Directional Light shadow maps | Spotlight Shadow maps | Phoenix Engine | Thesis | C++ | DirectX 11 API | Multi-Threaded Rendering | View Frusutm Culling | 3D Particles

Multi-Threaded Rendering - Demonstration

Performance Analysis of Multithreaded Rendering

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 Ups | Phoenix Engine | Game | Breakout | DirectX 11 | C++

Fantasy Ball - Power Up

Fantasy Ball | Phoenix Engine | Game | Breakout | DirectX 11 | C++

Fantasy Ball - Debug Visualization

Fantasy Ball
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 | 2 Person Online Multiplayer Game | Game | Phoenix Engine | Winsock2 API | DirectX 11 | C++ | Enity Replication

Battle City - Entity Replication

Battle City | 2 Person Online Multiplayer Game | Game | Phoenix Engine | Winsock2 API | DirectX 11 | C++

Battle City - Movement Replication

Battle City
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 | Back Face Culling | Game | 2.5D Game | Clone | Doomenstein Clone | C++ | DirectX 11 API | 2D Physics in 3D world | 3D Raycasting | 2D Raycasting

Vampstein - XML Map Switching via Dev Console

Vampstein | Back Face Culling | Game | 2.5D Game | Clone | Doomenstein Clone | C++ | DirectX 11 API | 2D Physics in 3D world | 3D Raycasting | 2D Raycasting

Vampstein - XML Map Raycasting and Debug Visualization

Vampstein
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 | Polygon | Disc | Collider | Rigid Body | Collision Detection | Collision Resolution | Impulse Resolution | 2D Physics | 2D Physics System | Game Engine System | GJK algorithm | Phoenix Engine | Phoenix Game Engine | C++ | DirectX 11 API

2D Physics Sandbox - Collision Detection, Collision and Impulse Resolution

2D Physics Sandbox | Polygon | Disc | Collider | Rigid Body | Collision Detection | Collision Resolution | Impulse Resolution | 2D Physics | 2D Physics System | Game Engine System | GJK algorithm | Phoenix Engine | Phoenix Game Engine | C++ | DirectX 11 API

2D Physics Sandbox - Polygon creation from Point Cloud

2D Physics Sandbox
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 | Map Generation |  Sprite Animation | Data Driven Gameplay | Tech Demo | Game | C++ | DirectX 11 API | Phoenix Engine | Phoenix Game Engine

Adventure - Movement

Adventure | Map Generation |  Sprite Animation | Data Driven Gameplay | Tech Demo | Game | C++ | DirectX 11 API | Phoenix Engine | Phoenix Game Engine

Adventure - Map Generation

Adventure
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 | Game | Tank Fight | Top Down Shooter | Raycasting | AI | Flood Fill | Map Validation | C++ | DirectX 11 API | Phoenix Engine | Phoenix Game Engine

Incursion - Gameplay

Incursion | Game | Tank Fight | Top Down Shooter | Raycasting | AI | Flood Fill | Map Validation | C++ | DirectX 11 API | Phoenix Engine | Phoenix Game Engine

Incursion - Debug Visualization

Incursion
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 | Game | Top Down Shooter | AI | Flat Shading | Xbox Controller | C++ | DirectX 11 API | Phoenix Engine | Phoenix Game Engine

Starship - Gameplay

Starship | Game | Top Down Shooter | AI | Flat Shading | Xbox Controller | C++ | DirectX 11 API | Phoenix Engine | Phoenix Game Engine

Starship - Debug Visualization

Starship
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 | Unit Test | Custom Framework | Engine Programming | C++ | DirectX 11 API | Phoenix Engine | Phoenix Game Engine

Math - Debug Visualization

Math | Unit Test | Custom Framework | Engine Programming | C++ | DirectX 11 API | Phoenix Engine | Phoenix Game Engine

Math - Unit Tests

Math Testing & Visualization
Post Mortem
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.

bottom of page