Keeshond is a 2D game engine with a focus on quickly bringing ideas onscreen.
- Runs reasonably well on hardware from 2010
- Deterministic game logic across systems, important for speedrunners
- Implements features games need, without adding unneeded complexity
- First-class Linux support via SDL2
The document you see here serves as an API reference. It is not intended as a starting point for new users. If you’re looking to get started, it is suggested that you look at other material instead, such as the included examples.
Keeshond is designed like a framework, in which you construct a gameloop, which handle the program flow for you automatically. There is some plumbing that you normally do not need to care about. For example, there is usually no need to manually create the gameloop::GameControl, as the framework creates this for you when you create the gameloop::Gameloop. However, such functionality is publicly exported in the case that they may be helpful to more experienced users.
If you just want to make a game and use the framework as it is designed, look for structs and functions that are marked (ADVANCED) - these are items that may be ignored as you will not normally be working with them.
Audio module, for playing sound effects and music
(ADVANCED) Keeshond’s default logger implementation
Gameloop and [gameloop::GameControl] context, which is used to control the game globally
Input module, for handling control bindings
Keeshond’s very own ECS framework, and where all the action in your game takes place