Foxer Engine

Status Ongoing
Language C++/Lua

3D, data-driven, multiplayer, cross-platform engine developed during final year of University.

Data-driven

Lua integration is one of the biggest features of this engine, with it effecting everything from rendering and physics, to entity and level definitions. Entities are defined by components which are defined in Lua. Callbacks and event handlers can also be created in Lua on entities and levels allowing a high degree of flexibility and freedom.

View Entity Example
return {
    name = "Portal",
    position = engine.math.vec3.new(0.0),
    renderComponent = {
        mesh = 2795621949,
        shader = 2946951896
    },
    physicsComponent = {
        type = 1,
        shape = 1,
        isSensor = true,
        halfWidth = 2,
        halfHeight = 2,
        centreX = -5,
        centreZ = 2,
        beginContact = function(self, other)
            if (engine.network.isClient()) then
                engine.sound.play(3989746563)
            else
                engine.level.getActive().portalHit(self:getEntity():id(), other:getEntity():id())
            end
        end
    }
}

The asset database itself is also in Lua to support adding custom assets to it with their own properties without needing to know any form of SQL.

Multiplayer

Using the Enet library, multiplayer is supported in the engine however it is an optional component and you are not forced to use it.