Display local scores of Slippi-based instances of Super Smash Brothers Melee on an LED matrix.
Meleetrix is a lightweight Python script to display information received from vinceau's slp-realtime library on a 64x64 LED Matrix. The character, color, percentage, and number of stocks are presented in a scoreboard-style layout. Games played on consoles running Slippi Nintendont or through Slippi Dolphin are supported.
Running this project requires a Raspberry Pi and a 64x64 LED display.
The hardware this project was developed and tested with is listed below. Where applicable, links to the product's page on Adafruit have been listed. As of writing (August 2023), you may have difficulty finding the Pi 3/Pi 4 available for sale outside of the secondary market.
4P Games (List): Image
3P Games: Image
2P Games: Image
Winner Screen: Image
Pregame and Postgame: Image
For a great guide on the parts required and their assembly, see the wiki provided in the mlb-led-scoreboard library, linked here.
Note that the guide mentions 32x32 and 64x32 displays, while this project only supports 64x64 displays. Using a 64x64 display with the Adafruit bonnet does require a small amount of soldering; specific instructions for this are available on Adafruit. Adafruit has several different versions of 64x64 displays available, each with varying space between each pixel (called 'pitch'), which changes the overall size of the display. Consider choosing a pitch based on your expected viewing distance from the display - the closer you are, the smaller your pitch should be.
Outside of the linked microSD card, these are the parts used for the example photos provided:
The files included in this repo are designed to run directly on your Pi. Using your Pi directly or through SSH, enter the following commands into bash as needed.
If Git is not already installed on your machine, install it now:
sudo apt-get update
sudo apt-get install git python3-pip
Next, install this repository and its requirements:
git clone https://github.com/ttroy1/meleetrix
cd meleetrix
pip install -r requirements.txt
To run index.js, install slp-realtime. rxjs
and @slippi/slippi-js
are both peer dependencies of slp-realtime. See instructions regarding slp-realtime installation here.
Dolphin
- Find the IP address of your personal computer. If unsure on how to do this, consider using an application such as Angry IP Scanner to see all of the devices on your network.
Console
- If using a console, see Nikki's Slippi Console Mirroring Guide. Installations of Homebrew and Nintendont Slippi on your Wii are prerequisites for mirroring. Separate documents on how to set these up are linked to from the mirroring guide.
Once you've obtained the IP address of your device, add it as the Console Address or Slippi Dolphin Address in Meleetrix's config.json file, located in the repo's home directory.
Be sure to update the Active Connection Type field to the appropriate value as well. For more information on config.json and customization, see the Customization section of this document.
Two small shell scripts have been provided to get started, both of which are located in the library's main folder. You may want to modify the stop.sh script if it will interfere with similarly named processes from other applications.
I recommend against starting the script while a game is in progress - while slp-realtime will generally catch up to the current game state, there can also be unexpected behavior.
Start Meleetrix
bash run.sh
Stop Meleetrix
bash stop.sh
There are several elements within Meleetrix available to be customized by the user. In the project's home directory, an example config.json file has been provided that contains each of these fields. The options available for each of these elements are outlined below:
Name | Description | Path | Type | Example |
---|---|---|---|---|
Backgrounds Active (General) | Toggles whether background colors are enabled as a whole, which includes the default character/color-specific backgrounds. | colors:backgrounds_active | Bool | true |
Custom Backgrounds Active | Toggles whether character/color specific background colors are enabled. The provided default background colors will be disabled as well. | colors:custom_backgrounds_active | Bool | false |
Background Colors (Character/Color Specific) | A dictionary of character/color specific background colors. The full list of character/color names can be found in the meleetrix/assets/icons folder. | colors:custom_char_bgs | Dict | {"falcon-green": [14, 74, 46]} |
Custom Foregrounds Active | Toggles whether character/color specific background colors are enabled. | colors:custom_foregrounds_active | Bool | false |
Foreground Colors (Character/Color Specific) | A dictionary of character/color specific foreground colors. The full list of character/color names can be found in the meleetrix/assets/icons folder. | colors:custom_char_fgs | Dict | {"falcon-green": [255, 255, 255]} |
Toggle Border (General) | While in list view, toggles whether borders are displayed around each player's section. | colors:borders_active | List | false |
Border Color (General) | If borders are active, the color provided here is what will be displayed. | colors:borders_rgb | Array | [255, 255, 255] |
Toggle 4P Grid View | Toggles whether list view or grid view is used for 4P gameplay. By default, grid view is enabled. | grid_view_4p | Bool | true |
Active Connection Type | Used to determine whether you're using a console or Dolphin-based connection. | active_conn_type | String | "dolphin" or "console" |
Console Address | The IP address of your console running Slippi Nintendont. | console_address | String | "192.168.0.0" |
Slippi Dolphin Address | The IP address of your PC running Slippi Dolphin. | slippi_dolphin_address | String | "192.168.0.0" |
This project is pretty barebones as is - there's a lot more that could be done with the information provided by Slippi. As such, pull requests and issue submissions are welcome.
If you like this project, consider supporting those in the Melee community who made it possible:
This project uses the MIT License.