GAMS: A Game Framework for Multi-Surface Environments
Goal. We will create the basic tools that make rapid prototyping and building of multi-surface games possible. We will also create a set of working games that demonstrate the new interaction possibilities for multi-surface GAMS-based games.
Problem/Motivation. Today, many people use several surface devices as part of their day-to-day lives. In the near future, we expect that touch and/or gestural interactions will be available on many televisions and computer monitors. All of these devices are platforms that enable games to be played. However, game developers lack the basic programming infrastructure to support them in building video games that can leverage multiple surface devices working in concert. Without this basic infrastructure game developers are not able to explore new gaming interactions and mechanics that could be possible in multi-surface environments.
We imagine multi-surface games that can be designed for multi-surface environments, without the need for substantial setup and using any interactive surface that can run a modern web browser. There are three main parts in a solution to this problem: 1) identifying a basic set of game mechanics and interface widgets that are commonly used in games, 2) extending our work on the WAMS library to provide support for these widgets and interactions, and 3) creating a number of well-documented example games and tutorials that show how multi-surface games can be designed and built using GAMS.
Approach. We envision multi-surface games that allow users to naturally interact with game content using gestures and multi-touch interactions, which leverages a device’s position within the physical environment. For example, imagine sitting down to a card game with friends around a large table display. Your cards are displayed on your mobile phone. You might shuffle the deck by shaking your phone, and you might deal cards by flicking them towards your friends.
GAMS will extend our previous WAMS API that was built in Javascript, HTML5, Node.js and WebSockets to provide a relatively simple means to create multi-surface applications. We will extend this framework to support game designers and developers, by providing a set of game specific widgets that are common to many games (e.g., widgets for displaying time, scores, mini-maps, etc.) and that display information appropriately for multi-surface environments (e.g., by accounting for orientation and position). Further, we will add support for mechanics that are key to many games (e.g., basic 2D and 3D physics, and collision detection).