project screenshot 1
project screenshot 2
project screenshot 3

Mudtendo

An Autonomous World where participants use a 1985 Nintendo console to create stories together

Mudtendo

Created At

Autonomous Worlds

Winner of

🥇 Optimism — Mod the Stack

Project Description

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:

  • Gameplay takes place in very short sessions, each of which gets sent to the chain for validation and creates a "checkpoint" of its end state.
  • Any player can start a game from any checkpoint, past or present, that any other player has created.

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.

How it's Made

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.

background image mobile

Join the mailing list

Get the latest news and updates