Inspiration
Since its' release in 2001, Super Smash Bros. Melee has enjoyed one of the most devoted fanbases of any video game, with many fans deliberately eschewing its' newer versions and opting instead to play it more than 15 years after its' release. A cause and consequence of this devoted following is challenging gameplay and a difficulty curve that is less than welcoming to the average casual player. This project aims to help casual players quickly become proficient in Melee, one move at a time, so they too can enjoy this masterpiece.
What it does
This program uses basic machine learning techniques to isolate weak moves and combos in a player's gameplay, and will inject elements into the user interface to help them become aware of what went wrong, as well as provide quick opportunities for practice, both against CPU and human opponents.
How we built it
MeleeTutor runs in parallel to the Dolphin emulator, a Nintendo GameCube emulator capable of many more calculations per second than the GameCube itself. At every frame of play, the program pulls key variables out of the GameCube memory held by Dolphin and analyzes it for key patterns. If it sees what it believes to be the beginning of a mistake, it triggers a QT-based interface addition to pop in over Dolphin's rendered visuals, warning the player of the error.
Challenges we ran into
Even back in the days of the GameCube, Melee produced a staggering amount of data per frame, both visual (screen image) and non-visual (hit points, connecting attacks) and sifting through all of it in less than 1/60 of a second is no small task. Originally, we tried to inject code into Dolphin's GameCube memory, but this proved to be impractical, as did changing the disk data itself. In the end, the best way to do it was to go into Dolphin itself and look at its' active memory, not just the memory of the emulated GameCube inside it. The data Dolphin was currently processing was more likely to be new, and thus telegraph a mistake, meaning we could process it in a shorter amount of time.
Accomplishments that we're proud of
At the end of this project, we now have a supplement to Melee that will learn from the gameplay it sees, analyze your performance on the fly and notify you every time your technique falters. Not only is this done with a complicated fighting game, it also doesn't break immersion, slow down gameplay, or interfere with in-game action.
What we learned
We learned a lot about reverse engineering memory, as well as quickly analyzing unpredictable data within narrow parameters. There's only so much time and so much range in a CPU rendering a fight at 60 FPS!
What's next for MeleeTutor
We want to add more characters, support for more arenas, improve the AI of enemies, as well as polish up the interface and make it more seamless with the actual game
Log in or sign up for Devpost to join the conversation.