"Air Hockey" is a two-player, touch-enabled table game programmed in WPF using the Microsoft Surface SDK Manipulations and Inertia processors. Each game piece (one puck and two mallets) has it's own Manipulations and Inertia processor, and those processors handle all of the touch interactions in the game. A GameTimer is used to check for collisions and scores as the game is played.
"Bubbles?" is an interactive game for the Microsoft Surface multi-touch table. The goal of the game is quite simple, get a number of bubbles into a goal area. The player uses indirect manipulation for controlling the game, creating a vector field of energy to guide the bubbles from a starting point around walls to the goal before time runs out.
Since the goal for this project was to create a fun game, interaction was kept minimal. The easy to learn interface allows anyone to walk up to the table and start playing. Players touch the table and drag to create an input into the wind vector field. The direction of the energy injected into the simulation is controlled by the vector between the starting touch point and where the finger currently is. The amount of energy
is the length of that same vector. Levels are set up so that the bubbles have to navigate around many walls, and thus require many inputs into the simulation. This leads to a natural cooperative multiplayer environment, as you need to have more than one person creating the inputs in order to beat the time limits.
The game is based on the concept of "Calvinball," a sport played by the characters of the comic strip "Calvin and Hobbes." Calvin Ball shares many of the original Calvinball game’s ideals, such as a randomization of rules, difficulty in keeping score, the absence of teamwork, and no need for athletic ability. However, while the original game consisted of a good deal of running around, throwing things, and arguing, this new game has been designed specifically for the Multi-Touch enabled Microsoft Surface and under normal circumstances does not involve any of the previously mentioned activities.
The basic premise of the game is as follows: each player selects a color at the beginning of the game and is tasked with keeping any balls of that same color from leaving the screen. This is done by moving a colored "paddle" around on the screen with the idea of bouncing the ball off the paddle to redirect it. Periodically the ball will change colors, at which point it becomes the next player’s responsibility to keep the ball on
the screen. "Winning" is accomplished by successfully keeping the ball from exiting the screen with higher amounts of success than the other players. Other than these basic objectives, players are not told what the rules are, but are left to figure them out.
Multiple users digitally create music with "Drum Machine." Instruments can be added or removed by toggling the instrument panel (bottom side of the screen); these are simple surface buttons. When an instrument is added, a "button bar" for that instrument displays 4 sets of 4 16th notes.
The "button bar" controls reside inside of scatterview items, and each button knows whether it is activated or not. The button bar keeps these in an array indexed by which beat the button is attached to. The main program loops through all active button bars and notifies them of a beat change (through a simple function call). The button bars do some simple logic to highlight the "current" beat and play any sounds associated with the bar on that beat.
The tempo is controlled by a slider (in this video at the bottom middle), which feeds into a function that calculates the time value for a single 16th note. The program is quite simple in its core: it watches how much time has passed since the last visual frame and clicks over to a new "beat" if enough time has elapsed.
Lightwell is at its heart a rhythm game. The goal of the gameplay is to gather as many points as possible while bouncing back objects that correspond to musical events in the underlying song. There are three basic components to the gameplay: the playing field, the blips that travel through it, and the shuttles that surround it. Players control the shuttles directly by touching and dragging them into place in order to reflect the blips back into the center of the playing field.
The blips correspond to musical events in the underlying musical track. As long as they are successfully reflected back to the center, the underlying music continues to play. As soon as a blip is missed, its corresponding track is muted by 50%. If two blips are missed in a row, the track is muted completely. Play continues until the song is complete, which is detected by the MIDI sequencer finishing the sequence file, with no regard to how many tracks are muted or blips are missed. There is no way to "fail" a song in Lightwell, though it is possible to get an unsatisfactory score. I had toyed with the idea of a health system such as found in nearly every rhythm game, but I wanted all levels of players to be able to successfully interact with the game and complete songs without fear of failure.
RoBo Wars (RW) is a real time strategy game (RTS) that can be played on the Microsoft Surface. We call this genre of games multi-touch real time strategy games (MRTS). The game was designed to be a cooperative game between two players versus artificial intelligence. It was set in the second world war and the players played as Allies (US and UK). The goal of the game was to destroy the enemy headquarters (HQ). The two players would control a variety of units to win the game. The game can currently be played with one map.
The players have an US HQ and a UK HQ on the bottom island of the map. These HQs are indestructible and can spawn different units. To make the game more interesting we decided to set a limit on the number so units that can be spawned at any time. We set the limit to 10 units at any time. As units die, new ones can be created. However, after creating a units there is a 5 second time delay. This forces the players to use the units carefully.