fabula

Fabula is a Python game engine suitable for adventure, role-playing, and strategy games and digital interactive storytelling. It offers a client-server architecture, an event-based protocol, multiplayer and networking capabilities, a multi-threaded server, an abstract, visualization-agnostic model of a game world, an asset manager, and a plugin system. Gameplay can be recorded and played back. The code is well documented and runs on Linux and MS Windows (it should work on OS X, too, but this has not yet been tested). Fabula can be used as a library to develop your own games. As an alternative, you can use the included Pygame-based graphical editor and the default game engine.

Recent releases

Release Notes: This release added am interfaces.replay module, which replays Fabula game logs. A JSON-RPC server interface was added. Mouse-based scrolling was removed from PygameUserInterface. A surface catcher module was added for screen capturing - press 'F2' to start capturing. Fabula uses a new 'planes' version which allows for slick GUI elements with bitmap backgrounds. The Fabula server can now be run without Pygame installed. There were lots of fixes, improvements, and a documentation update.

Release Notes: This release makes server and client dis/reconnection much more reliable, adding ExitEvent and making the server more tolerant towards abrupt client exits. On
the client side, the user will be warned when server replies take too long. Console and file log levels are hardwired. The server will listen on port '0xfab' (4011), and displays a friendly interface on the console. PygameUserInterface has an on-screen display that will display statistics upon F1. There are many fixes and improvements, API changes in fabula.run, and a
documentation update.

Release Notes: Improved room and multiplayer handling in the server. In the client, the scrolling amount is now based on the framerate. There now is a check for window focus before the scrolling. The client now centers the room plane on the player Entity, while snapping to the display edges. When performing PickUp and Drop, all eight positions surrounding the player are considered now. Exception handling has been improved; Fabula exits cleanly in most cases now. Many minor changes, fixes, cleanups, and a documentation update.

Release Notes: The main feature of this release is the re-introduction of TCP networking, which had been disabled in previous releases. Networking is handled using only modules from the Python standard library. Server networking is multithreaded, with a new thread for each incoming connection. Players will be prompted for the server IP and port. Two new scripts have been added, which start a networking-enabled server and client. PygameUserInterface now highlights entities and buttons on mouseover. There have been lots of minor fixes and improvements, and a documentation update.

Release Notes: This version comes with new demo game art from the "Whispers of Avalon" open source game project. Fabula entities now support sprite sheets for walking animations. The editor now opens a screen of the same size as the game screen and supports the SaysEvent. Fabula now features a server-side command-line interface. setup.py has been fixed to finally work with vanilla Python distutils alongside cx_Freeze. Fabula source releases will be in ZIP format for the time being since tarballs created by distutils preserve symbolic links. Minor fixes, cleanups, and documentation updates were done.