Apus Game Engine
Cross-platform 2D/3D game engine written in Delphi/Pascal by Ivan Polyacov (Apus Software). In active development since the early 2000s, used in several commercial titles.
Games made with this engine:
- Astral Masters β Windows, IOS (Engine-2)
- Spectromancer β Windows, IOS (Engine-3)
- Astral Towers β Windows, Linux, IOS (Engine-3 / 4)
- Astral Heroes β Windows (Engine-3)
π‘ Philosophy
The engine is written in standard Object Pascal and compiles with both Delphi 11+ and FPC 3.2+ from a single codebase, with no conditional forks for compiler-specific syntax. This is a deliberate design constraint: language features that work in one compiler but not the other are avoided. The goal is long-term portability β the same source should remain buildable regardless of which Pascal toolchain you use or what platform you target.
This means: no inline variables, no type inference, no attributes, no anonymous methods beyond what both compilers support. Compatibility is not a limitation to work around β it is part of the design.
π¦ What's included
Base library (Base/Apus.*.pas) β platform-independent utilities that can be used without the engine:
- [ ] Math: vectors, matrices, quaternions, geometry (2D/3D), spatial primitives
- [ ] Strings: UTF-8 (
String8) as the primary string type, with full helper API - [ ] Collections: hash maps, arrays, containers, sorted structures
- [ ] Animation: tweening, animated values
- [ ] I/O: file handling, compression, image loading/saving, cryptography
- [ ] Network: TCP, HTTP requests
- [ ] Platform: threading, logging, profiling, clipboard, cross-platform time
Engine (Apus.Engine.*.pas) β the game engine itself:
- [ ] Scene system with defined lifecycle (Load β Init β Process β Render)
- [ ] UI system: widgets, layout, CSS-like style system, event signals
- [ ] OpenGL renderer (core profile): 2D/3D drawing, shaders, textures, nine-patch, text
- [ ] Resource management with reference counting
- [ ] Audio (BASS, SDL, IMX backends)
- [ ] Platform layer: Windows (native WinAPI), Linux (SDL2)
- [ ] Multi-window and DPI-aware display support
β Engine 4 β stable
The current stable version is engine4. It is used in shipped games and is the recommended starting point if you want something that works today.
β Download engine4 releases
β Documentation / Tutorial
π§ Engine 5 β in development
engine5 is a major refactoring of the entire codebase. APIs change frequently. Nothing here is guaranteed stable. It is not yet suitable for starting a new project.
What's being worked on is tracked in engine5_feature_roadmap.md. Current highlights:
- [ ] New foundation library (
Apus.Core,Apus.Strings,Apus.Conv,Apus.Log,Apus.Threads, β¦) replacing the monolithic legacyApus.Common - [ ] OpenGL core profile pipeline: VBO/IBO, debug instrumentation, NSight-compatible
- [ ] CSS-like style system for UI (declarative, inherited, state-aware)
- [ ] Geometry library overhaul: single-precision first, spatial primitives, intersection and culling tests
- [ ] Multi-window support with runtime DPI changes
- [ ] Robot API for automated testing and tooling integration (file-based protocol, UI introspection, screenshot/pixel commands)
- [ ] CI coverage on Windows and Linux (GitHub Actions)
- [ ] Modernized demo suite
Documentation for engine5 does not exist yet β it will appear as the codebase stabilizes.
License: BSD-3 β see license.txt
VK group: https://vk.com/apusgameengine