Liquid Engine

Liquid is fluid. Liquid has vast freedom of movement and yet the forces that bind it together are only temporary.

Liquid is graceful, flowing, and smooth.

The Liquid Engine, known as LE, is named for it's inherent ability to adapt to need of the programmer.

I started building the Liquid Engine in my Graphics Engine Programming course at DePaul University. Since this is my first completely custom engine I consider it to be a work in progress. I hope to continually improve on it's functionality and feature set as I create games to use the engine. LE is designed to be fully object oriented and is programmed in C++.

Listed below are some features of the LE which are implemented.

Custom memory subsystem:

cog0 Fully customizable heap sizes
cog0 Fixed block heaps
cog0 Dynamic block heaps
cog0 Memory boundary alignment
cog0 Custom coalescing of memory during de-allocation
cog0 Individual heap information tracking (turned on with a compile flag)
  • Total heap memory
  • Amount of used memory
  • Amount of free memory
  • Peak memory used
cog0 Individual heap allocation information tracking (turned on with a compile flag)
  • Filename who the memory is allocated to
  • Line number where the allocation happened
  • Any comments during allocation
  • Memory boundary alignment value
cog0 Memory manager header file

Custom object subsystem:

cog0 Individual Nodes with unique names
cog0 Each node a pointer to a single parent and sibling
cog0 Sibling pointer is traversed in sorts and debug printing
cog0 Parent-child-sibling header file

Custom file subsystem:

cog0 Archiver class with table of contents
cog0 Multiple chunk types
  • File
  • Text
  • Sound
cog0 Virtual file object types for abstraction
  • File object which inherits from a virtual file object is used for writing to the archiver
  • Stream object which inherits from a virtual file object and is used for virtual memory files
cog0 Each virtual file object which has its own start/end point based on the file
cog0 Archiver header file

Custom math subsystem:

cog0 Vertex class
cog0 Matrix class
cog0 Boolean comparisons
cog0 Matrix test file

Some additional subsystems:

cog0 Camera class
cog0 Keyboard control class
cog0 Graphics object manager
cog0 Many more features!
cog0 Camera header file

Unit tests were written for each subsystem.


cog0 Started in the Graphics Engine Programming class
cog0 Programmed in C++
cog0 Code by Patrick Levoshko
cog0 Custom memory management
cog0 Custom object subsystem
cog0 Custom file subsystem
cog0 Custom math subsystem
cog0 Simple spinning pyramid demo using complete engine. Pyramids are in various textured states
cog0 Code available by request