LogoLogo
  • SWNetwork SDK Overview
  • Installation
    • Custom Unity Package
  • Tutorials
    • Third-Person Shooter
      • Starter Project Introduction
      • Install SWNetwork
      • Setting up the NetworkClient
      • Sync Player Transform
      • Setting up the Scene Spawner
      • Test and Play
      • Remote Events
      • SyncProperties
      • Player Respawn
      • Updating Room States
      • Winning the Game
    • Basic Lobby
      • Lobby-start
      • Installing SWNetwork SDK and configuring NetworkClient
      • Registering Player
      • Room CRUD
      • Managing Teams
      • Chat
  • SDK
    • Network Client
      • Check-in
      • Game Servers
      • Network Status Event (beta)
      • Classes
        • NetworkClient Class
      • Methods
        • CheckIn() Method
        • ConnectToRoom(Action<bool>) Method
        • DisconnectFromRoom () Method
        • FindSpawner(ushort) Method
    • Game Play
      • Network ID
      • Realtime Agent
      • Remote Event
      • Sync Property
        • Restore Sync Properties
        • Conflict Resolution
      • SceneSpawner
      • RoomPropertyAgent
      • RoomRemoteEventAgent
    • Lobby
      • Register Player
      • Message Player
      • Create Room
      • Change Room Settings
      • Get Rooms
      • Filter Rooms
      • Join Room
      • Message Room
      • Get Players in Room
      • Get Room Custom Data
      • Change Room Custom Data
      • Kick Players
      • Start Room
      • Leave Room
      • Lobby Room Events
        • OnLobbyConnectedEvent
        • OnPlayerMessageEvent
        • OnRoomCustomDataChangeEvent
        • OnNewPlayerJoinRoomEvent
        • OnPlayerLeaveRoomEvent
        • OnNewRoomOwnerEvent
        • OnRoomStartingEvent
        • OnRoomReadyEvent
        • OnFailedToStartRoomEvent
        • OnKickedEvent
        • OnRoomMessageEvent
      • Classes
        • SWLobby Class
        • SWPlayer Class
        • SWRoom Class
        • SWRegisterReply Class
        • SWGetRoomReply Class
        • SWJoinRoomReply Class
        • SWGetRoomCustomDataReply Class
        • SWGetPlayersReply Class
        • SWLobbyIndexData Class
        • SWLobbyFilterData Class
        • SWGetRoomFilterReply Class
        • SWLobbyError Class
        • SWMessagePlayerEventData Class
        • SWMessageRoomEventData Class
        • SWRoomCustomDataChangeEventData Class
        • SWJoinRoomEventData Class
        • SWLeaveRoomEventData Class
        • SWRoomChangeOwnerEventData Class
        • SWStartRoomEventData Class
        • SWRoomReadyEventData Class
        • SWFailedToStartRoomEventData Class
      • Methods
        • Register(Action<bool, SWRegisterReply, SWLobbyError>) Method
        • MessagePlayer(string, string, Action<bool, SWLobbyError>) Method
        • CreateRoom(bool, int, Action<bool, string, SWLobbyError>) Method
        • ChangeRoomSettings(int, int, Action<bool, SWLobbyError>) Method
        • GetRooms(int, int, Action<bool, SWGetRoomReply, SWLobbyError>) Method
        • FilterRoom(SWLobbyFilterData, byte, Action<bool, SWGetRoomFilterReply, SWLobbyError>) Method
        • JoinRoom(string, Action<bool, SWJoinRoomReply, SWLobbyError>) Method
        • JoinRoomRandomly(Action<bool, SWJoinRoomReply, SWLobbyError>) Method
        • JoinOrCreateRoom(bool, int, int, Action<bool, SWJoinRoomReply, SWLobbyError>) Method
        • MessageRoom(string, Action<bool, SWLobbyError>) Method
        • GetRoomCustomData(Action<bool, SWGetRoomCustomDataReply, SWLobbyError>) Method
        • GetPlayersInRoom(Action<bool, SWGetPlayersReply, SWLobbyError>) Method
        • ChangeRoomCustomData(string, Action<bool, SWLobbyError>) Method
        • StartRoom(Action<bool, SWLobbyError>) Method
        • LeaveRoom(Action<bool, SWLobbyError>) Method
  • Open Source Software Used
    • Credits
Powered by GitBook
On this page
  • Player to Player Message
  • Player to Room Broadcast

Was this helpful?

  1. Tutorials
  2. Basic Lobby

Chat

SWNetwork.Lobby has two messaging APIs to support player to player communication. Both APIs support serializable objects, so they are very flexible to use. You can use them to implement your own communication protocol.

Player to Player Message

In the LobbyDemo.cs script and add the following code to the OnPlayerSelected(string) method to send messages to the selected player.

