An Autonomous World where participants use a 1985 Nintendo console to create stories together
The final product of the Mudtendo project is a MUD app where users can play old Nintendo games (and anything else the NES console can run) with a couple of twists:
You can restart your game of Super Mario at the last checkpoint before you died, or you can start it from someone else's checkpoint if that's more interesting. It's like one of those confusing time-travel movies--you create an alternative game reality with every move.
The UI is simple, you have a display where the game gets rendered and a graph linking every checkpoint to its predecessor.
The way checkpoints are linked together is reminiscent of how blocks are chained together in a blockchain--and similar in implementation! But, unlike a blockchain, there is no built-in consensus or canonicity. It's up to the participants to decide which story they continue or fork.
Mudtendo uses an open-source NES (an old Nintendo game console) emulator written in Go I found on Github and slightly modified.
The emulator goes into two important places: the web client and the chain.
First, I compiled the modified emulator and some paraphernalia to WASM so it could be run from the browser. The client uses it to run game sessions before sending them to the chain.
Second, I built a custom layer-2 rollup using the OP Stack and the Concrete Framework that had that same emulator as a precompile. The Mudtendo smart contracts use it to validate game sessions and store checkpoints.
Finally, I put both of these together using MUD for state management and Phaser for rendering the UI.