Home
Softono
ApusGameEngine

ApusGameEngine

Open source BSD-3-Clause Pascal
189
Stars
30
Forks
3
Issues
15
Watchers
1 week
Last Commit

About ApusGameEngine

An open source Delphi/Pascal game engine

Platforms

Web Self-hosted

Languages

Pascal

Links

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:


πŸ’‘ 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 legacy Apus.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