Game engine
LGPL3 BSD-newA game engine sort of thing that has just come out of seeing what I tend to reimplement for many games, and doing it in the general case. Stuff will change a lot, and some things are probably broken...
This is written on top of Pygame, and as such is for 2D games written in Python and has no hardware-accelerated graphics.
Download
Use the GitHub repository. Apart from the engine package, there are some other files in here—build system, basic readme, entry point scripts, etc.. To use this, edit the files in game/, outside of game/engine/.
Documentation
API documentation (includes a tutorial).
Features
- nested running game worlds (doc)
- global or local configuration system with easy saving/loading (doc)
- multi-line text rendering (doc)
- simple audio: sensible volume scaling, autoplay music, play random sounds from a group (doc)
- basic resource caching for images, fonts, sounds... (doc)
- timing/callback-based event scheduler (doc)
- automatic framerate adjustment for slowdown
- interpolation of values
- some presets (linear, damped motion, shaking)
- handles arbitrarily nested sequences
- callback-based event handling (doc)
- treat any input type as any event type (keyboard keys as axes, gamepad analogue sticks as buttons...)
- use any button as a button modifier
- automatic input normalisation to avoid missing buttons that were pressed too early
- extra button modes: held, repeat when held, double-press
- simple deadzones for axes
- concise configuration file format for specifying control schemes
- graphics system (doc)
- add graphics to graphics managers to handle drawing automatically
- transformation system with automatic retransforming
- graphics managers are themselves transformable graphics
- graphic wrappers: solid colour, text, animation, tilemap...