I'm excited to announce a new side project I'm starting, a browser-based Magic: The Gathering (MTG) multiplayer application.
Why start this project? It is not because this is a new idea. There are plenty of ways to play MTG online, the closest thing to what I'm planning to build is untap.in I'm building this to learn new technology I'm interested in but don't have experience with. It also is an ambitious project that can expand or contract in scope depending how much time/motivation I have. There is the off chance this will result in the best way to play MTG online, but that is unlikely.
I will be building this application in an open source repo over on my github, and will be blogging along the way as I add features for anyone that wants to follow along.
For those that don't know, MTG is a strategic card game. I was introduced to the game in 2020 and have been obsessed since. It has many variations (called formats) one of which is Commander or Elder Dragon Highlander (EDH). This is the format I'll be focusing on with the project, because it is the main format I play and because it is multiplayer. This provides a unique technical challenge as opposed to traditional 1v1 formats.
I'm planning on building this with the GOTH stack:
Additionally, to make the multiplayer game work I'll likely be using Redis to store game sessions, WebSockets to pipe the game state to multiple clients, and some form of Javascript for the game specifically, since I imagine I'll need something more client side as opposed to server rendered html for that.
The primary features relate to being able to play a game of magic with 3 of your friends, this includes: