github.com/richardlt/matrix

Video game console operating system that displays on a RGB LED matrix.


Keywords
arduino, golang, grpc, hacktoberfest, led-strips, nodejs, polymer, raspberry-pi, react, redux, socket-io
License
GPL-3.0
Install
go get github.com/richardlt/matrix

Documentation

 Matrix

Go Report Card

Video game console operating system that displays on a 16*9 RGB LED matrix.




Existing softwares

Name Description
Demo A demo software that uses all drivers from the SDK.
Yumyum Eat all the candies with your monster to win the game.
Clock What time is it?
Zigzag Turn left then right, eat candies but not yourself.
Draw For those who like pixel art.
Device The Device software allows you to change the luminosity of the LEDs.
Blocks A puzzle game, score a maximum of points by clearing complete lines.
Getout A labyrinth game, try to get out if you can.
Rollup dice Random dice generator (https://github.com/gwenker/matrix-rollup-dice).
Animate Player for animations generated with Glediator (http://www.solderlab.de/index.php/software/glediator).
Light Simple software to generate mood light.

Matrix types

There are 3 main types that exists in Matrix's sdk:

  • A display receives a live stream of frames from core.
  • A player sends actions for a slot to core, an action is a button press/release event.
  • A software receives player's actions from core and use sdk's rendering features to generate frames in Matrix core.

Matrix components

Name Description
Core The heart of the Matrix system that managed software's lifecycle. All softwares, players and displays are connected to core.
Device The component that interacts with usb controllers and Arduino.
Gamepad A web application that contains a virtual controller with display.
Emulator A web application built for development purpose. It displays Matrix main screen and player's screens.

Production setup

Matrix is designed to run on a Raspberry Pi (at least model 3), it is composed by multiple softwares (core, device, gamepad...). All softwares can run on the Raspberry Pi but you can also start a software on your desk that will communicate remotely with the Matrix's core (with flag --core-uri).

Here are the few steps to install your own Matrix:

  1. Download Matrix latest release here. If you want to install it on Raspbian or Debian there is a .deb file available that will create a service to start Matrix automatically at boot.

  2. Extract/install and run Matrix package.

$ dpkg -i matrix.deb # for Raspbian/Debian users
$ service matrix status
$ unzip matrix.zip # for others
$ cd matrix-package && ./matrix-[REPLACE_DEPENDING_OS] start --log-level info --gamepad-port 80 core device gamepad emulator demo zigzag yumyum clock draw blocks getout # select the right executable depending on your os 
  1. Install firmware on the Arduino from file in Matrix source code (inside folder at ./device/firmware/firmware.ino). Source code can be downloaded from release.

Development setup (linux/darwin)

  1. Requirements.
  • Go (version 1.17+)
  • Node.js (with npm, version 16+)
  1. Install JS projects dependencies.
$ make install-all
  1. Run it.
$ go run main.go start --log-level info core gamepad emulator demo # you can start all other softwares by adding their names
$ (cd emulator && npm start)
$ (cd gamepad && npm start)
  1. Open emulator at http://localhost:3001 and/or gamepad at http://localhost:4002.