Skip to content

Features

Andreas Rottach edited this page Apr 9, 2018 · 11 revisions

The LEDTableEngine is a flexible C++ framework for linux-based LED-Matrix-Displays that provides a simple programming interfaces to implement almost any kind of (multi-player!) game or visualization technique.

Displays

The modular structure enables the support of different types of displays.

  • Desktop-Rendering: As simulation environment for easy development of new applications directly on your computer! The Desktop environment is realized by using the SDL2 and SDL2Image libraries for rendering.
  • LED-Matrix-Rendering: Supports any kind of LED-Controller (tested with Diamex LED-Player S2) that supports the TPM2-Protocol. Currently a zig-zag layout of leds is implemented (line-wise, column-wise). The LED matrix can be mirrored along the x and the y dimension.

Input Devices

Similar to the display modules, the system supports different types of input devices. Keymappings can be modified in the configuration file.

  • USB-Keyboard: Allows you to control your LED matrix with a USB-Keyboard. Currently, keys for two players are supported on a single keyboard.
  • Custom I2C-Controllers: The actual Matrix-Table should be controlled by actual game controllers. Therefore I designed, 3D-printed and built two custom controllers with just a single circuit board inside.
  • Touch-Input: This feature is NOT implemented but planned for the future! If your LED-Matrix-Table contains IR-LEDs and -Sensors in each cell, the engine could be able to detect objects that cover individual cells. Therefore you have some kind of touch sensitive table which will provide a huge number of new possibilities.

Other Features

  • The engine also supports audio output by using the SDL2-Library. Currently only a specific audio format (WAV) with very fixed settings is supported. Have a look at audio.cpp.
  • The engine also supports a few basic settings (brightness, player count) that can be changed via the integrated menu structure. Currently, they are not persistent but this is on the TODO-list!
  • Automated Standby: Each application is able to go into standby. Currently this is only active in text menus. After a short period of time, where no user interaction occurred, the display goes black and the engine waits for a new user input to come back to life!
  • Palette vs RGB color mode: The engine supports two color modes. A more flexible RGB color mode and a restricted but easier palette color mode where a fixed color palette is used for rendering the final image.

Applications

Here is a overview over the currently implemented applications:

Games

  • Snake: The basic snake game, but with multi player support! Try to kill other snakes and look for food to grow!
  • Pong: A simple Pong implementation that allows player vs. AI or player vs. player matches.
  • Tetris: A Tetris implementation with the famous Tetris music and sound effects when placing stones.
  • FlappyBird: More of a test implementation than an actual game :)
  • Minesweeper: A custom version of minesweeper. Due to the lack of the possibility to draw digits into the cells, the number of bombs around a cell is color coded. The actual color bar is shown on the left and right side of the game field.
  • Conway's game of life: This is not an actual game, but shows the life cycle of cells according to Conway's rules. The lifespan of each cell is color coded. If the game field gets static, the animation is automatically reset to a new random cell population.
  • Connect Four: This is a 2 player game. Try to get 4 pieces in a line (row, column or diagonal), to win the game!

Visualization

  • Fractal visualization: An very basic implementation that renders a fractal with a fixed color map. Due to the low resolution, you can't see that much.
  • Image slide show: Automatically display and blend a set of downscaled images (only Bitmap: .bmp) that are stored in the res/ImageSlideShowApp/ folder of the repository.
  • Animations: This is more a collection of dynamic visual effects. Currently, the following effects are available: Water animation, color waves that change hue and saturation, circular water waves that start from a random point on the screen.
  • Board Games: This visualization renders static images of board games to the display. You can use this to e.g. play chess (with physical figures) directly on the table!
  • Clock: A simple low resolution analog clock! A digital version is on the TODO list!
  • TMP2-Playback: Play LED animation files, created and exported from your computer by using Jinx!. To export tmp2 files, have a look at this documentation (enable "redict to output file" in device settings). Place the exported tmp2 file (file extension .tmp2) in the resource folder.

Others

  • Menu application: Allows hierarchical menus and sub-menus. Each menu entry can have an individual implementation (adjust settings, start other apps,..)
  • Update App: This application is able to automatically update your software. It fetches the latest git repository from Github.com, compiles the project and restarts the engine on success after showing the green text "done". If something goes wrong, you see a red "failed" and the engine does not automatically restart. An error log is provided in the root directory of the repository.

Clone this wiki locally