"Operation response 226 return code 32758" and "not enough buffer space is available" problem

Options
Hello. I am currently working on a sandbox game.
Basically player can create,change color, transform and delete game object(like minecraft) in a multiplayer room.
(i put photon view in each block)
The workflow is this :
1. When player joined the room
2.if the player is master and currently the only person in the room, thus the player will download the room data from the server, using transform, material and gameobject name info. manually obtain viewID, then manually creating the gameobject in the scene
3. if the player is not master and currently not the only person in the room, im sending an info to room properties using
newProperties.Add ("masterscenedata", "NOTYETUPLOADING");
PhotonNetwork.room.SetCustomProperties (newProperties);
The master receive an info that somebody is joining the game, then start saving their current scene and uploading to the server
public override void OnPhotonPlayerActivityChanged(PhotonPlayer otherPlayer) {
if (!otherPlayer.IsInactive) {
			if (PhotonNetwork.player.IsMasterClient) {
				if (editorManager.loadingSaveData == false) {
					StartCoroutine (MasterUploadScene ());
				}
			}

		} 
}
once the master finish uploading the scene data, the master sending an info that the data is on the server and ready to download, by changing the room properties
public void SendingDataToClient()
	{
		ExitGames.Client.Photon.Hashtable newProperties = new ExitGames.Client.Photon.Hashtable ();
		newProperties.Add ("dropdown.value", PhotonNetwork.room.CustomProperties ["dropdown.value"]);
		newProperties.Add ("loadingTrue", true);
		newProperties.Add("masterscenedata", "DONE");
		PhotonNetwork.room.SetCustomProperties (newProperties);
	}
when the new joined member receive the "DONE" sign, it start to download the room data from the server that master just uploaded.


The problem I am currently facing is to sync the data between players are:
1. The master keep getting disconnected into "Peer Created" state (not always) when somebody else joined the room
Cannot send to: 159.8.0.202. Not enough buffer space is available
connection fail becauseDisconnectByClientTimeout
2. When the master just joined the room, it's still "ON PROGRESS" creating the game object (maybe hundreds or thousands), then somebody else joined the room, the master started to upload the scene data eventhough it's still not finished, then the client only got the "ON PROGRESS" scene data.
3. I put the connection manager in the different scene, and use "Don't destroy on load" when it's loading into "Main Scene", after player disconnected and I tried to rejoin, I keep on getting warning
Operation failed: OperationResponse 226: ReturnCode: 32748 (User does not exist in this game). Parameters: {} Server: GameServer

I have been working on this for a while, but I didn't find any helpful clue about this.
What do you think would be the best way to do this type of application?

Thanks a lot.

Comments

  • Hi @pinklover91,

    (i put photon view in each block)


    This is not a good idea because the amount of PhotonViews you can have is limited. You should consider changing this somehow to a seed-generated world, where you only share the seed between players. If you have done that, you can start thinking about how to synchronize changes to the world. An idea that came into my mind is to put multiple blocks into a cluster and synchronize the data of the cluster (modifications made to it) somehow.

    after player disconnected and I tried to rejoin, I keep on getting warning Operation failed: OperationResponse 226: ReturnCode: 32748


    If you want to allow users to rejoin the game you have to set up the room properly before. You can do this by using the RoomOptions.

    RoomOptions options = new RoomOptions();
    options.PlayerTtl = 10000; // players have ten seconds to reconnect before getting removed from the server
    PhotonNetwork.JoinOrCreateRoom("Room Name", options, null);