3.0 KiB
Witches is a clone of the card game Wizard. It's a client-server-based online version hosted here that can be played with 3 to 6 players using standard Wizard rules.
I originally began this project under the name Magician and worked on it from June to September 2025. As a university friend group of mine started finishing their studies and split up (physically), we had to find a way to play Wizard online. Of course, I seized the opportunity to develop a version of my own. A friend even agreed to design a unique set of cards for the game!
Unfortunately, after over a month of development, I felt the project had become quite hard to work on. The client was written using Godot, but the server was a separate Python script. Attempting to keep both at feature parity was a challenge. Furthermore, the client's code was spaghetti. The amount of signals in particular that were used to send and receive network events made it hard to decipher if anything went wrong (which it did). Having a separate Python script also meant that one of the clients had to fulfil host duties (despite not being a peer-to-peer connection) in order to complete tasks such as spreading cards, determining the play order, and calculating points. I eventually gave up on the project and decided to pursue other things, as interest in this online Wizard had waned among the friend group.
After playing a round of online Wizard (a version we randomly found online) in May 2026, a burst of motivation hit me. I finally wanted us to play a version of Wizard that I made! So I restarted the project and wrote everything from scratch.
This time, I used my knowledge from a client-server test project and implemented both client and server in Godot, which communicated using RPC calls. I also focused on the implementation of the technical details first and left the visuals for a later stage in development; only just before our first play test did I implement a proper connection workflow and polished up the (very prototype-y) graphics to look okay. Finally, the game was largely self-explanatory, alleviating the need for me to play narrator in every game – something I had not yet managed to do in the old Magician game.
I have plans to improve the visuals, both to look prettier and to improve clarity about gameplay events – in our first play test, we tended to bet way too high because other players' bets were not communicated clearly enough, for instance. I'm also working on a new set of cards to replace the drawn stick people cards I originally created as placeholder art for Magician. I'm in the process of creating a new 3D-modelled character, Poly, to feature on the cards!
The game is currently fully playable but I may restart the server without prior notice when I am publishing an update, which would effectively end all active game. There's also a disconnection issue which I think is caused by the WebSockets timing out after a period of inactivity (possibly an Nginx issue? I'm not sure yet). We have been able to complete games if we didn't take breaks mid-game, however.