Splendor, Howest edition: the game title over a blurred photo of the Howest campus at dusk

Splendor

A multiplayer web version of the board game Splendor. My first-year group project at Howest, with a Java API on Vert.x and a board in plain HTML, CSS and JavaScript. A learning project.

Client on GitHub Server on GitHub Gallery (11)
The game board mid-game: a grid of campus development cards in the middle, gem token counts on the right and the player's inventory along the bottom

Technologies

  • Java 21
  • HTML
  • CSS
  • JavaScript
  • Vert.x
  • OpenAPI
  • JUnit
  • Gradle

Architecture

API
Java 21 on Vert.x, routed through an OpenAPI bridge. Game logic sits in Game, Market, Player and Noble classes.
Board
ES modules split per feature, with no framework.
Sync
The board polls the API every second.
Auth
A bearer token per player.
Rules
The API validates every move, including payments and noble visits.
Quality
JUnit and JaCoCo on the API. HTML validation and SonarQube in CI.

Features

Lobby

HTML · JavaScript · Java · Vert.x

  • Create public or private games
  • Join from a list of open games
  • Waiting room that starts when the table is full

Game

HTML · CSS · JavaScript · Java · Vert.x

  • Take and return gem tokens
  • Buy or reserve development cards, paying with gold where needed
  • Nobles visit when a player qualifies
  • Winner decided after the last round, shown on a leaderboard

Extras

HTML · CSS · JavaScript

  • How-to-play page
  • Background music with sound settings

My part

  • Over 100 custom assets: development cards from photos of the Howest campus, noble cards, avatars, gem tokens and backgrounds
  • Lobby: creating games, joining private ones, and the waiting room
  • Leaderboard and the end-of-game flow
  • Noble rendering and the pay-with-gold selector on the board
  • API endpoints to buy and reserve cards and to update tokens
  • Payment validation, noble eligibility and winner logic
  • Game management in the service layer, and tests for it