Core
Entity Component System
Scenes are trees of entities built on Flecs. Components are plain data, registered once and serialized through reflection.
latest · main @ 69c4a50
A lightweight C++23 engine with an Entity Component System, Luau scripting and a built-in editor.
Why ATMO
Core
Scenes are trees of entities built on Flecs. Components are plain data, registered once and serialized through reflection.
Scripting
Attach a script to an entity and implement Create, Update and PhysicsUpdate. Bindings expose transforms, input and physics.
this:getTransform()Editor
Compose scenes in the hierarchy, tune components in the inspector and play the game without leaving the editor.
Addons
Addons bring assets, Luau code or native libraries that receive the engine's core systems through AtmoAPI.
ATMO_REGISTER_ADDON()Code
Gameplay lives in small Luau scripts attached to entities. When you need more, an addon compiles to a native library loaded by the editor.
move_sprite.luau
function Update(deltaTime)
local transform = this:getTransform()
if transform == nil then return end
if Input.isPressed("D") then
transform.position.x = transform.position.x + 100 * deltaTime
end
if Input.isPressed("Q") then
transform.position.x = transform.position.x - 100 * deltaTime
end
endFrom assets/script/move_sprite.luau in the engine repository.
my_addon.cpp
#include "addon/addon.hpp"
#include <spdlog/spdlog.h>
using namespace atmo::addon;
ATMO_REGISTER_ADDON()
{
spdlog::info("Hello world from My Addon addon!");
}The entry point the editor generates for a new library addon.
Roadmap
Foundations Shipped
Alpha Shipped
Beta In progress
Next Planned
1.0 Planned