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:
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.
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
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.
$ 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)