Inspiration

Party Knight was inspired by Machine Party and its mix of short, chaotic minigames where players can sabotage each other and laugh at disastrous failures. We wanted to create our own medieval version, where unfortunate peasants compete for a chance at royal approval.

What it does

Party Knight is an online medieval party game for 2–4 players. Players choose a peasant, customize their name, ready up in a shared lobby, and compete across a playlist of lethal minigames.

The current prototype includes:

Ballista Run: Cross a dangerous courtyard while one player hunts runners with a ballista. Lance: Find safe market stalls before the sharks sweep through the street. Coin Collection: Tap for as many coins as possible while avoiding a falling blade. Players earn points across completed games, return for the next round after being eliminated, and compete for the highest final score. The host can choose which games to play and randomize their order. Solo practice is also supported.

How we built it

Party Knight was built in Godot 4.7.2 using strictly typed GDScript.

The game uses an authoritative dedicated-server architecture:

Clients connect using Godot’s ENet multiplayer system. A headless Godot server manages the lobby, game state, timers, movement, collisions, eliminations, scoring, and results. Clients handle rendering, input, prediction, interpolation, and visual effects. The server validates actions so players cannot decide their own scores, hits, deaths, or wins. The game supports Windows clients and a Linux server build. Deployment scripts are included for hosting the server on a Vultr Ubuntu VM. The environments currently use simple geometric blockouts, while the characters come from a medieval low-poly peasant asset pack. We also created procedural poses, nameplates, colored player numbers, hazards, cameras, HUDs, and game-specific controls.

Challenges we ran into

The biggest challenge was making three very different minigames work through the same multiplayer framework. Ballista uses asymmetric shooter and runner roles, Lance requires authoritative movement and collision, and Coin Collection is mostly stationary but depends on hidden server-side hazard timing.

We also had to solve:

Keeping game state synchronized between multiple clients. Making movement feel responsive while preserving server authority. Handling latency, packet loss, disconnects, late joins, and stale actions. Giving every player an equal turn as the ballista shooter. Supporting host-only game selection and random ordering. Reusing player numbers when someone disconnects. Making solo practice work without weakening competitive rules. Testing two-, three-, and four-player matches across separate processes. Packaging both a Windows client and a headless Linux server. We tested the networking locally with simulated latency and packet loss, but live internet hosting still requires continued testing and polish.

Accomplishments that we're proud of

What's next for Party Knight

Next, we want to replace the blockout environments with more detailed self-made medieval assets and expand the minigame roster.

Planned additions include:

More original medieval trials. Custom characters, props, environments, and animations. More hazards and interactive level elements. Improved sound design, visual effects, and UI polish. Better matchmaking and private room support. More extensive testing on live Vultr servers. Additional accessibility and customization options.

Built With

  • codex
  • gdscript
  • godot
  • vultr
Share this project:

Updates

Submission history