MagnetoPong. Wir, der Chaostreff Tübingen, wollten mal was mit der Kinect machen und haben dementsprechend das Thema Magnetismus mit Pong und der Kinectsteuerung gekreuzt. Wie einige GPN-Besucher schon bemerkt haben, ist seit Samstag Nachmittag das Spielen bereits eröffnet. Programmiersprache ist C++, gestartet wurde Donnerstag Abend mit einem mehrstündigen Installationsbattle .. und soviel Code ist es nicht geworden. Viel Spaß beim Spielen und Erweitern! :)
How to compile
- Using Kinect: OpenNi with modules: Nite, Sensorkinect
- C++ lib for gaming purposes: ClanLib version 2.2
- Using our "make": scons (requires Python 2.7))
Tested on Mint 10, Arch, Fedora 15 64 bit (Repository may contain outdated ClanLib), (Windows 7 OpenNI works, rest has compiling problems)
Not running on OpenSuse 11.3 + old graphic card (outdated python in the repos, OpenGL >2.0 needed)
How to play
Get the system running in a not so bright room since sunlight reduces the Kinect`s vision.
Position yourself in the range of the Kinect. Form a psi-like shape so that the Kinect starts to take your measurements. A psi-like shape means you stand straight, face the Kinect and hold your hands up like in the western "Hands up!" Wait till the calibration is finished and a human-like shape appears in the game. (If the calibration seemingly takes too long depending on the abilities of your computer, move a little bit so that the Kinect may understand you as a human to be calibrated.)
The first player will be "right" and plays on the right side, the second player will be "left" etc.
The "right player controls the position of his ball-shaped pole with the right hand relative to the right shoulder and uses the left elbow angle to control its status. The pole`s status is shown as a corona around the players magnet. An elbow angle from 180° to 90° results in a turquoise south pole. An angle below 90° moves the pole towards the north and the angle of nearly 0°C results in a red marked north pole. The "left" player controls the position of his ball-shaped pole in the game with the left hand and uses the right hand to control the pole`s status.
Besides these two controllable poles in the game, the ball that needs to be moved in MagnetoPong is also a pole. It is initialized each time as an ideal south or north pole (indicated by its color) and needs to be moved to the others player`s field end.
There is a booster for each player in the game. If the booster is charged (see color bar in the respective player`s corner) the player can "boost" its pole`s might proportional to the distance she/he moves the body up. So jumping up is one possibility to start the boost. Bending knees and then jumping up covers a bigger distance and increases the boost.
Who will find the easter egg?
Calibration of the screen
The game can measure the length of each player`s arm radius to recalibrate the game display. This is done automatically when you stretch your ball moving arm to the left, to the right and back to the left while not moving your shoulder part. Basically the game measures the angle of your elbow here (near 180° degrees) and maps the size of the box to the distance your leading arm can stretch.
Have fun and don't twist your ankles or punch your adversary while playing! :D