Search Unity

A really, really special uLink indie offer.

Discussion in 'Multiplayer' started by Christian_Lonnholm, Sep 27, 2011.

Thread Status:
Not open for further replies.
  1. Christian_Lonnholm

    Christian_Lonnholm

    Joined:
    Mar 9, 2011
    Posts:
    128
    First off, thank you for asking! It is true that we have been waiting with implementing "groups" / "rooms" in uLink since we wanted to put a lot of thought behind it. We now believe that we have a design that we are happy with, though we have not yet set a release date for it.

    Yes, there are three ways you can handle your specific situation. The best, in my opinion, is to use uZone as an instance manager and go for the same architecture that dreamora is proposing. You might get some overhead with this solution compared with the other ones but you'll get redundancy and the development and debugging will become both simple and fast. The most important thing is that you have a stable and fun game that can easily scale. This architecture allows you to accomplish this. When your game is released and has built a substantial user base, you can then return to the question of how to optimize the management of game sessions even further.

    Another method is to implement a room feature in the game itself (as a few uLink users already have already done).

    And a third method is to let uStream handle the separation of the "rooms".
     
    Last edited: Nov 22, 2011
  2. bigjhnny

    bigjhnny

    Joined:
    Aug 10, 2010
    Posts:
    19
    Thanks for the advise dreamora. Definitely good reminder for the hidden implications of sharing a unity process. Though the ratio of how many rooms per server vs many server instances should be configurable in our architecture. I think the answer really depends on how much overhead there is to scale the game via server instances. What I don't want is to tie infrastructure to the # of users per gameroom of a game type (I may have a 1on1 type of game in the future for example).

    Is it still better to scale via instances on a 1on1 game?
     
  3. bigjhnny

    bigjhnny

    Joined:
    Aug 10, 2010
    Posts:
    19
    Thanks for this link! In it, there is an explanation by David and a mention by Ashkan:

    "it's easy to implement multiple games per serer cause RPCs can be sent as multicast to an array of network players easily."

    I want to make sure I understand this. RPCs can be efficiently sent to a select group of players (decided in runtime) as multicast (though the RPC API in the docs only take one NetworkPlayer, and not an array). Statesyncs can not. However, we can use unreliable RPCs to suffice?

    Is this true of the current state of uLink?
     
  4. david.almroth

    david.almroth

    Joined:
    Aug 19, 2010
    Posts:
    18
    The newest uLink build actually does include the possibility to send an RPC to several NetworkPlayers. We haven't updated the html API doc yet, but it is there since uLink 1.2 build 2011-10-05, which is the newest build. Download it and try it out.

    This feature can be used for both reliable RPCs and unreliable RPCs.
    This is two examples from the API:
    uLink.NetworkView.RPC(string rpcName, IEnumerable<NetworkPlayer> targets, params object[] args).
    uLink.NetworkView.UnreliableRPC(string rpcName, IEnumerable<NetworkPlayer> targets, params object[] args)

    Feel free to use it for private chat groups, team "event channels", "rooms", areas of interest, occlusion culling to reduce bandwidth or whatever you like :) We are working on even more features for handling rooms in uLink v1.3.
     
    Last edited: Nov 24, 2011
  5. bigjhnny

    bigjhnny

    Joined:
    Aug 10, 2010
    Posts:
    19
    I believe this solution will work for me. Making the order as we speak.

    Thanks much guys!
     
  6. bigjhnny

    bigjhnny

    Joined:
    Aug 10, 2010
    Posts:
    19
  7. Ashkan_gc

    Ashkan_gc

    Joined:
    Aug 12, 2009
    Posts:
    1,124
    it's another aspect of hidden awesomeness in uLink. as soon as we requested the multicast RPC they put it there in the next build.
    surely it can not be done always as fast as this and for everyone and every feature but the point is that they listen to their customers and they are fast in implementing features.
     
  8. Ashkan_gc

    Ashkan_gc

    Joined:
    Aug 12, 2009
    Posts:
    1,124
    We tried this and implementation is not that hard. we had few singletons that needed to turn back to normal classes. i totally agree that it's much game dependent. if your game is slow in terms of actions and only one or two players join each game like in massively single player games, then it might make scence but otherwise the chances are high that you lose more than you gain.

    also you need to create your own Instantiate and Destroy over the network and you should handle all buffered RPCs manually (i.e to check if the sender is in your game or not and then execute)

    so it's a good idea to don't consentrate on it at first and just implement a single game per server fully optimized at first and then take a look at this.
     
  9. bigjhnny

    bigjhnny

    Joined:
    Aug 10, 2010
    Posts:
    19
    I of course prefer the simplicity of this kind of architecture. I would however only consider this if I can verify that the servers can truly be deployed in Linux.

    Right now I can't even find how to deploy the master server in Linux... Any hints?
     
  10. Gaski

    Gaski

    Joined:
    Jul 25, 2011
    Posts:
    84
    You can run the master server on Linux using mono.
    For example

    mono uLinkMasterServer.exe
     
  11. david.almroth

    david.almroth

    Joined:
    Aug 19, 2010
    Posts:
    18
    Yes it is possible and it is well tested. Your synax example is correct. It is documented in the manual on this page.
     
  12. bigjhnny

    bigjhnny

    Joined:
    Aug 10, 2010
    Posts:
    19
    Thank you! I was looking under "Master Server Proxy".
     
  13. bigjhnny

    bigjhnny

    Joined:
    Aug 10, 2010
    Posts:
    19
    So I've finished the "Unity network conversion" script. It went fairly smoothly except that I am not able to connect to the server.

    I have the master server running in ubuntu in a remote server. I have both the server and client running locally. The client refuses to use the list info from master server to connect to the local game server.

    It is unclear whether ulink has "nat-punchthru" built-in to the master server. The docs offer conflicting information regarding this. "useNat" and "facilitator" related API are all "not implemented".

    I did try forcing client to directly connect to the server without using the master server's information. It did work.

    My server of course in this case does not have a public IP. Does this mean that I can not test my setup without having the server in a public IP?

    Thanks in advance.
     
  14. david.almroth

    david.almroth

    Joined:
    Aug 19, 2010
    Posts:
    18
  15. Legacy

    Legacy

    Joined:
    Oct 11, 2011
    Posts:
    651
    quick question, i looked through the examples and things and from what i understand when creating a fully authorative server the server initiates the network.instantiate command. When i looked at the example it is asking for 3 static objects(proxy, creator, and owner) now how would this work in an mmo environment when the local player and other players are going to be using customizable models like different hair styles, faces, arms etc and the server is sending an rpc to the client telling it to instantiate a static object located in there resources folder.
     
  16. liverolA

    liverolA

    Joined:
    Feb 10, 2009
    Posts:
    347
    I am not sure i am correct but i will do it this way:
    if you checked offical customcharacter demo you should know that the character parts are generated by a script controller,so just make a basic "empty" player prefab and spawn it by ulink,then attach your gen script onto this
    instance,the script will read all items in runtime.
     
  17. Legacy

    Legacy

    Joined:
    Oct 11, 2011
    Posts:
    651
    yea i was thinking about that last night, i just have to size the character collider to the correct size before doing so or it will make him look like hes walking inside the ground or floating lol
     
  18. liverolA

    liverolA

    Joined:
    Feb 10, 2009
    Posts:
    347
    you are right,no matter which solution you are using,photon/sfs2x or ulink,you have to do this manually!!
     
  19. adaptive

    adaptive

    Joined:
    Feb 25, 2013
    Posts:
    6
    Indie License Q's:

    1) Does the license extend forever, even if and after turnover exceeds $100k/year? Any limits on that?
    2) Is a single license good for just 1 server, or for unlimited servers for 1(or more?) game(s) and unlimited CCUs?

    Thanks!
     
  20. Adam-Buckner

    Adam-Buckner

    Joined:
    Jun 27, 2007
    Posts:
    5,664
    The last post on this thread was more than one year old.

    Please do not "necro-post". If possible, search out a new thread.

    If you want to know more about the current state of this package, either check out their website:
    http://muchdifferent.com/?page=game-unitypark

    or use the google custom search engine in my signature and search for "ulink", "unity park" or "muchdifferent".
     
Thread Status:
Not open for further replies.