Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
  • Help Room /
avatar image
0
Question by BeGunity · Apr 03, 2018 at 01:35 PM · c#multiplayernetwork

Multiplayer - Error when rejoining room

I have a custom Network Manager which identifies when a connection and disconnection occurs.

The flow is:

1. Choose Online

2. Choose public or private match

3. Join/Create match (if you quit and rejoin here theres no issue)

4. Start Match (scene change occurs using MyNetManager.singleton.ServerChangeScene)

5. Finish Match

6. Rematch/Change Characters/Quit

Rematch and Changing Characters works fine but if you quit and rejoin one of the following errors will occur: - A connection has already been set as ready. There can only be one. - There is already a player at that playerControllerId for this connections.

The behaviour is that the last player to join the room is thrown into a blank version of the scene that is loaded in step 4 while the one who created the room seems to have a correctly loaded character select scene.

The network manager code is as follows. I have been trying a lot of things to try and get it to clean up the match correctly so it might look a mess to you.:

Code (CSharp):

 public class MyNetManager : NetworkManager {
  
     bool shuttingDown = false;
     loadingScreen ld;
  
     void Start()
     {
         ld = GameObject.FindGameObjectWithTag("loading").GetComponent<loadingScreen>();
         if (PlayerPrefs.GetInt("GameType", 0) < 2)
             loading(false);
     }
     public override void OnMatchCreate(bool success, string extendedInfo, MatchInfo matchInfo)
     {
         if (success)
             loading(false);
         else
             message("Please check your internet connection . . .");
  
         base.OnMatchCreate(success, extendedInfo, matchInfo);
     }
     public override void OnMatchJoined(bool success, string extendedInfo, MatchInfo matchInfo)
     {
         if (success)
             loading(false);
         else
             message("Please check your internet connection . . .");
  
         base.OnMatchJoined(success, extendedInfo, matchInfo);
     }
  
     public override void OnStartClient(NetworkClient client)
     {
         loading(false);
         base.OnStartClient(client);
     }
  
     // This is called when quit is selected in step 6
     public void disconnectPlayer()
     {
         if (matchInfo != null)
         {
             matchMaker.SetMatchAttributes(matchInfo.networkId,false, matchInfo.domain, OnSetMatchAttributes);
             Network.RemoveRPCs(Network.player);
             Network.DestroyPlayerObjects(Network.player);
             matchMaker.DropConnection(matchInfo.networkId, matchInfo.nodeId, matchInfo.domain, OnDropConnection);
         }
         else
             returnToHome();
     }
  
     public override void OnClientDisconnect(NetworkConnection conn)
     {
         NetworkServer.DestroyPlayersForConnection(conn);
         loading(true);
         message("Player left the game");
     }
  
     public override void OnServerDisconnect(NetworkConnection conn)
     {
         NetworkServer.DestroyPlayersForConnection(conn);
         loading(true);
         message("Player left the game");
     }
  
     public override void OnDropConnection(bool success, string extendedInfo)
     {
         base.OnDropConnection(success, extendedInfo);
         if (!shuttingDown)
             returnToHome();
     }
  
     private void returnToHome()
     {
         shuttingDown = true;
         Network.Disconnect();
         StopHost();
         SceneManager.LoadScene(0);
         Destroy(gameObject);
     }
  
     void loading(bool show)
     {
         if (ld != null)
             ld.gameObject.SetActive(show);
     }
  
     void message(string message) {
  
         if(ld !=null){
             ld.setAnimation(1);
             ld.quit(message); // disconnectPlayer is called from here
         }
     }
  
 }



The disconnect overrides do not call the super because it ends up giving a server timeout error.

Thank you for any explanations of what I have done terribly wrong, help or suggestions in advance.

P.S. Everything seems to go back to being fine when both players completely close the game and restart it. Which makes me think Network Manager isn't being destroyed properly?

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by BeGunity · Apr 04, 2018 at 04:50 PM

The rubberband answer is

 public override void OnServerAddPlayer(NetworkConnection conn, short playerControllerId)
 {
      //Instantiate your player here 

     if (!NetworkServer.AddPlayerForConnection(conn, player, playerControllerId))
     {
         Debug.Log("caught");
         ServerChangeScene("lobby");
     }
 }

It forces the player back to the same scene as the host and everything works fine from there on

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

558 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

What's the [command] attribute with the new Network Manager? 0 Answers

Unity Networking 1 Answer

Adapt the FirstPersonController Script to Multiplayer 0 Answers

Trying to send command for object without authority 0 Answers

Clash of clans networking. 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges