A C++ Game Engine using a component approach