Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/richardlt/matrix

Video game console operating system that displays on a RGB LED matrix.
https://github.com/richardlt/matrix

arduino golang grpc hacktoberfest led-strips nodejs polymer raspberry-pi react redux socket-io

Last synced: 24 days ago
JSON representation

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

Awesome Lists containing this project

README

        

#  Matrix

[![Go Report Card](https://goreportcard.com/badge/github.com/richardlt/matrix)](https://goreportcard.com/report/github.com/richardlt/matrix)

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](https://github.com/richardlt/matrix/releases). 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.
```sh
$ dpkg -i matrix.deb # for Raspbian/Debian users
$ service matrix status
```
```sh
$ 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
```

3. 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](https://github.com/richardlt/matrix/releases).

## Development setup (linux/darwin)

1. Requirements.
* [Go](https://golang.org/dl/) (version 1.17+)
* [Node.js](https://nodejs.org/en/download/) (with npm, version 16+)

2. Install JS projects dependencies.
```sh
$ make install-all
```

3. Run it.
```sh
$ 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)
```

4. Open emulator at http://localhost:3001 and/or gamepad at http://localhost:4002.