Page 1 of 1

Shapes Alive. Free simple 2d sandbox.

Posted: Sat Mar 24, 2012 1:13 pm
by Nibo
Hello. First of all, I want to say thank you for Chipmunk library. It is really interesting and relatively easy for me, novice in programming, to work with it.

While learning programming with Python, Cython and Chipmunk I made this 2d sandbox. I can not guarantee that it will run on all systems, but you can try.

Here is demo video: http://www.youtube.com/watch?v=7eq1QdTEbI4

Download at http://www.mediafire.com/?wcqpwc5qjjvy1c6
See included SA_manual.pdf for instructions and full list of used libraries.

Requirements:
GPU supporting OpenGL 3.3
Windows OS

Features:
- draw various shapes: lines, circles, rectangles, polygons, chains and free shapes
- destruction of polygons and circles, can be turned on or off
- edit shape color, elasticity and friction
- connect shapes with joints
- motor joints
- shape can emit other shape with various options
- merge several shapes to one
- copy shape or group of shapes
- use configurable grid for precise drawing
- set gravity or turn it off
- set speed of a simulation
- pause mode
- save/load you creations

Limitations:
- there is no sound
- simulation runs at constant rate (60 FPS). If your FPS will drop below 60, simulation will run at slower speed
- memory management is not very good. You might want to restart launcher if you open and close levels many times

Re: Shapes Alive. Free simple 2d sandbox.

Posted: Thu Apr 19, 2012 3:30 am
by brettc
The demo looks great (love the music). I'm on a Mac, so it won't work here. Do you intend to make the project open-source?

Re: Shapes Alive. Free simple 2d sandbox.

Posted: Thu Apr 19, 2012 7:16 am
by Nibo
Thanks, but I don`t think my code is ready to be open. Its one huge .pyx file with all functions and classes in it, and contains adapted parts of many different on-line tutorials and examples that I used while learning. Also it has many mistakes and bugs. For example, apparently I did not set up construction-destruction cycle for objects properly, because I do not fully understand how objects work in Cython... :oops: