Search Unity

Third Party (Lobby/Matchmaking) Transitioning from Photon. How to list/join rooms?

Discussion in 'Multiplayer' started by carmine, Feb 1, 2016.

  1. carmine

    carmine

    Joined:
    Jan 4, 2012
    Posts:
    394
    I've built a game before with Photon (it handles lots of players, it's on Steam, blah, blah, blah)

    I'm starting a new game, and I wanted to take the plunge into UNet. I'm trying to get started, but I'm a bit confused. I think maybe I'm looking for something between the HLAPI and the low-level. I'm trying to use Unity's servers here:

    The expectations I'm ... expecting (from my experience with Photon and others):
    1. I connect to a server. Then get some sort of notification/event "OnConnect" when that happens.
    2. I can get a list of "rooms" I think in UNet these care called "lobby" or "matches?"
    3. I can create a room, then get an event/notification "OnRoomJoin" when this happens.

    However:
    I created a game object, and made my own class that is derived from "NetworkLobbyManager".
    I tried using this.client to connect to Unity's servers, but that didn't seem to do much, so I tried:

    this.StartMatchMaker();

    This seemed to do "something" however, I did not get any sort of response that I was connected to a server or not. (No OnAnything's delegates were called)

    From there, I tried:
    this.matchMaker.ListMatches

    This seemed to work fine, it called my specified delegate that there were 0 matches.

    I then tried:
    this.matchMaker.CreateMatch

    This also seemed to work.. BUT, in my call back "OnMatchCreate", if I call
    base.OnMatchCreate

    it calls OnStartClient and OnClientConnect, but then has errors that I don't have the scenes and prefab specified. (I don't want it to do this automatically), I want to do this myself.

    If I don't call base.OnMatchCreate, it seems as though "OnStartClient" and "OnClientConnect" are never called (I'm assuming it's important that they are?)

    Questions:
    - Am I just way off base here and doing this all wrong?
    - Is there a way to know I "connected to the server". Or are all these calls just web calls under the hood and I'm not actually connecting to anything until much later?
    - Is there a way to call base.OnMatchCreate without having it trying to do so much for me.