Spineless is a generic cross-platform 3D game engine implemented in Python with Pyrex optimizations. Focus is on flexibility, clean design and ease of use, not pure speed or bleeding edge graphics.
Spineless is still very incomplete and not really ready for big projects, but it does have the basic building blocks for a game, and you could make small games with it. I would appreciate feedback, comments and suggestions.
Here are some key features of "Spineless":
Clean and simple design
· Number one priority for Spineless is ease of development: a simple and intuitive programming interface. There are as few pitfalls as possible and as much generalization as possible without being overly generic for the scope of the engine (game development). The aim is that it Just Works, and does it with as few lines of code as possible (in your application, not the engine). Currently, and contrary to this principle, documentation for the engine is seriously lacking, but this is being worked on for the next release.
Flexible event management
· Spineless uses named event channels for much of the internal communication in the engine, and communication with the user application. Event channels don't need be generated in any way, you just specify a channel name when you want to listen to messages or send them, and your events end up with the correct listeners.
Unified, OpenGL-accelerated graphics
· All graphics in Spineless, 2D or 3D, are OpenGL accelerated. Also, 2D and 3D graphics are treated equally, with no assumptions made about how you want to draw graphics (such as assuming the square as the only 2D graphics primitive). The future GUI package will also fully support 2D and 3D graphics.
3D hardware accelerated audio
· Spineless uses the FMOD audio library for simple to use 3D hardware accelerated audio. In the next release, support for the Pygame mixer and possibly OpenAL is going to be added.
Elegant scene graph
· Scene graphs are usually based on inheritance. This means that there's a base scene graph node class from which special nodes, such as transformations, models, lights and gameplay objects are then inherited.
· Spineless instead defines a scene graph node as a simple data container you can attach any properties to. Thanks to the dynamic nature of Python, properties can easily be added to and deleted from nodes at runtime. Defining your own properties is as simple as assigning any value you define to a member attribute of a node. All logic in the scene graph is in the algorithm walking the graph, so you never have to modify or subclass the base node class.
· Spineless offers a unified resource manager interface with virtual file system and ZIP archive support for managing all resources. Currently fonts, models, sounds and textures are managed. Later, the resource manager will be reworked to be even more generalized.
Exporters for models
· Spineless uses its own XML-based format for storing and loading models. Currently there's a 3ds Max exporter available, which should work with at least versions 6 and 7 of the program. A Blender exporter coming in the next release.
· Pygame (1.7 or later recommended)
What's New in This Release:
· Major feature enhancements