Skip to main content

Getting Started with Boss Room

Boss Room banner

Boss Room is a fully functional co-op multiplayer RPG made with Unity Netcode. it's an educational sample designed to showcase typical netcode patterns often featured in similar multiplayer games.

note

Note: Boss Room is compatible with the latest Unity Long Term Support (LTS) Editor version (currently 2021 LTS). Make sure to include standalone support for Windows/Mac in your installation.

Boss Room has been developed and tested on the following platforms:

  • Windows
  • Mac
  • iOS
  • Android

The minimum device specifications for Boss Room are:

  • iPhone 6S
  • Samsung Galaxy J2 Core

Join the multiplayer community on the Unity Discord and Forum to connect and find support. Got feedback? Tell us what you think using our new Feedback Form.

Boss Room Overview

Boss Room is designed to be used in its entirety to help you explore the concepts and patterns behind a multiplayer game flow; such as character abilities, casting animations to hide latency, replicated objects, RPCs, and integration with the Relay, Lobby, and Authentication services.

You can use the project as a reference starting point for your own Unity game or use elements individually.

This repository also has a Utilities package containing reusable sample scripts. You can install it using the following manifest file entry:

"com.unity.multiplayer.samples.coop": "https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop.git?path=/Packages/com.unity.multiplayer.samples.coop"

For more information on the art in Boss Room, see ART_NOTES.md.

Getting the project

You can get the project by downloading it directly or cloning locally. However, if you use git, you must install Git LFS.

Installing Git LFS to clone locally

Boss Room uses Git Large Files Support (LFS) to handle all large assets required locally. See Git LFS installation options for Windows and Mac instructions. This step is only needed if cloning locally. You can also just download the project which will already include large files.

Direct download

You can download the latest version of Boss Room from our Releases page. Doing so doesn't require you to use Git LFS.

Alternatively, you can click the green Code button, then select Download Zip. This downloadd the branch that you are currently viewing on Github.

note

Note for Windows users: Using Windows' built-in extraction tool may generate an Error 0x80010135: Path too long error window which can invalidate the extraction process. A workaround for this is to shorten the zip file to a single character (for example, "c.zip") and move it to the shortest path on your computer (most often right at C:\) and retry. If that solution fails, another workaround is to extract the downloaded zip file using 7zip.

Registering the project with Unity Gaming Services (UGS)

Boss Room leverages several services from UGS to ease connectivity between players. To use these services inside your project, you must:

  1. Create an organization inside the Unity Dashboard.
  2. Enable the Relay service.
  3. Enable the Lobby service.

Opening the project for the first time

Once you have downloaded the project, follow the steps below to get up and running:

  1. Check that you have installed the most recent LTS editor version.
    1. Include standalone support for Windows/Mac in your Unity Editor installation.
  2. Add the project to the Unity Hub by selecting the Add button and pointing it to the root folder of the downloaded project.
    1. Unity imports all the project assets the first time you open the project, which takes longer than usual.
  3. Select the Play button. You can then host a new game or join an existing one using the in-game UI.

Exploring the project

Boss Room is an eight-player co-op RPG game experience, where players collaborate to fight imps, and then a boss. Players can select between character classes that were designed to provide educational oriented implementations of characteristics commonly found in similar small-scale netcode games. Control model is click-to-move, with skills triggered by a mouse button or hotkey.

One of the eight clients acts as the host/server. That client will use a compositional approach so that its entities have both server and client components.

  • The game is server-authoritative, with latency-masking animations.
  • Position updates are carried out through NetworkTransform that sync position and rotation.
  • Code is organized in domain-based assemblies. See our ARCHITECTURE.md file for more details.

Testing multiplayer

To see the multiplayer functionality in action, you can:

  • Connect with a friend over your local area network
  • Connect with a friend over the internet
    • You can use UGS which helps remove the complexities of handling port forwarding
    • Otherwise, the host will need to setup port forwarding on their router

See Testing multiplayer games locally for more information.

Local multiplayer setup

First, build an executable by selecting File > Build Settings > Build.

After you have the build, you can launch several instances of the build executable to host or join a game.

If you run several instances locally, you must use the Change Profile button to set different profiles for each instance for authentication purposes.

note

Note: If you’re using Mac to run multiple instances of the same app, you need to use the command line. Run open -n BossRoom.app.

Multiplayer over Internet

Use the following instructions to test Boss Room with multiple players over the Internet.

First, build an executable and distribute it to all players.

tip

Tip: it's possible to connect between multiple instances of the same executable OR between executables and the Unity Editor that you used to create the executable.

Next, you need to set up a relay. Running the Boss Room over the internet currently requires setting up a relay:

  • Boss Room provides an integration with Unity Relay. You can find our Unity Relay setup guide here.
  • Alternatively you can use Port Forwarding. The https://portforward.com/ site has guides on how to enable port forwarding on a huge number of routers.
  • Boss Room uses UDP and needs a 9998 external port to be open.
  • Make sure your host's address listens on 0.0.0.0 (127.0.0.1 is for local development only).

Index of resources

The Boss Room sample includes resources for gameplay, game flow, connectivity, Unity services, and other tools and utilities.

Gameplay

Boss Room includes the following gameplay resources:

Game flow

Boss Room includes the following game flow resources:

Connectivity

Boss Room includes the following connectivity resources:

Services

Boss Room supports integration with Lobby, Relay, and Authentication (UAS). Boss Room includes the following service resources:

Tools and utilities

Boss Room includes the following tools and utilities:

Troubleshooting

Bugs

Report bugs in Boss Room using Github issues Report NGO bugs using NGO Github issues Report Unity bugs using the Unity bug submission process.

Licence

Boss Room is licenced under the Unity Companion Licence. See LICENSE.md for more legal information.

Visit the following links to learn more about Unity Netcode and Boss Room.

Other samples

The Bitesize Samples repository is currently being expanded and has a collection of smaller samples and games showcasing sub-features of NGO. You can review these samples with documentation to better understand our APIs and features.

Contributing

Please check out CONTRIBUTING.md for full guidelines on submitting issues and PRs to Boss Room.

Our projects use the git-flow branching strategy:

  • The develop branch has all active development.
  • The main branch has release versions.

To get the project on your machine, you need to clone the repository from GitHub using the following command-line command:

git clone https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop.git
danger

Important: You should have Git LFS installed on your local machine.

Please check out CONTRIBUTING.md for guidelines on submitting issues and PRs to Boss Room!

Feedback form

Thank you for cloning Boss Room and taking a look at the project. To help us improve and build better samples in the future, please consider submitting feedback about your experiences with Boss Room. It'll only take a couple of minutes. Thanks!

Enter the Boss Room Feedback Form