In the beginning there was Soya3D, but it has many limitations:
- Soya's pure Python render loop is slow and prone to instability
- implementing animation with begin_round and advance_time is confusing (and slow)
- Soya uses the obsolete OpenGL 1.0 Display List method which made meshes immutable
- Soya's API is cluttered and with many poor choices for class names
- development on Soya3D is slow due to lack of skilled and active leadership
The author of Soya3D rejected many proposals and patches to address these problems at their core. Instead new features, such as ODE physics and the Pudding widget system, were added as auxiliary and thus did not address the core problems. Indeed, the Soya3D engine has seen little improvement over the past four years.
PySoy was started Summer 2006 to address these problems, first as a fork, and later as a complete rewrite. We've come a long way:
- threaded, efficient render+physics cycle rivals mainstream game engines
- soy.meshes.Mesh objects are dynamic and fast using Vertex Buffer Objects (VBOs)
- clean, intuitive, and well documented API makes learning easy
- 1D, 2D, and 3D textures, video textures, and multitexturing effects
- advanced physics effects including fields, joints, and fast collision detection
… but we're not done just yet. We need your help to get there. Download and install the source, help track down bugs, suggest new features and API changes, help improve our documentation by
Talk us up on #PySoy on irc.freenode.net, grab the source from our download page, and help make the future of Python 3D gaming!
