magician -> witches page, updated page blurb and link
This commit is contained in:
@@ -1,3 +0,0 @@
|
||||
**Magician** is a clone of the card game *Wizard*. I've made it primarily to play with friends, but it's also a test for programming client-server multiplayer games. The clients are programmed in Godot, the server in Python, and they communicate via TCP/IP websockets. The game works with 3 to 6 players.
|
||||
|
||||
As the corresponding server is not currently online, the game is unplayable, but you can view the game below.
|
||||
13
src/routes/projects/games/witches.md
Normal file
13
src/routes/projects/games/witches.md
Normal file
@@ -0,0 +1,13 @@
|
||||
**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.
|
||||
@@ -88,6 +88,24 @@ export const projects: Project[] = [
|
||||
},
|
||||
|
||||
// 2026
|
||||
{
|
||||
category: ProjectCategory.GAMES,
|
||||
id: "witches",
|
||||
banner: "banner.webp",
|
||||
bannerAlt: "",
|
||||
title: "Witches",
|
||||
subtitle: "Online Multiplayer Card Game",
|
||||
description: "",
|
||||
isOngoing: false,
|
||||
date: "May 2026 – now",
|
||||
status: ProjectStatus.ACTIVE,
|
||||
links: [
|
||||
{
|
||||
text: "view game",
|
||||
link: "https://apps.natconf.dev/witches",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
category: ProjectCategory.MISC,
|
||||
id: "lightyears-font",
|
||||
@@ -108,24 +126,6 @@ export const projects: Project[] = [
|
||||
},
|
||||
|
||||
// 2025
|
||||
{
|
||||
category: ProjectCategory.GAMES,
|
||||
id: "magician",
|
||||
banner: "banner.webp",
|
||||
bannerAlt: "",
|
||||
title: "Magician",
|
||||
subtitle: "Online Multiplayer Card Game",
|
||||
description: "",
|
||||
isOngoing: false,
|
||||
date: "July 2025",
|
||||
status: ProjectStatus.ABANDONED,
|
||||
links: [
|
||||
{
|
||||
text: "view game",
|
||||
link: "https://apps.natconf.dev/magician",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
category: ProjectCategory.GAMES,
|
||||
id: "projektike",
|
||||
|
||||
|
Before Width: | Height: | Size: 102 KiB After Width: | Height: | Size: 102 KiB |
Reference in New Issue
Block a user