Originally slated for the smart table was a very limited number of games and applications, namely time, date, weather, and "Snake." The original intent of the table was for it to be a digital information platform. However, the developers discovered that the multicolor display left a lot of room for creativity, which invited for vibrant and colorful applications such as arcade-style video games and animations. Thus, the vision of the smart table transformed into that of a game and multimedia table.
The final software implementation of the smart table included a host of games and demo applications. As shown in the figure the visual appearance of the selected demo applications "party mode." The left column of images shows the menu entry of the demos, and the right column of the image shows the runtime behavior of the selected demo. The demo applications were included to emphasize the hardware and software capabilities of the smart table without requiring significant user input.
This is a simple zero-player game which only requires the inital seeding to "play". As the app is designed, there are presets able to be used or the user and define the seed manually with the controller.
This application takes in time data from the external android controller and displays the time.
This application is mostly a proof of concept of using a gif and displaying it. The gif is split into separate bitmaps and is parsed externally before being included into the microcontroller. This possibly could be expanded to on chip parsing if SD card support was added.
This application uses a noise generation application to generate its output. The user can control the functions hue, "zoom factor", and base brightness level. The function being used is a turbulence function that is used to procedurally draw clouds.
Among the other applications included on the smart table are a variety of single-player and two-player games. These games were designed with user interactivity and engagement in mind, and make heavy use of user input. They include Snake, Block Drop, Tron, Go, and Space Invaders, and a detailed discussion of each game can be found below.
This is the standard "Snake" game, in which the player controls a snake that grows after eating food. The food is placed in a random spot and the player dies if the snake intersects itself or crosses into a wall. This game is only single player but is expandable to two player.
This is a "Tetris" clone and supports two players. Implemented is scoring keeping, next block, and adding in a second player in the middle of the game.
This game is essentially the Tron lightcycle racing and is strictly two player. The objective of this game is to force the other player to impact into a wall or the trail your "lightcycle" leaves behind it.
This game is also known as Chinese checkers. The board implemented is the standard 13x13 training board size. The game does support checking for valid moves and gives visual clues for the player's turn. This game additionally is strictly two-player.
This is a "proof of concept" game, it is roughly a clone of "Space invaders with a hint of Galaga". This game demonstrates the possibly of using pixel art, various animations, complex layered drawing, and complex hit detection. This is a strictly single player game, and shows the potential of larger scaled games being implemented on the framework.
Future design iterations includes: optimizing the downtime caused by the "waiting for frame to draw" by using double buffering, offloading expensive computations such as noise to the second core, switching the bluetooth polling over to interrupt driven, and cleaning the code in the apps as some are "proof of concept". As such this implementation has a number of shortcuts taken due to time constraints.