Monopoly (Assignment)
A 2D Monopoly-style board game inspired by 'Bankroll' from the Plato platform. Designed for a 2-player local multiplayer experience, this project features dice rolls, property acquisition, rent mechanics, chance events, jail system, and a full user interface with live transaction logs.
Learned and implemented automated Unity WebGL builds using GitHub Actions + GameCI, enabling continuous integration and deployment to GitHub Pages.
Project Summary
This project was developed for the Unity Game Developer Assignment. It replicates core Monopoly-style gameplay mechanics with a clean UI and object-oriented structure, entirely in Unity using C#.
🧱 Game Architecture Overview
This Monopoly-style board game is built in Unity 6 using C#, following clean architecture principles with design patterns like Singleton and Observer for maintainability and scalability.
📂 Main Systems Overview
-
1. Game Manager (Singleton)
- • Controls overall game flow: turn management, dice rolling, player switching.
- • Emits game events using the Observer pattern (
OnTurnChanged,OnDiceRolled). - • Handles rules such as jail turns and end of turn logic.
-
2. Player
- • Movement logic using
IEnumeratorto animate player steps. - • Money adjustments (rent, rewards, buying).
- • Jail state and turns.
- • Overlapping logic when two players are on the same tile.
- • Owns a list of purchased properties.
- • Movement logic using
-
3. Tile System
- •
Tile.csholds: tile type, owner ID, cost, rent. - • Tile types include: Property, Start, Jail, GoToJail, Chance, etc.
- •
TileTypeenum defines the board logic.
- •
-
4. UI Manager (Singleton)
- • Reacts to game events (observer) and updates current turn indicators, player info (money, property count), transaction log.
- • Manages Buy/Pass popup and property detail panel.
- • Handles user input for buying/passing properties.
-
5. Dice System
- • Animates and rolls dice via coroutine.
- • Communicates result back to GameManager.
-
6. Event System (Observer Pattern)
- • Allows decoupled communication between systems.
- • UI listens to GameManager events to update turn UI, logs, and panels.
🧩 Design Patterns Used
- • Singleton =>
GameManager,UIManager - • Observer =>
OnTurnChanged,OnDiceRolled - • Coroutine => Player movements & animations
⚙️ Key Features Implemented
- • Turn-based gameplay with 2 players
- • Buying and owning properties
- • Paying rent (with jail exceptions)
- • Jail system with 3 missed turns
- • Chance tile with probabilistic reward/penalty
- • Passing "Start" gives $200
- • UI panels for property and player info
- • Game log of actions
🎮 Playable Link: Click here