Smart Table
UCF Group 34

The Application


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.

Demo Application


Final Printed Circuit Board
Final Printed Circuit Board

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.

Conway's Game of Life

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.

Clock Display

This application takes in time data from the external android controller and displays the time.

Party Mode

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.

Cloud Display

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.

Game Applications


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.

Snake

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.

Block Drop

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.

Tron

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.

Go

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.

Space Invaders

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 Improvements


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.


Gallery


Boot menu for "Party Mode"
"Party Mode" displays the party parrot
Output of the "Cloud Display" function
"Go" being played
"Conways Game of Life", custom seed
"Boot Menu" output, splash
Menu screen for "Snake"
Menu screen for the time function
Menu Screen for "Conways"
Menu screen for "cloud" generation
"Block Drop" / tetris being played
Lose animation for "Block Drop"
Menu screen for "Block Drop"
Menu screen for "Tron" in middle of animation
Menu select for the "Boot Screen"
Output of the "Space Invaders" game