# Python-Ogre

Python-Ogre is a Python binding for the OGRE 3D engine, designed to provide the functionality and performance of OGRE (written in C++) with the accessibility and ease of use of Python to facilitate the rapid development of 3D games and to make the OGRE engine more accessible to the beginner, who might otherwise be daunted by the technicalities of writing in the native C++. The performance of the engine is decreased in comparison to the original C++ demos, however the original OGRE engine provides such high performance that the performance of Python-Ogre is still more than acceptable for all but the most graphics-intensive games.

## Features

Python-Ogre is different from the Ogre3D engine it is based upon as it comes pre-bundled with Python bindings and demos for many other support libraries.

### Compatibility

Python-Ogre has compatibility for all platforms supported by OGRE:
* Microsoft Windows - Binaries are available at the Python-Ogre forums.
* Linux - Build instructions can be found on the Python-Ogre wiki. An Ubuntu binary is currently in development.
* Mac OS X - Build instructions can be found on the Python-Ogre wiki. Python-Ogre builds on both Mac OS X 10.4 “Tiger” and Mac OS X 10.5 “Leopard”.

## Support

The Python-Ogre wiki, contains build instructions for Windows, Linux, and Mac OS X platforms, as well as tutorials and example code snippets.
Ogre3D hosts the official Python-Ogre forum for helping developers in their use of the engine.

## History

The PyOgre project began in early 2005, where a Python binding for OGRE was first attempted using Boost.Python from the Boost C++ Libraries by two members of the Ogre3D community, Clay Culver and Federico Di Gergorio. This effort ultimately failed, which prompted the use of SWIG as the basis for the C++ binding. This method proved to be rather successful, providing to the community with a somewhat limited and error-prone implementation, but an implementation nonetheless.
In mid-2006, Lakin Wecker began work on Python-Ogre, based on the Boost.Python libraries, as was attempted before. This was developed alongside the PyOgre project. He was aided by Andy Miller, who then later took over development of the project with assistance from Roman Yakovenko, Joseph Lisee, and Ben Harling during the evolution of the engine.
Development of PyOgre was halted in mid-2007, and officially succeeded by Python-Ogre.
As of summer of 2008, Andy Miller was actively working on adding new features to Python-Ogre, as well as providing support and maintenance.
As of January 2014, the main website at python-ogre.org went offline, but wiki.python-ogre.org is still extant.

## Included libraries

The following libraries are either currently supported, or have at one point in time worked with the Python-Ogre engine. Support for particular libraries are noted in each release. Demos are available for all libraries listed, however, not all demos function, due to the constantly evolving codebase and limited number of active developers.

### Renderer

* Ogre 1.4.9 Legacy version
* Ogre 1.5 "Shoggoth" experimental software build
* Ogre 1.6 official release
* Ogre 1.7 "Cthugha" experimental build, including full DirectX 10 support.

### GUI

* BetaGUI—Compact and lightweight OGRE GUI library
* CEGUI—Fully featured general-purpose videogame GUI library
* Navi—HTML/CSS/JS-based OGRE GUI library
* QuickGUI—Easy to use, widget-based OGRE GUI library
* Hikari—Flash based OGRE GUI library

### I/O

* OIS—Standard OGRE input library, allowing buffered, object-oriented input

### Audio

* OpenAL—Cross-platform audio API commonly used with Ogre3D

### Physics

* Bullet—Full-featured physics engine with a feature set similar to that of proprietary libraries, offering both rigid body and soft body collision detection
* ODE—Open source rigid body collision detection library
* Newton—Offers real-world physics simulation, where accuracy and real-world physical parameters are desired over performance and newer features
* PhysX—Popular, proprietary, high performance, fully featured library
** NxOgre—Wrapper for the PhysX library and Ogre3D, with an editor and other helpful Ogre3D-oriented features

### Effects

* Particle Universe—Scriptable particle effects engine that helps create complex particle effects easily
* Caelum—Realistic sky, atmosphere, weather and lighting simulation
* LibNoise—Portable, open-source, coherent noise-generating library