A bot that lets Discord users play games collaboratively using an emulator.
Currently has NES, Gameboy, and GBA emulators.
I don't endorse piracy. Get your ROMs legally.
-
Create a
config.jsonfile, with the structure:{ "token": "your discord bot token", "prefix": "-", "speed": "1x" }speedis one of:"0.5x","1x", or"2x"for speed multipliers"fast"waits 1ms between frames"faster"usessetImmediatebetween frames"fastest"doesn't wait between frames
This is to control CPU usage, so you can balance between CPU consumption and bot delay. If omitted,
"1x"is the default. -
Create a
romsfolder, and place your ROMs in there. -
Create an
index.jsonin that folder as well, with the structure:{ "game1": { "file": "game1.gb", "emulator": "gameboy", "initdelay": 1000, "delay": 60, "pressFrames": 4 }, "game2": { "file": "game2.nes", "emulator": "nes", "initdelay": 1000, "delay": 60, "pressFrames": 4 }, "game3": { "file": "game2.gba", "emulator": "gba", "initdelay": 1000, "delay": 60, "pressFrames": 4 } }initdelayis the number of frames the game takes to start up and get to the title screen or any other preferable interactive statedelayis the number of frames to advance after each keypress, for example the time it takes your character to walk one tile in PokemonpressFramesis the number of frames to hold down the button for
Commands:
{prefix}start {game}- Start or restart a game with the specified name.{prefix}list- Lists all available games.{prefix}save- Uploads the current save state.{prefix}load- Loads the attached save state into the emulator.
When a game is running, buttons can be pressed by sending (case insensitive):
abstartselectupor^downorvleftor<rightor>
The bot can be restricted to one channel only through permissions. Disallow the bot from reading and sending messages globally, and enable those permissions for the bot in only the desired channels.
If the bot has "Manage Messages" permissions, it will delete messages used as input to reduce spam.