GitHub - tah0ma/Project-Rappy: A small-scale cooperative game sample built on the new, Unity networking framework to teach developers about creating a similar multiplayer game.

💡 Utilities Package

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

Requirements

compatible with the latest Unity Long Term Support (LTS) editor version, currently 2022 LTS. Please include standalone support for Windows/Mac in your installation.

PLEASE NOTE: You will also need Netcode for Game Objects to use these samples. See the Installation Documentation to prepare your environment. You can also complete the Get Started With NGO tutorial to familiarize yourself with Netcode For Game Objects.

developed and tested on the following platforms:

  • Windows
  • Mac
  • iOS
  • Android

min spec devices are:

  • iPhone 6S
  • Samsung Galaxy J2 Core

Installing Git LFS to clone locally

Git Large Files Support (LFS) is required to handle all large assets required locally.

Opening the project for the first time

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

  • Check that you have installed the most recent LTS editor version.

    • Include standalone support for Windows/Mac in your installation.
  • Add the project to the Unity Hub by clicking on the Add button and pointing it to the root folder of the downloaded project.

    • Please note : the first time you open the project Unity will import all assets, which will take longer than usual.
  • Hit the Play button. You can then host a new game or join an existing one using the in-game UI.

Exploring the project

an eight-player co-op RPG game experience, where players collaborate to fight imps, and then a boss. Players can select between classes that each have skills with didactically interesting networking characteristics. 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.

Registering the project with Unity Gaming Services (UGS)

Leverages several services from UGS to facilitate connectivity between players. To use these services inside your project, you must create an organization inside the Unity Dashboard, and enable the Relay and Lobby services. Otherwise, you can still use Boss Room without UGS.

Testing multiplayer

In order to see the multiplayer functionality in action we can either run multiple instances of the game locally on your computer - using either ParrelSync or builds - or choose to connect to a friend over the internet. See how to test for more info.

Local multiplayer setup

First, build an executable by clicking 'File/Build Settings' in the menu bar, and then click 'Build'.

Once the build has completed you can launch several instances of the built executable in order to both host and join a game. When using several instances locally, you will have to set different profiles for each instance for authentication purposes, by using the 'Change Profile' button.


💡 Mac users: To run multiple instances of the same app, you need to use the command line. Run open -n BossRoom.app


Multiplayer over Internet

To play over internet, first build an executable that is shared between all players - as above.

It is possible to connect between multiple instances of the same executable OR between executables and the editor that produced it.

Running the game over internet currently requires setting up a relay.

Relay Setup

  • 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 in this project

Click to expand/collapse contents

Gameplay

Game Flow

Connectivity

Services (Lobby, Relay, etc)

Tools and Utilities


Troubleshooting

Documentation

Contributing

Our projects use the git-flow branching strategy:

  • our develop branch contains all active development
  • our main branch contains release versions

Other samples

Bite-size Samples

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