Home

Awesome

PaxEngine3

Language Standard Standard

PaxEngine3 is a game engine centered about designing an extensible, transparent, and intuitive API. Finding easy but sufficiently expressive ways for creating your game is the central motivation of this project. It does not provide sophisticated graphics yet but allows to integrate those at any time. Below you can find screenshots from three demo projects. The assets in these screenshots are custom or from opengameart.org, itch.io, and the Shovel Knight Press Kit.

Tiled Map Editor Import The TileDemo is a showcase for importing tile maps created in the Tiled Map Editor.

2D Platformer The Platformer is a tiny showcase for the usage of Box2D to model solid platforms. Sadly, the little green guy has no jumping implemented until today.

2D/3D Interaction Meshfold is a proof of concept for an idea where a two-dimensional game world is modelled as the surfaces of a three-dimensional shape given as a mesh.

Raymarcher Mandelbulb rendered with a small raymarcher implemented in the fragment shader.

3D Scene Small demo on rendering 3D meshes imported with the assimp library.

Architecture

PaxEngine3 is a plugin framework implemented in the libraries paxcore and paxutil. The Engine is started with a custom Game and a set of Plugins:

int PAX::Tile_main(int argc, char *argv[]) {
    int exitcode = 0;

    PAX::TileDemo::Demo game;

    PAX::SDL::SDLPlugin               sdl;
    PAX::OpenGL::OpenGLPlugin         openGL;
    PAX::SDL::OpenGL::SDLOpenGLPlugin sdlOpenGLLink;
    PAX::Tiles::Plugin                tiles;
    PAX::TileDemo::Plugin             demoPlugin;

    PAX::Engine &engine = PAX::Engine::Instance();
    engine.initialize(
            &game,
            {
                    &sdl,
                    &openGL,
                    &sdlOpenGLLink,
                    &tiles,
                    &demoPlugin
            }
    );
    exitcode = engine.run();

    return exitcode;
}

This example is taken from the TileDemo, shown in the first screenshot.

Plugins delivered with the engine can be found in the plugins directory and consist of:

paxcore

The central library of PaxEngine3, contains all primary artefacts and interfaces for extending the framework:

GameEntities and Worlds are implemented as entities of the custom entity-property system Polypropylene. This allows defining and changing worlds and game objects arbitrarily, flexibly, and serializable.