A Task For Two is an online cooperative multiplayer puzzle game developed in Unity as my Bachelor's thesis project.
The project implements a polished multiplayer gameplay vertical slice in which two players communicate and cooperate to solve an asymmetric puzzle in a synchronized online environment. It focuses on multiplayer networking, software architecture, real-time synchronization, automated testing, and the delivery of a polished player experience.
This project demonstrates the design and implementation of a complete online cooperative gameplay vertical slice.
Players create or join a multiplayer session using Unity Relay and Unity Lobby, solve an asymmetric cooperative puzzle by exchanging information in real time, and complete a shared objective. Alongside the gameplay, the project includes a modular architecture, persistent settings, automated testing, and robust multiplayer session handling.
- Online cooperative multiplayer gameplay
- Unity Relay & Lobby integration
- Host and join-by-code sessions
- Real-time synchronized gameplay
- Asymmetric cooperative puzzle
- Shared victory flow
- Host disconnect recovery
- Extensive video, audio, and HUD settings
- Persistent player preferences
- Automated Edit Mode and Play Mode testing
| Category | Technologies |
|---|---|
| Language | C# |
| Engine | Unity 6 (6000.3 LTS) |
| Multiplayer | Unity Netcode for GameObjects |
| Networking Services | Unity Relay, Unity Lobby |
| UI | Unity UI Toolkit, TextMeshPro |
| Version Control | Git, Git LFS |
| Development | Visual Studio Code |
This project applies modern software engineering practices, including:
- Modular object-oriented architecture
- Multiplayer state synchronization
- Event-driven programming
- Automated Edit Mode and Play Mode testing
- Version control with Git
- Separation of gameplay, networking, and UI systems
- Persistent data management
- Clean project organization
Players can create private multiplayer sessions and invite another player using a generated lobby code.
Players explore the environment together while communicating to solve a synchronized cooperative puzzle.
Each player sees only part of the puzzle. Communication is required because each player controls the value needed to complete their partner's equation.
Customize display options, graphics quality, and camera settings.
Customize separate volume levels for music, gameplay sound effects, and menu audio.
Customize crosshair appearance, FPS and ping counters, and the in-game system clock.
Pause gameplay at any time while maintaining multiplayer session state.
Complete the cooperative puzzle to finish the level.
- Unity 6 (6000.3 LTS)
- Git
- Git LFS
git clone https://github.com/hassan-afifi/A_Task_For_Two.gitEnable Git LFS
git lfs install
git lfs pullOpen the project using Unity 6 (6000.3 LTS).
Windows Build
Download the latest playable version from the Releases page.
https://github.com/hassan-afifi/A_Task_For_Two/releases/latest
Assets/
├── Animations/
├── Audio/
├── Materials/
├── Models/
├── Prefabs/
├── Scenes/
├── Scripts/
├── Settings/
├── Tests/
└── Textures/
Packages/
ProjectSettings/
This project is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
