Linkage
← Back to Overview

Linkage Multiplayer Version

The author game to play against a friend online.

🎯 About This Game

This project implements the boutique game Linkage by Ethan Larson BGG.

📖 Rules of Linkage

Linkage: Linkage is an asymmetric two-player strategy game played on a 7×7 board with a hole in the middle and 6 plates of each color: white, blue, red, and yellow.

Setup: The board starts empty, and one player becomes the player more who also starts, and the other player becomes the player fewer.

Gameplay: Players take turns placing one of the remaining plates either horizontally or vertically. They are not allowed to place a plate adjacent to a previously placed plate. These places are marked with a cross. Plates are not per player individual but belong to a common pool.

Passing: If a player has no legal moves available, the blocking crosses are eliminated from the board, and the other player can make their next move.

Winning:If no player can make a move anymore, the game is over. The more player wins if there are at least 12 distinct connected regions of color; otherwise, the fewer player wins. A region is defined by horizontal or vertical connections. There are no diagonal connections.

🎮 How to Play

Initiating Multi-Player: Find yourself a playing partner and agree upon a room name. The person who creates the room determines if they play more or fewer. When the game has finished, the next game starts automatically with the roles reversed.

Starting the Game: At the beginning, the game host will be presented with a choice screen where you select the role and therefore decide who starts the game.

Making Moves: You place stones by dragging them into a destination field. Horizontally and vertically oriented stones belong to the same pool. They just have two different representations, so they can be easily played on a touchpad. If you make an illegal move or drop the stone outside the playing area, it returns to its original position.

Passing: If a player has to pass, the old player automatically continues.

Game End: When the game ends, the winner is shown at the top of the screen. After a few seconds, you restart with the roles reversed.

Display: The top line shows your role: more or fewer. Then follows the turn information or the game finish information. The number on the top shows the current number of distinct color regions, painted either in green (= in your favour) or red (= if not). The bottom contains the pool of plates available. If one type is depleted, it gets greyed out.

⚙️ Technical Details

The game is built entirely in Rust using the Macroquad framework and compiled to WebAssembly. The network part uses dedicated technology:

  • Websockets: The communication is done over websockets to be able to establish connections in all environments.
  • Client Hosted Server: The game host is also running in a browser on the client side.
  • Tokio / Axum Relay Server: Besides the web server, we host a dedicated server based on Tokio/Axum to establish communication between different browsers.