Telemelt is a web-based multi-emulator (RetroArch/libretro) designed to recreate the experience of playing console games with a single controller in a room full of friends.
Gathering around a TV and collectively attempting to beat a game has been a consistent joy throughout my life, and is one of the rituals I miss the most with the ones we're separated from right now. I wanted to create a way to play single player/hotseat games with friends remotely that was free and required minimal setup. Netplay has always been unsatisfying for this, since only the host had low enough latency for games that require tight timing. I started this project in March, and have been pouring my heart into it every day possible since then.
The system skips traditional netplay to allow a single player to assume host responsibility and experience zero network latency for games with demanding response times, with the viewers processing frames as broadcasted by the player. The virtual controller/host can be instantly passed to any user in the room.
Designed to be lowest hassle way to play emulated games with a friend or loved one, even if they are not tech savvy!
- No port forwarding, no IP addresses thanks to auto-generated URL
- No installation or downloads, everything works in browser
- Mappings for common/inexpensive controllers (PS3/4, XB360/1, Switch JC/Pro etc..) on both USB/BT thanks to RetroArch bindings
- Always free! No tracking, no logins, no paid advertisements - personal budget allocated for Azure costs to serve thousands of users for months
Focus on the experience of passing a single controller between people
- This allows for a unique and efficient architecture that provides a consistent experience with minimal bandwidth
- No AV is transmitted! Only controller and serialized state data, made even smaller by schemapack
- User state error checked per frame and reconciled via socket.io server if needed
- Takes advantage of deterministic nature of certain libretro cores - like a broadcasted TAS
- Rethink the kinds of content you would play (painting, music collaboration, RPGs, game shows)
- Everyone working towards the same goal keeps people engaged
Quick start - Open up a Discord/Zoom/Meet etc.. with friends and try some of these!
- Minigame collections (player transfer system is fast enough to keep up with switching on every stage)
- Practice for a week then hold live olympic games (world/winter/summer/california games etc)
- Live sound test or NSF/VGM listening party
- Homebrews, hacks, and live demoparties (with live reactions)
- Golf / bowling / fishing games to chill
- Create music collaboratively in LSDJ/NTRQ
- TV Gameshows
- Painting games (mouse support!)
- Grind through an rpg over a few weeks (savestates work great for this!)
- Alternate copiloting an game no one has played before on gamefaqs
- Hotseat tactical / turn based games
- Teach a friend to speedrun with the ability to demonstrate and practice together
A platform to experiment with multi-user experiences
- NESpectre support – crowd control of a game by manipulating memory on the fly
- Reaction system with live sfx
- Frame accurate split timers
- Super Russian Roulette Online
- Homebrew and demo content library built in to showcase personal work
- Double Ferrari, music ROM albums
- Live read for updating CSS elements using game RAM
Telemelt is built on an Azure DevOps build and release pipeline, and takes full advantage of Azure Container Instances, Functions, Container Registry and AppInsights/Metrics to scale, handle matchmaking, and serve static assets