School project (CSC2058: Software Engineering) https://owenryan.us/projects/carbonopoly
  • Java 95.2%
  • CSS 4.8%
Find a file
40457809 492123c44d Merge branch 'owen/classDiagram' into 'dev'
Add final class diagram

See merge request CSC2058-2526/CSC2058-2526-G46!195
2026-03-20 22:02:45 +00:00
.vscode Initial right panel ui and game system current player index changes 2025-11-15 13:42:33 +00:00
old_diagrams Add final class diagram 2026-03-20 22:00:54 +00:00
src fix board map title css 2026-03-20 15:12:45 +00:00
.gitignore Initial Commit 2025-10-22 01:53:04 +01:00
.gitlab-ci.yml Finalise tests 2026-03-08 04:04:11 +00:00
ATTRIBUTION.md Sound effects! 2026-03-07 04:07:13 +00:00
classdiagram.puml Add final class diagram 2026-03-20 22:00:54 +00:00
LICENSE Add license 2026-03-20 21:57:11 +00:00
Makefile Add some tests and run CI tests under xvfb 2026-03-02 04:58:47 +00:00
pom.xml Bump dependencies 2026-03-05 11:45:25 +00:00
README.md Final README.md 2026-03-19 23:22:51 +00:00

Carbonopoly

CSC2058-2526 final submission for Group 46.

Team Members

Name Student ID
Cádhan Nelis 40435022
Callum Gilpin 40439721
Dylan Donaghy 40441188
Emmet Quinn 40444856
Fintan Mcivor 40441512
Matthew Connolly 40446360
Owen Ryan 40457809

Project Overview

Carbonopoly is a cooperative strategy board game developed in JavaFX. Players work together to manage economic growth while controlling carbon emissions and temperature rise. The game combines property ownership, shared-resource management, climate events, investments, and policy decisions within a turn-based board-game format.

The application supports 2 to 4 players and includes persistent save / load functionality, audio feedback, animated user interfaces, and automated testing for core gameplay and controller behaviour.

Core Gameplay

  • Players move around a 32-space board containing property, investment, chance, court, tax, policy, and transport spaces.
  • Eco and Carbon properties affect both income and the environmental state of the game.
  • A shared mutual fund supports collective interventions such as policy actions.
  • Chance cards and law-violation events introduce positive and negative game-state changes.
  • The game is won when carbon is below 40% and temperature is stable or falling for 3 consecutive rounds.
  • The game is lost if the temperature meter reaches its maximum or if at least half of the players become bankrupt.

Repository Structure

Prerequisites

The project requires:

  • JDK 25
  • Maven 3.9 or newer

JavaFX dependencies are managed through Maven and do not need to be installed separately.

Installation

  1. Install JDK 25 and ensure java and javac are available on your PATH.
  2. Install Maven 3.9 or newer by following the Apache Maven Installation Guide, and ensure mvn is available on your PATH.
  3. Clone this repository or extract the submission into a working directory.
  4. Open a terminal in the project root.
  5. Download dependencies and compile the project:
mvn clean compile

Building the Project

Compile the application with:

mvn clean compile

Alternatively, on Linux:

make all

Running the Application

Start the JavaFX application with:

mvn clean javafx:run

Alternatively, on Linux:

make run

Running the Test Suite

Execute the automated tests with:

mvn clean test

Linux convenience targets:

make test
make test-headless

make test-headless runs the JavaFX tests using xvfb-run, matching the headless setup used in CI.

Saved Game Data

Saved games are written outside the repository as JSON:

  • Linux/macOS: ~/.carbonopoly/save.json
  • Windows: %APPDATA%\Carbonopoly\save.json

The save location can be overridden with the JVM system property carbonopoly.saves.file.

Continuous Integration

GitLab CI is configured to:

  • build the project
  • run the automated test suite in a headless JavaFX environment

Attribution

Third-party media and audio credits are listed in ATTRIBUTION.md.