This project is intended for student outreach to demonstrate how much fun you can have with a Raspberry Pi and some hardware. Currently the focus is developing a Roguelike (loosely following the /r/roguelikedev tutorial series), however there are a handful of other demos that are half-developed as well!
- Flaschen-Taschen for communicating with the LED panel / simulating the LED panel
- Python 3 - see
requirements.txt
- libatlas (for BDF font parsing)
- python-tcod dependencies
My hardware setup comprises the Adafruit 64x64 LED panel, a Raspberry Pi 4, and an 8bitdo NES controller (my model appears to be deprecated). You can most likely use any Raspberry Pi that can hook up to the panel and any USB device that the Pi can recognize, though you may need to remap the keys (i.e., look up the keycodes and update the various KEYCODE
dictionaries).
Run sudo bash start-server-command.sh
(simple script to kick off ft-server
). Ensure all IP addresses and ports make sense for your setup (localhost if on the same device, IP address if not, etc.).
Note - ensure you clone the Flaschen-Taschen repository and put it at the same level as the LED-Display repository - or modify the paths inside the bash script to reflect your setup.
- Open a separate terminal and run
bash start-terminal-server-command.sh
- Run the roguelike demo via:
python3 led-main.py --autostart=RL
- A GUI will popup that simulates a controller - this seemed to be the easiest way to capture user input without scraping all input events.
- As it stands, only the roguelike is setup to run in simulated mode.
- Currently the game is waiting for a keypress to kick off. Hitting the
.
on the controller is a decent way to start.
- L (period) - wait/rest
- VI keys / D-pad - 8-way directional movement
- L+R - quit
- R - win! (debug)
All keys will trigger a time step, so pressing a key that is not mapped will cause enemies to move. At present though this doesn't trigger a rest.
- Significant code cleanup - right now there are several disparate projects being developed with the hope that an API will magically coalesce - I have some thoughts here but haven't had much time as I wanted to get things working first.
- Write up a clear bill of materials and setup guide.
- Harden the hardware installation so that it can be used and abused in a public space.
- Write a better hand-holding set of steps in this guide.
No pictures - bug fixing!