Gulls is a project that I worked on during a collage Erasmus trip to Finland. Me and five others got to work along 'CSE Entertainment' using there 'IWALL' system. I lead the team of five to design and produce a prototype of the game.
The IWALL is a platform based off the Xbox Kinect.
The system was created as a way to get people active and I feel that with Gulls we defiantly achieved that, By just playing the game for a short period you can tell your getting quite an exercise.
The flapping system was made by comparing the combined difference in height values for both arms from one frame to the next. This value would then be multiplied by a power curve that would exaggerate movements in both the low end and the high end with slow flaps not doing much and fast flaps doing a lot
In the next step we rotate the bird into the correction direction. The way you could control the rotation of the bird was by either lowering one of your arms, i.e. if you lower your left arm you will turn to the left, By doing this you lose quite a bit of height, so another way you can turn is by tilting your entire body which results in more of a yaw turn and not losing so much height.
One thing that we found through testing is that its much easier to control the bird if it levels out automatically after the player has recentered there arms.
After the initial forces are added to the bird and the rotations calculated we add the custom gravity function. This is simply a downward force that is multiplied by how much the bird is diving so that you pick up speed as you dive.
For testing purposes we had gamepad support which enabled us to test all aspects of the game without having to stand up and use the Kinect every two seconds. This also proved to be quite fun so we kept the controller support in for anyone who doesn't have a Kinect but would still like to try out the game.
The Kinect controls where done by getting the location of two spine points as well as one each of the hands and using trigonometry to determine the angle. This angle was then clamped within a range and normalized so that we are left with a value between 0-1. This was then passed through to the movement system.
For changing and tweaking certain functions of the game I made a game controller script, This is where I would fine tune spawn rates for pickups and set the amount of players as well as whether the Kinect input system was enabled or not. Having a custom GUI for this was very helpful.
The three pickups that where in the game where Coin, Extra time and Speed boost. Each one was vitally important to collect in order to do well in the game.
This is the script that deals with colliding with a pickup and getting the desired effect. It uses a switch on Enum to determine what should happen. It also sets the pickup type to blank which clears it from the scene, ready to be respawned again later.