You've tried  PyGame and it's great, but 2D is only good for retro games. Ready to step out of Flatland and into the world of 3D?

<!> We can be found on #PySoy on


Grab the latest version from the download page. If using Windows, the installer contains all the dependencies.

If using GNU/Linux, check if you have a prebuilt PySoy package available for your distribution. This is the easiest way to install. If not, grab the source, unpack it, and install the dependencies listed in INSTALL . On some distros that also means the -dev packages. Then run python install . If all the dependencies are installed you should be able to start using PySoy in under a minute.

Windows and Widgets

To display anything you'll need to setup a window or three. Don't worry, it's easy. Just start a Python interactive shell and type these commands:

>>> import soy
>>> screen = soy.Screen()
>>> win1 = soy.Window(screen, title="Foo")

Black windows are not very fun, so let's change that one to a blue and create a new one with gold background and different size:

>>> = 255
>>> win2 = soy.Window(screen, title="Bar", background=soy.colors.Gold(), size=(400,700))

Got PIL? Load your favorite image and toss it onto the second window:

>>> tex = soy.textures.Image(img) # img is the image object from PIL
>>> can = soy.widgets.Canvas(win2, tex)

But a Canvas isn't 3D, for that we'll need a 3D Scene, a Camera, and a Projector to display what the camera sees onto the second Window:

>>> scene = soy.Scene()
>>> cam1 = soy.bodies.Camera(scene)
>>> pro1 = soy.widgets.Projector(win1, cam1)

Nothing happened? We need something in the scene for the camera to view first:

>>> cube = soy.bodies.primitives.Cube(position=(0,0,5), rotation=(1,1,2))