A cross-platform, multiplayer Yahtzee clone built with Godot 4.5. https://games.macco.dev
Find a file
Insidious Fiddler 00c9ae87fb
All checks were successful
Build Release / Windows Export (push) Successful in 39s
Build Release / Linux Export (push) Successful in 34s
Build Release / Android Export (push) Successful in 43s
Build Release / Mac Export (push) Successful in 45s
ci: update to correct runs-on
2025-12-17 14:08:48 -05:00
.forgejo/workflows ci: update to correct runs-on 2025-12-17 14:08:48 -05:00
.vscode initial commit 2025-12-01 14:39:30 -05:00
assets initial commit 2025-12-01 14:39:30 -05:00
autoload initial commit 2025-12-01 14:39:30 -05:00
network refactor: update bot turn logic in MockNetwork.gd to use await for category selection and rolling simulation; enhance MainMenu.gd to prevent recursion during text input modification. 2025-12-03 00:00:38 -05:00
scenes feat: add bot count selection to MainMenu; enhance GameTable and ScorecardPanel for adaptive UI based on player count; support up to 6 players in ScoreCell and related scripts; improve layout and styling for better usability. 2025-12-01 18:22:42 -05:00
scripts refactor: update bot turn logic in MockNetwork.gd to use await for category selection and rolling simulation; enhance MainMenu.gd to prevent recursion during text input modification. 2025-12-03 00:00:38 -05:00
server initial commit 2025-12-01 14:39:30 -05:00
themes initial commit 2025-12-01 14:39:30 -05:00
.editorconfig initial commit 2025-12-01 14:39:30 -05:00
.gitattributes initial commit 2025-12-01 14:39:30 -05:00
.gitignore initial commit 2025-12-01 14:39:30 -05:00
docker-compose.yml Update docker-compose.yml to rename service from 'yahtzee-server' to 'yahtzee' and specify image name. 2025-12-01 16:54:12 -05:00
export_presets.cfg initial commit 2025-12-01 14:39:30 -05:00
icon.png initial commit 2025-12-01 14:39:30 -05:00
icon.png.import initial commit 2025-12-01 14:39:30 -05:00
icon.svg initial commit 2025-12-01 14:39:30 -05:00
icon.svg.import initial commit 2025-12-01 14:39:30 -05:00
log.txt initial commit 2025-12-01 14:39:30 -05:00
project.godot initial commit 2025-12-01 14:39:30 -05:00
README.md initial commit 2025-12-01 14:39:30 -05:00

Yahtzee Online (Godot 4)

A cross-platform, multiplayer Yahtzee clone built with Godot 4.5.

Features

  • 2-6 player multiplayer
  • Multiple network modes:
    • Online Server - connect via HTTP to the Go backend
    • Practice (vs Bots) - play offline against AI opponents
  • Beautiful dice with dot graphics and roll animations
  • Full Yahtzee scoring with upper bonus and Yahtzee bonus
  • Game end detection and winner display
  • Interactive scorecard with category previews
  • In-game chat
  • Docker deployment for the Go server

Quick Start

Running the Godot Client

  1. Open the project in Godot 4.5+
  2. Press ▶ (Play) to run
  3. Select "Practice (vs Bots)" mode to play immediately without a server

Running the Go Server


# Build and run locally

cd server
go mod tidy
go run .

# Or with Docker Compose

docker compose up --build

The server runs on port 8080 by default.

Network Modes

1. Online Server

Connect to the Go backend via HTTP.

  • Create or join rooms with room codes
  • All game logic validated server-side

2. Practice (vs Bots)

Play offline against AI opponents.

  • No server required
  • Great for learning the game

Server Configuration

The default server URL is configured in autoload/GameConfig.gd:

var server_url: String = "<https://games.macco.dev/api/v1/g/yahtzee>"

Server API Endpoints

Method Endpoint Description
GET /health Health check
POST /rooms Create a new room
POST /rooms/join Join existing room
POST /rooms/{code}/events Send game event
GET /rooms/{code}/events?since=N&token=T Long-poll for events

Development

Prerequisites

  • Godot 4.5+
  • Go 1.21+ (for server)
  • Docker (optional, for deployment)

Running Tests


# Server tests

cd server
go test ./...

Docker Deployment


# Build and run

docker compose up --build -d

# View logs

docker compose logs -f

# Stop

docker compose down

The server includes:

  • Automatic room cleanup (30-minute timeout)
  • Health check endpoint
  • CORS configuration for web clients

Credits