No description
  • C++ 92.1%
  • CMake 4.5%
  • Nix 1.2%
  • Makefile 1.1%
  • Shell 0.7%
  • Other 0.4%
Find a file
2026-06-14 15:30:19 +00:00
.github/workflows Fix Mac Apple Silicon CI build failure in non-nix-build.yaml (#30) 2025-07-31 20:00:15 +02:00
generated refactor: mass-fixes to pass clang-tidy and scan-build flagged issues, 2026-06-14 14:13:06 +02:00
include add default value for IEngine* in IGame 2026-06-14 16:48:29 +02:00
modules/hephaestus rename unsubscribe_to_event_topic -> unsubscribe_from_event_topic 2026-06-14 17:29:58 +02:00
src refactor: prefer arrow operator over deref and member access throughout codebase 2026-05-11 00:47:05 +02:00
tests rename unsubscribe_to_event_topic -> unsubscribe_from_event_topic 2026-06-14 17:29:58 +02:00
vcpkg@b509a07261 Add Non-Nix and Windows support for development using vcpkg, also add CI testrunners to keep this working 2025-07-16 23:05:02 +02:00
.clang-format style: Update clang-format for more readable code. 2025-06-22 01:20:49 +02:00
.clang-tidy remove bugprone-exception-escape from clang tidy 2026-06-14 16:48:01 +02:00
.gitignore add ./vscode to .gitignore 2026-06-14 16:12:22 +02:00
.gitmodules Add Non-Nix and Windows support for development using vcpkg, also add CI testrunners to keep this working 2025-07-16 23:05:02 +02:00
BUILD.md systems-with-entity (#5) 2026-05-10 00:43:26 +00:00
CMakeLists.txt turn on warning compiler options for release and better templating debugging options for debug 2026-06-14 17:18:18 +02:00
flake.lock update flake 2026-06-10 01:16:13 +02:00
flake.nix feat: setup ccache and rename analyze make target to check which now 2026-06-14 13:55:55 +02:00
Makefile feat: setup ccache and rename analyze make target to check which now 2026-06-14 13:55:55 +02:00
README.md systems-with-entity (#5) 2026-05-10 00:43:26 +00:00
setup-vcpkg.bat Add Non-Nix and Windows support for development using vcpkg, also add CI testrunners to keep this working 2025-07-16 23:05:02 +02:00
setup-vcpkg.sh Add Non-Nix and Windows support for development using vcpkg, also add CI testrunners to keep this working 2025-07-16 23:05:02 +02:00
SetupModules.cmake Simplify modules, use type index to store them instead of enum which has 2025-02-17 17:48:05 +00:00
vcpkg.json Add Non-Nix and Windows support for development using vcpkg, also add CI testrunners to keep this working 2025-07-16 23:05:02 +02:00
VcpkgSetup.cmake Add Non-Nix and Windows support for development using vcpkg, also add CI testrunners to keep this working 2025-07-16 23:05:02 +02:00

Atlas

Overview

Atlas is a modular, compile-time-configurable C++23 game engine designed for performance, clarity, and developer ergonomics. It emphasizes clean architecture, predictable behavior, and a Unix-inspired workflow.

Atlas is built for flexibility: everything is opt-in. Systems like ECS, rendering, physics, and networking are exposed as modular components that can be toggled per game project. This allows developers to tailor the engine to fit the exact needs of their game without including unnecessary bloat.

Naming Scheme

Atlas follows a naming convention inspired by Greek mythology:

  • Atlas — The core of the engine.
  • Modules — Named after gods (e.g. Hephaestus for ECS, Iris for the renderer).
  • Games — Named after demi-gods (e.g. Daedalus is a reference project built on Atlas).

Features

  • Modular Architecture — Compile-time selection of modules for clean builds.
  • Hephaestus ECS Module — High-performance, cache-friendly SoA ECS with multithreaded system execution.
  • Zero Dependency Core — Modules depend on external libraries, but the core engine stays minimal.
  • Cross-Platform Support — Linux-first, but designed with Mac & Windows as first class citizens.
  • Modern C++23 — Full usage of modern language features.
  • Nix — Full Nix Support, providing a reproducible and portable environment.

Getting Started

Atlas is intended to be included as a Git submodule in your own game repository.

# If using https
git submodule add https://git.just-a-shell.dev/larssonmartin1998/atlas.git atlas
# If using ssh
git submodule add forgejo@git.just-a-shell.dev:larssonmartin1998/atlas.git atlas

git submodule update --init --recursive --force

Note: You don't need a game repo to develop Atlas, the build instructions also apply to just the engine, but use make test instead of make run.


Build Instructions

  • Build your game (You'll find the output binary in your_game_repo/result/bin/your_game_name):
nix build .

Nix workflow for development

  • Enter development shell:
nix develop

This gives you a fully configured environment with the correct compiler and tools. For a full list of dependencies, see flake.nix. When inside the nix shell, refer to the Non-Nix Users section for working with the game/engine.

To cross-compile for Windows from Linux using Nix:

This uses an example from the Daedalus project. You can refer to the flake.nix in that repository as a working example. Change the name from Daedalus to whatever you choose to name your game project.

nix build .#daedalus-windows

This produces a Windows-compatible executable in ./result/bin/daedalus.exe.

Make sure your flake defines a packages.daedalus-windows output using pkgs.pkgsCross.mingwW64 and a separate xstdenv.mkDerivation.


Non-Nix Users

⚠️ Important: Atlas is designed with Nix as the first-class citizen build environment. While we provide alternative build instructions, they may need additional configuration.

For detailed non-Nix build instructions, see BUILD.md.

💡 Recommendation: Consider using the Nix environment even on non-NixOS systems for the most reliable development experience.


Notes

Atlas is in active development and not production-ready yet. Contributions, feedback, and curiosity are welcome!

Check out Daedalus to see Atlas in action.


License

Atlas is licensed under the MIT License. See LICENSE for details.