public void OnPlayerSelected(string playerId)
{
	Debug.Log("OnPlayerSelected: " + playerId);

	// demonstrate player message API
	GUI.ShowMessagePlayerPopup(playerId, (bool ok, string targetPlayerId, string message) =>
	{
		if (ok)
		{
			Debug.Log("Send player message " + "playerId= " + targetPlayerId + " message= " + message);
			NetworkClient.Lobby.MessagePlayer(playerId, message, (bool successful, SWLobbyError error) =>
			{
				if (successful)
				{
					Debug.Log("Sent player message");
					string msg = "Sent to " + targetPlayerId + ": " + message;
					GUI.AddRowForMessage(msg, null, null);
				}
				else
				{
					Debug.Log("Failed to send player messagem " + error);
				}
			});
		}
	});
}

To receive the message, you need to subscribe to the OnPlayerMessageEvent lobby event. Update the Start() and onDestroy() methods to subscribe to the event.

void Start()
{
	// Subscribe to Lobby events
	NetworkClient.Lobby.OnNewPlayerJoinRoomEvent += Lobby_OnNewPlayerJoinRoomEvent;
	NetworkClient.Lobby.OnPlayerLeaveRoomEvent += Lobby_OnPlayerLeaveRoomEvent;
	NetworkClient.Lobby.OnRoomCustomDataChangeEvent += Lobby_OnRoomCustomDataChangeEvent;
	NetworkClient.Lobby.OnPlayerMessageEvent += Lobby_OnPlayerMessageEvent;
}

void onDestroy()
{
	// Unsubscrible to Lobby events
	NetworkClient.Lobby.OnNewPlayerJoinRoomEvent -= Lobby_OnNewPlayerJoinRoomEvent;
	NetworkClient.Lobby.OnPlayerLeaveRoomEvent -= Lobby_OnPlayerLeaveRoomEvent;
	NetworkClient.Lobby.OnRoomCustomDataChangeEvent -= Lobby_OnRoomCustomDataChangeEvent;
	NetworkClient.Lobby.OnPlayerMessageEvent -= Lobby_OnPlayerMessageEvent;
}

Implement the OnPlayerMessageEvent handler method.

void Lobby_OnPlayerMessageEvent(SWMessagePlayerEventData eventData)
{
	string msg = eventData.playerId + ": " + eventData.data;
	GUI.AddRowForMessage(msg, null, null);
}

Player to Room Broadcast

Add the follow code to SendRoomMessage(string) method to send message to local player's current room.

public void SendRoomMessage(string message)
{
	Debug.Log("Send room message " + message);
	NetworkClient.Lobby.MessageRoom(message,(bool successful, object arg2, SWLobbyError error) =>
	{
		if (successful)
		{
			Debug.Log("Sent room message");
			string msg = "Sent to room: " + message;
			GUI.AddRowForMessage(msg, null, null);
		}
		else
		{
			Debug.Log("Failed to send room messagem " + error);
		}
	});
}

To receive the message, you need to subscribe to the OnPlayerMessageEvent lobby event. Update the Start() and onDestroy() methods to subscribe to the event.

void Start()
{
	// Subscribe to Lobby events
	NetworkClient.Lobby.OnNewPlayerJoinRoomEvent += Lobby_OnNewPlayerJoinRoomEvent;
	NetworkClient.Lobby.OnPlayerLeaveRoomEvent += Lobby_OnPlayerLeaveRoomEvent;
	NetworkClient.Lobby.OnRoomCustomDataChangeEvent += Lobby_OnRoomCustomDataChangeEvent;
	NetworkClient.Lobby.OnPlayerMessageEvent += Lobby_OnPlayerMessageEvent;
	NetworkClient.Lobby.OnRoomMessageEvent += Lobby_OnRoomMessageEvent;
}

void onDestroy()
{
	// Unsubscrible to Lobby events
	NetworkClient.Lobby.OnNewPlayerJoinRoomEvent -= Lobby_OnNewPlayerJoinRoomEvent;
	NetworkClient.Lobby.OnPlayerLeaveRoomEvent -= Lobby_OnPlayerLeaveRoomEvent;
	NetworkClient.Lobby.OnRoomCustomDataChangeEvent -= Lobby_OnRoomCustomDataChangeEvent;
	NetworkClient.Lobby.OnPlayerMessageEvent -= Lobby_OnPlayerMessageEvent;
	NetworkClient.Lobby.OnRoomMessageEvent -= Lobby_OnRoomMessageEvent;
}

Implement the OnRoomMessageEvent handler method.

void Lobby_OnRoomMessageEvent(SWMessageRoomEventData eventData)
{
	string msg = "Room message: " + eventData.data;
	GUI.AddRowForMessage(msg, null, null);
}
PreviousManaging TeamsNextNetwork Client

Last updated 5 years ago

Was this helpful?