Tato Engine

Announce new projects or updates of Irrlicht Engine related tools, games, and applications.
Also check the Wiki
Post Reply
tronfortytwo
Posts: 5
Joined: Wed Nov 01, 2017 7:17 pm

Tato Engine

Post by tronfortytwo »

It's been a while I am working on a project in which I use Irrlicht as Graphic Engine.
The aim of the project is to create a general purpose C++ game engine that I will use in the future for some games. Its name for now is Tato Engine (codename TatoProject) but may probably change.
The design I am implementing is to create a kind of middleware between more low-level libraries (such as Irrlicht) and game-specific code.
The game-specific code uses high-level API provided by the engine. These API abstract the high-level features requested safely. They will do checks and sanitizations, so that the C++ critical code will be generalized and *always* working, while in the upper implementation I can focus on the creative part of developing without get too much pain if I do a mistake. The engine will not assume anything, and there is no game content 'hard-coded' in the middle engine.
The game specific code is written in two ways:
- Entities, scenes and things are written in a fast declarative language I written for this engine. I called it TatoScript (thought is not a scripting language, but is more like json or XML). Below you can see for example an implementation of a simple box in TatoScript:

Code: Select all

 
# simple_box.tob
# Lines starting with '#' are commented
 
DESCRIPTION: a simple box
 
# The various models associated with the object
MODEL(
 
    # values valid for all the models
    default(
        TYPE: MODEL3D
        FILE: box.obj
        DINAMIC LIGHTING: true
    )
 
    # the model used as default
    DEFAULT MODEL: red model
 
    # all the models
    red model(
        TEXTURE: red texture.bmp
    )
    blue model(
        TEXTURE: blue texture.bmp
    )
)
 
# Physic engine context
PHYSIC(
    MASS: 40
    BOX(
        SIZE[
            3
            5
            2
        ]
    )
)
 
# Triggers for the event based interface with other objects
TRIGGERS(
    hit by entity: on_hit.lua
    temperatue rise: explode.lua
)
 
- The procedural part (AI, events, behaviour scripting, etc...) is written in Lua scripts, with a event based design approach.

As external libraries I use:
- Irrlicht for the graphic part
- Open Dynamic Engine for the collision and physical part
- LuaBridge for the C++/Lua binding (all the game specific code is written in TatoScript and Lua)
- IrrKlang/OpenAL/SDL2 (still to be decided and implemented) for the Audio part

This game engine is still is his early days, I'll keep you updated!

EDIT: I'll put some screenshot tomorrow maybe.
Post Reply