top of page

AngryEngine 

 

AngryEngine is a homebrew game engine developed by me and still in development.

AngryEngine has been built from the ground-up and designed to be extensible and scalable.

 

Overview

 

1. Programming Language: C++

2. Any additional libraries: Nope. STL has not been used. All code is self-written

3. Editor: Visual Studio Enterprise 2015.

 

Features

-A custom Memory Manager designed for Fixed Size Allocation and Multiple Size Allocation.

-A custom Garbage Collector which defragments fragmented memory bits and makes them available for allocation.

-A complete class of Vector for storing locations of gameobjects with helper functions and appropriate encapsulation.

-A Gameobject class, thus indicating each object generated is kept track by the engine and has its own life.

-A Gameobject Controller which controls the gameobject's actions. Gameobject actions can also be controlled by the gameobjects, if a controller does not get inherited.

-A sample Test case game showcasing how the engine works under the hood.

 

Problems Faced and how they were solved?

The most important problem faced was how to keep track of allocated and unallocated memory in my Memory Manager. I implemented 2 solutions

1. Linked List implementation

   - I wrote a custom template Linked List which is extensible and can keep track of various allocations and deallocation. But the overhead of maintaining a Linked List is very high. 

 

2. BitArray implementation   

  - This was a more proven and optimised solution. A created an array which maintains either 1 or 0 indicating the memory was allocated or deallocated. The storage of 1/0 was done using bits. This way, even though we have around 100,000 allocations, we can keep track of them and the memory overhead for storing bits and the time and processor overhead for finding and traversing through these bits is far less than Linked List.

 

 

Current Development

The current development involves

1. Adding a simple graphics library

2. Collision Detection

3. Messaging System

bottom of page