local multiplayer in unity

gamedev unity

This tutorial uses Unity (v2022.3.6f1) and the new input system (v1.6.3)

Hey there! I am going to try to explain how to add local multiplayer to your unity game.

With that out of the way, let’s begin!

You are going to need a ‘Lobby’ and ‘Game’ scene.

Lobby scene

Create an empty gameobject named ‘Lobby Manager’, add the script named PlayerInputManager.cs to it. (This script is included with the new input system)

Set the join behaviour to whatever you like.

As you can see, we need to specify a player prefab. Create an empty gameobject named ‘Player Brain’ and add the PlayerBrain.cs script to it. The current state should be ‘Lobby’.

The player brain will receive messages from the PlayerInput.cs script (This script is included with the new input system) and send call functions on the current player. Add it to the gameobject and add an input action asset. Check out this link for more information. Make sure the behaviour is set to ‘Send Messages’.

There are 2 types of players that we need to specify, a player that will be spawned in the lobby scene and a player that will be spawned in the game scene.

Create two empty gameobjects and add PlayerInputHandler.cs to both of them. This script will handle the input that other scripts on the player can read.

This is how your Lobby Manager should look like: Player Input Manager

This is how your Player Brain should look like: Player Brain

Game scene

Now it’s your turn to hook the PlayerInputHandler.cs script into your movement code and create a system to switch all player brains to the game scene.

An update to these script will follow in (hopefully) the following weeks, until then, good luck!