Search Unity

[NO CCU LIMIT] Forge Networking now OPEN SOURCE

Discussion in 'Assets and Asset Store' started by Brent_Farris, Dec 22, 2014.

  1. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    I believe that this is an addon to FN created by a user. I will have to review it to know more about it. Do you happen to have the link for it?
     
  2. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    Yes, FNR has a very locked down communication algorithm since it was completely developed outside of Unity and uses Unity as a 3rd party. This allowed us to remove reflection and other various hacks that were required to be a 100% unity asset.

    Now the system is stripped out of Unity and Unity is technically a 3rd party addon for Forge Networking Remastered. We can completely unit test the code and it can be completely used independently of Unity without any hacks. These were the original problems with FN that are all fixed in FNR.
     
    david55527 likes this.
  3. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    1) We have a very large amount of users that moved from PUN to Forge. We've never had any complaints about the transition, however if your game is very integrated, it could take a few more hours than projected to convert the project over. I'm sure there will be a few people in Slack that will be able give some insight on how they converted as well if you plan on purchasing :).

    2) Yes, by purchasing FN you will get FNR for free. In fact we are releasing FNR as an "Update" to the FN package and not as a "Upgrade". So anyone who has FN will get FNR for free :)
     
    loliconest likes this.
  4. PlayICG

    PlayICG

    Joined:
    Jul 17, 2014
    Posts:
    6
    Screen Shot 2016-12-27 at 9.17.46 AM.png

    How to fix this?

    OS: Mac Mavericks
    Unity: 5.5
    Forge Powered: v20
     
  5. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    I am not sure what is causing this error, do you have a stack trace for this?

    Also we are just about to publish Forge Networking Remasterd to the Asset Store which will effectively replace Forge Networking. This is a huge update and I would highly recommend migrating to this major update if possible :). You have access to the current version in Slack now.
     
  6. david55527

    david55527

    Joined:
    Mar 24, 2013
    Posts:
    58
    Sounds good! Will be purchasing soon :)
     
  7. CornerCase_Studio

    CornerCase_Studio

    Joined:
    Nov 17, 2016
    Posts:
    15
    Hi, what will the migration from FN to FNR be like? I just got started with FN (purchased it last week), and I'm about ready to start ramping up development and building out my game... should I wait? I have plenty of work left to do and can putter around making assets for a few days if you think it may be a good idea to wait for FNR.

    Alternately, is there a way I could get access to the current version so I can develop properly while waiting for the full release?
     
    Last edited: Jan 3, 2017
  8. AbyssWanderer

    AbyssWanderer

    Joined:
    Mar 15, 2016
    Posts:
    77
    Hello everyone.

    I have same question as dracolique.
    We are starting new project and want to implement Forge Networking.
    I suppose this is not best idea in front of FNR's release... so, when can we expect FNR to be released? Or how to we get beta version from Slack?

    Thanks.
     
  9. Vedrit

    Vedrit

    Joined:
    Feb 8, 2013
    Posts:
    514
    Is array or list serialization over network planned? Is there a recommended work-around? I'm testing out the free version and this is pretty important.
    Alternatively, is there an equivalent to UNet's [Command]?
     
    Last edited: Jan 7, 2017
  10. Vedrit

    Vedrit

    Joined:
    Feb 8, 2013
    Posts:
    514
    Anyone? Array/list network serialization? [Command] equivalent?
     
  11. LacunaCorp

    LacunaCorp

    Joined:
    Feb 15, 2015
    Posts:
    147
    FNR is set for release very soon, but it's still possible to try the RC testing versions through Slack- simply ask for access in #remasteredrequests.

    You can do the serialisation to binary manually and simply send it via an RPC as a byte[], or add the byte[] to a BMSByte for easy serialisation when dealing with a class/struct. A [Command] is part of UNet's weird, unconventional setup and is simply a Client>Server RPC- you can handle this through Receiver groups.
     
  12. AbyssWanderer

    AbyssWanderer

    Joined:
    Mar 15, 2016
    Posts:
    77
    Sorry, was away.
    Could I ask to send the package on my e-mail (I will provide the invoice-number)? I really don't like to register on servises I don't use.
    Here is my e-mail: prometheriy@gmail.com - let me know where to send invoice-number

    Thanks in advance!
     
  13. LacunaCorp

    LacunaCorp

    Joined:
    Feb 15, 2015
    Posts:
    147
    Hi again,

    Good timing- FNR is now available through the developer portal- you can download the latest version from http://developers.forgepowered.com/Profile

    -Josh
     
  14. AbyssWanderer

    AbyssWanderer

    Joined:
    Mar 15, 2016
    Posts:
    77
    Downloaded successfully and for now it works as it should =)
    Thanks!
     
    LacunaCorp likes this.
  15. AbyssWanderer

    AbyssWanderer

    Joined:
    Mar 15, 2016
    Posts:
    77
    Hi again.

    So we also are aiming to get lobby-server.
    When a new server comes online, it informs this lobby-server about its properties, so that the lobby-server can broadcast the list to clients who wish to play.

    We've been looking for solution on Slack, but still have several questions:
    1) Where can we find sources of lobby/headless server?
    2) Where can we get scene for the build?
    It says:
    Building your master server Unity instance is simple in Forge Networking, we have done all the hard work for you!

    Open your build settings
    Make the "MasterServer" scene the first scene
    Choose your supported build target platform
    Build the Unity instance and run it on the desired target


    ...But we have no MasterServer-scene - we only have script MasterServerResponse

    Where can we find this scene? Or if we have to create it ourselves - what has to be on that scene?


    Thanks in advance, guys!
     
  16. Vedrit

    Vedrit

    Joined:
    Feb 8, 2013
    Posts:
    514
    RPC's are a not a desirable option for trying to keep things synchronized. In my experience - maybe Forge deals with RPCs differently than UNet - RPC's only go out to connected clients, and would need to be sent again to newly connecting clients. Which would mean I'd have to additionally modify what happens when a client connects so that they get all of the lists that need to be kept uniform for all players, at all times.
    As for adding the byte[] to BMSByte, I don't really know what that is. The information on the class is a bit barebones. I can see how to add bytes to it, but not what to do with it after.
     
  17. LacunaCorp

    LacunaCorp

    Joined:
    Feb 15, 2015
    Posts:
    147
    Hi AbyssWanderer,

    There are some WIP lobby modules in the release version of remastered, which may be a good starting point for you to check out (note that a lobby server may be different from a master server in this context). The master server is sold separately to Forge, alongside the web server (through the dev portal) and allows you to do what you're speaking of. Last time I checked, it was $4.99, so it may well be worth the small investment if you need a quick solution (it's a standalone pure C# application, totally disconnected from Unity, which is the reason it doesn't come with Forge as standard).

    I didn't realise this had anything to do with syncing, you simply asked if it was possible to serialise a list/array over the network (natively it isn't, however, at least not in the current build, due to the hard-wiring of networked variables). On the other hand, you can buffer RPCs using receiver groups (Receivers.AllBuffered/Receivers.OthersBuffered), and these RPCs will arrive in sequence on joining clients. You're right, though- this definitely isn't the best method for outright syncing data. The way I see it, the easiest option for this would be to have the joining client send a request to the server for the actual list (this would always have the be the most up-to-date version of the data, in case any updates were received out of order, and outgoing calls could not be buffered), and then simply send out any updates to clients when the list changes.

    This is a very high-level view on the issue though- for the actual process, I would write the binary directly using FNR's FrameStream system, as there will be a lower overall latency than using an RPC. So something like RPC (client>server), request init. Server posts any such data to a byte[] and writes it directly to the requesting client. Client listens for binary messages on their socket, and updates their data accordingly. You might want to make a custom header for the message so you can send everything using the same system, something along the lines of a byte "index" for the action. So you can send an init (0) action, and initialise the lists with the received data. And then an update (1) action would tell the client to add the incoming data to their lists, or to update an existing reference, etc.

    I'd recommend taking a look at the VOIP module which comes with FNR, it has a few good examples of casting the socket to a UDPServer/TCPServer and directly writing a binary message out to a NetworkingPlayer reference, and deserialising this message on the other side.
     
  18. AbyssWanderer

    AbyssWanderer

    Joined:
    Mar 15, 2016
    Posts:
    77
    Yep, thank you - we already found that one and purchased. It still costs 5$ so no problems :)
    Investigating it atm.
     
  19. Scorr

    Scorr

    Joined:
    Jul 2, 2013
    Posts:
    73
    Hey guys, I heard FNC supports lan discovery. What about FNR? This is pretty much the deciding factor to go with UNET or FNR on my next project.
     
  20. AbyssWanderer

    AbyssWanderer

    Joined:
    Mar 15, 2016
    Posts:
    77
    What we did: We created master-server with a purchsed plugin, and one of users saw the host through lobby-server (success).
    But another user fails to do so. We think the reason is his router doesn't open port (he runs Windows 7, and it didn't ask to open any ports, btw).

    Still that user can connect via direct connection. And can't do so via lobby-server... Why?
    And if the problem is in ports, then how can we automatically open port on users' routers in such cases?
     
  21. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    Yes, it is in an upcoming patch :)
     
  22. Cranick

    Cranick

    Joined:
    Nov 20, 2011
    Posts:
    310
    This sounds like something that would be solved with the Nat Hole Punch server. We have just released the Nat Hole Punch server on our website, please feel free to check it out here! This will be working with the latest version of Forge on our website 1.1
     
  23. Cranick

    Cranick

    Joined:
    Nov 20, 2011
    Posts:
    310
    Forge Networking Remastered released!
    First and foremost, thank you the 225 people who have participated in the development of Forge Networking Remastered. It has been a huge privilege to have such an outstanding community of support help us pull through and make such a stable product to release.

    What Forge Networking Remastered is:
    We took everything we learned over the 2 years that we have been developing with Forge Networking (now known as Forge Networking Classic), and we set out to build a product with our already large community. We did so from the ground up, keeping only a few helper classes from classic. This redesign was majorly about removing reflection completely, speeding up the performance, minimizing bandwidth, creating clean extendable code, ease of use, we also decoupled unity and made it so that Unity is a 3rd party to Forge as much as Forge is a 3rd party to Unity. These changes make it incredibly easy and powerful for you to create and integrate with anything you can imagine.
    • Full Source Code
    • 1 Time Purchase (No monthly payments or annual fees)
    • NO CCU LIMIT
    • No Reflection
    • Nat Hole Punch (available through our website only)
    • Matchmaking
    • Master Server (available through our website only)
    • Cross-Platform
    • Network Blueprinting - NCW (A first in networking solutions)
    • Networking Variable Sync compression
    • Isolated network layer
    • Non-monobehaviour reliant
    • TCP/UDP/RUDP
    • Open worldwide community
    • Github Access on request (hit us up on slack for this!)
    • Simple to start, powerful to extend
    • No Unity Pro license needed
    • Trello Board for roadmap
    Forge Developer Website Link

    Nat Hole Punching (Traversal):
    Now you can give your players the ability to host without messing with their router settings, while still being able to classically host servers. This was a high demanded feature and we made sure to add it to remastered for its initial release. This is available right now on our website that will work with 1.1 of Forge Networking Remastered.

    Changing the way we communicate:
    As noted in previous posts, we are being more proactive and transparent with our users. We have filtered all our communication to make it more organized. Our main communication is Email and Slack. We still check the forums and Reddit, however it is becoming extremely long so the community may respond quicker here since we want to focus on our main channels.

    Please leave us a review on the asset store as we would love to hear your feedback on this huge update.
    Asset Store Link
     
  24. Scorr

    Scorr

    Joined:
    Jul 2, 2013
    Posts:
    73
    Thanks for the info! I'll go ahead with using FNR then :)
     
  25. John-Catan

    John-Catan

    Joined:
    Jun 12, 2014
    Posts:
    13
    hi,

    After much deliberation on which network library to work with, I bought FNR.
    Liked the fact that there is an active community/dev support and the code is open sourced.

    Couple of questions:

    1. how do i register my invoice on forgepowered.com? I tried adding my unity invoice number, it gave errors.

    2. I'm still working on Unity 5.3.4, I understand that FNR is for 5.4.4. Anyway I can use it on 5.3.4 as my project is not ready for upgrade to 5.4.4.

    Thanks,
    jon
     
  26. Cranick

    Cranick

    Joined:
    Nov 20, 2011
    Posts:
    310
    Hello John,

    Thanks for your support and would most definitely be able to answer your questions.

    1) Did you follow this guide step by step? Otherwise did you by chance already register this invoice on another account? If you have any further problems please contact me in a direct message or send an email to support@beardedmangames.com

    2) Currently we support 5.4.4+. We don't have plans at the moment to downgrade to 5.3.4 for the support if you want you can use the code portion of FNR and not import any scenes/prefabs as they may or may not work. Otherwise I highly recommend having two version of Unity installed, one for 5.4.4 and the other being your current. That way you can make sure things line up and match correctly. The worst case scenario is that you would have to redo the MultiplayerMenu scene, ServerBrowser, and the example 'CubeForgeGame' if that interests you to see it in action. The code itself should work in 5.3.4, but not 100% sure on the prefabs and scenes.

    Hope this helps!
     
  27. John-Catan

    John-Catan

    Joined:
    Jun 12, 2014
    Posts:
    13
    Thanks for the advice,

    1) Yes I followed the guide, didn't work. I'll drop support an email.
    2) I was having issue with functions that was new in 5.4.4 e.g. SceneManager.SceneLoaded. I'll give your suggestion a try and rework MultiplayerMenu, ServerBrowser and CubeForgeGame.
     
  28. Deusald

    Deusald

    Joined:
    Feb 11, 2014
    Posts:
    31
    I have a question about Bare Metal. Is it avaliable after buy?
     
  29. crimi

    crimi

    Joined:
    Jan 23, 2013
    Posts:
    6
    Happy with the asset so far.

    *Fixed, restart unity did help.

    I run unity 3d 5.5.1f1 and get in the network contract wizard an error when i want to save&compile. It does not repaint the newly created contract in the GUI before i dont close down the network contract wizard.

    Code (CSharp):
    1. ArgumentException: GUILayout: Mismatched LayoutGroup.Repaint
    2. UnityEngine.GUILayoutUtility.BeginLayoutGroup (UnityEngine.GUIStyle style, UnityEngine.GUILayoutOption[] options, System.Type layoutType) (at C:/buildslave/unity/build/Runtime/IMGUI/Managed/GUILayoutUtility.cs:268)
    3. UnityEditor.EditorGUILayout.BeginVertical (UnityEngine.GUIContent content, UnityEngine.GUIStyle style, UnityEngine.GUILayoutOption[] options) (at C:/buildslave/unity/build/Editor/Mono/EditorGUI.cs:7217)
    4. UnityEditor.EditorGUILayout.BeginVertical (UnityEngine.GUIStyle style, UnityEngine.GUILayoutOption[] options) (at C:/buildslave/unity/build/Editor/Mono/EditorGUI.cs:7202)
    5. BeardedManStudios.Forge.Networking.UnityEditor.ForgeNetworkingEditor.OnGUI () (at Assets/Bearded Man Studios Inc/Editor/ForgeNetworkingEditor.cs:1963)
    6. System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:222)
    cheers crimi
     
    Last edited: Feb 17, 2017
  30. AbyssWanderer

    AbyssWanderer

    Joined:
    Mar 15, 2016
    Posts:
    77
    Hi all.
    So as usually [:)] we are making lobby-server which broadcasts clients list of available hosts, so that they connect to each other peer-to-peer.

    We were using the latest version from the portal and plugin NAT-hole-Punch-server, but we where unable to see the list of hosts.
    Although NAT saw all three users: http://prntscr.com/ea32zj

    Could you, please, give us steps to actually rise the lobby and server-browser?
     
  31. LostPanda

    LostPanda

    Joined:
    Apr 5, 2013
    Posts:
    173
    @Cranick @farrisarts VOIP Run Errors: EXCEPTION] Message: Array index is out of range. how fixed? thanks!
    log=>
    [2/19/2017 11:48:06 AM - INFO] ========= START RUN =========
    [2/19/2017 11:48:37 AM - INFO] PLAYER DISCONNECTED 0.0.0.0
    [2/19/2017 11:48:57 AM - INFO] ========= START RUN =========
    [2/19/2017 11:49:16 AM - INFO] PLAYER DISCONNECTED 0.0.0.0
    [2/19/2017 11:49:52 AM - INFO] ========= START RUN =========
    [2/19/2017 11:50:16 AM - INFO] ========= START RUN =========
    [2/19/2017 11:50:32 AM - INFO] PLAYER CONNECTED 192.168.8.230
    [2/19/2017 11:50:32 AM - INFO] PLAYER ACCEPTED 192.168.8.230
    [2/19/2017 11:50:32 AM - INFO] PLAYER DISCONNECTED 192.168.8.230
    [2/19/2017 11:51:20 AM - INFO] PLAYER DISCONNECTED 0.0.0.0
    [2/19/2017 11:51:28 AM - INFO] ========= START RUN =========
    [2/19/2017 11:51:37 AM - EXCEPTION] Message: Array index is out of range.
    at BeardedManStudios.Forge.Networking.Unity.Modules.VOIP.ToFloatArray (BeardedManStudios.BMSByte data) [0x00000] in <filename unknown>:0
    at BeardedManStudios.Forge.Networking.Unity.Modules.VOIP.Read (BeardedManStudios.Forge.Networking.NetworkingPlayer player, BeardedManStudios.Forge.Networking.Frame.Binary frame) [0x00000] in <filename unknown>:0
    at (wrapper delegate-invoke) BeardedManStudios.Forge.Networking.NetWorker/BinaryFrameEvent:invoke_void__this___NetworkingPlayer_Binary (BeardedManStudios.Forge.Networking.NetworkingPlayer,BeardedManStudios.Forge.Networking.Frame.Binary)
    at BeardedManStudios.Forge.Networking.NetWorker.OnMessageReceived (BeardedManStudios.Forge.Networking.NetworkingPlayer player, BeardedManStudios.Forge.Networking.Frame.FrameStream frame) [0x00000] in <filename unknown>:0
    at BeardedManStudios.Forge.Networking.UDPClient.PacketSequenceComplete (BeardedManStudios.BMSByte data, Int32 groupId, Byte receivers) [0x00000] in <filename unknown>:0
    at BeardedManStudios.Forge.Networking.UDPPacketGroup.CompleteSequence (UInt64 id, BeardedManStudios.Forge.Networking.UDPPacketSequence sequence, BeardedManStudios.Forge.Networking.PacketComplete packetCompleteHandle) [0x00000] in <filename unknown>:0
    at BeardedManStudios.Forge.Networking.UDPPacketGroup.AddPacket (UDPPacket packet, BeardedManStudios.Forge.Networking.PacketComplete packetCompleteHandle) [0x00000] in <filename unknown>:0
    at BeardedManStudios.Forge.Networking.UDPPacketManager.AddPacket (UDPPacket packet, BeardedManStudios.Forge.Networking.PacketComplete packetCompleteHandle) [0x00000] in <filename unknown>:0
    at BeardedManStudios.Forge.Networking.UDPClient.ReadNetwork () [0x00000] in <filename unknown>:0
    at System.Environment.get_StackTrace()
    at BMSLogger.PutLogInFile(Logtype type, System.String log)
    at BMSLogger.LogException(System.String log)
    at BeardedManStudios.Forge.Logging.BMSLog.InternalLog(Logtype type, System.String text, System.Object[] args)
    at BeardedManStudios.Forge.Logging.BMSLog.LogException(System.Exception ex)
    at BeardedManStudios.Forge.Networking.UDPClient.ReadNetwork()
    at BeardedManStudios.Threading.Task+<Queue>c__AnonStorey0.<>m__0(System.Object state)
     
  32. Astaelan1

    Astaelan1

    Joined:
    Sep 29, 2015
    Posts:
    192
    @Cranick
    I'm glad to see Forge is still going strong, and this new rewrite is very promising from a birds eye view. I haven't had a chance to look at it yet, but I did have a couple questions since I bought Forge back in 2015 and then got busy with other things.
    What is the deal with distributing any server parts along with a client? Can we build "dedicated" servers that run physics but don't render, and distribute any server components involved from Forge with the game? I am thinking your typical 64-256 player private hosting depending on server resources.
    I recall one of the big features I picked up the original version for was it's ability to handle proximity based enter/exit and updating... Now I see the new patch today for Remastered goes into proximity stuff a bit. Where is this at in the current version, is it possible to still optimize network traffic by limiting the updates by proximity?
    Another thing I recall from classic, was that you could also optimize by sending input events rather than actual translations... with the new wizard oriented Remastered, is there still a template for this approach (or perhaps integrations with something like Rewired/Third Party Controller/uFPS)?
    And another question regarding larger data, can you stream larger chunks of data with a lower priority (possibly compressed) while still ensuring other data like movement syncing is mixed in with higher priority?

    I've been looking for more information on Remastered, but it seems the classic information is still fairly dominant and fairly limited documentation. The code may be documented better making it easier to use IN Unity, but I'm not there yet.

    I should be able to build a decent portion of the terrain and game before I introduce the networking aspects, and would just like to be able to search some questions I'll have before they come up.
     
  33. Shinao

    Shinao

    Joined:
    Mar 7, 2014
    Posts:
    36
    Hi,

    I'm trying out the network assets from a friend library to check out what's possible with them.
    The documentation is a bit weird, there seems to be features not listed, for example the UpdateInterval which is a must to know, the VOIP module (that I can't seem to make it work) etc... I saw on this thread that there is an admin module/webpage ? It sounds interesting and all but why is there almost no information on theses features ?
    Also there are some videos on youtube but they look a bit dated, are they still good for FNR ?
    Finally I'm just going to quote what Astaelan1 said just two post earlier :
    It seems like a must to me.
    Is it also possible to get Slack access without being the proprietary of the asset ? This library seems promising but I just don't want to jump ship without more informations.

    THanks
     
  34. Ruchir

    Ruchir

    Joined:
    May 26, 2015
    Posts:
    934
    Hello,isn't there a PDF documentaion or something available(there are not many videos showing all the functionality)?
    I am new to networking,so I really need one with a sample game to design or something.
     
  35. Labmda

    Labmda

    Joined:
    Oct 21, 2016
    Posts:
    3
    hello can you help me please i can connect with other computer in lan but i cannot join with my android, actually i work with forge network remaster(pay version)
    i have make little tuto for open port on window maybe help somebody
    before i cannot join with other computer my host after open port it work


    edit: i have found solution, just use TCP
     
    Last edited: Mar 2, 2017
  36. couchprince

    couchprince

    Joined:
    Nov 15, 2012
    Posts:
    1
    Hello,

    I recently purchased Forge Networking Remastered. I've been going through the PDF and some of the examples you have for Remastered, but I'm having difficulty with trying to add some functionality your documentation doesn't seem to give.

    I've tried looking for answers on this forum, but the answers really didn't give much.

    This is for a simple Co-op game with 6 or so players at most.

    1) Host of the server specifying a password: So in your multiplayer menu examples, the host just clicks a button to host the server. What if I wanted the host to be able to specify a password for clients to use in order to connect? I've been looking around the example code and the NetworkManager code, and I can't seem to find where I would store that information from the MultiplayerMenu or NetworkManager code, and how clients trying to connect would have to provide that password in order to join.

    2) Players providing a username: With such a small game, I don't anticipate having to use external databases to house such information. As it is, there is a property for NetworkingPlayer called Name. So for an example, at the MultiplayerMenu screen in your example, the joining client could provide a Username (as well as the server password mentioned above). When the player joins, that name provided is populated in the NetworkingPlayer.Name field. Again, I'm not sure how I get that information from pre-login to post-login.

    Any help you can give would be appreciated. So far the Contract wizard I have a good grip on. But trying to get over these little hurdles would be a huge help.
     
  37. Epsilon2

    Epsilon2

    Joined:
    Apr 24, 2016
    Posts:
    7
    Hello, Forge developers.

    I am relatively new in Unity Networking and I gonna select Forge Networking Remastered as a solution for our new MMO game.

    I've read lots about Forge and only question I have to get answer before finally make my selection. It is below.

    We are implementing a game world constructed from a set of multiple rooms. There are up to 24 players can be in each "room". Rooms are not linked with each other and I think we gonna use separate server instance to control each "room".
    Rooms normally stored in their frozen state at the server HDD and become active only when at least one player visit it.

    This is the scenario I imagine:
    For example Player A needs to visit Room1. The game client is requesting master server (which is simple and can be made even with Apache/PHP) for the Room1. Master server is checking - whether Forge instance for this room is already running or not. If yes, PlayerA start connecting to existing instance and thus JOINs the room. If not, master server is creating new Forge instance for Room1 first, and then allow Player A to join this instance.

    The question is: will Forge allow me to create multiple instances on the one physical server? How much memory and CPU each instance will take (only server itself, excluding game logic)? Is it really required to start separate instance for each room or we can run some rooms within the same Forge instance (however rooms should be completely independent - I mean physics, colliders etc)?
    Is there any ready docs/examples which explains how to implement something like this using Forge?

    Thank you for answer and for your great product!
     
    Last edited: Mar 3, 2017
  38. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    Yes, you just need to change the port for the various instances

    This is up to the CPU you are using, however idle Forge Networking without any game logic will take a fraction of a percentage of CPU. Forge is very optimized to not be doing any heavy work without being driven by game logic. Forge networking being idle has been reported by users to have the lowest CPU usage of all the networking solutions that they have used. I've not tested the others, this is just the information that I've received from users (you are free to try it yourself to compare :)).

    Technically you can run tons of servers in 1 instance in Forge Networking. Your limitation is Unity. The scene management of the process is complex and if you are using physics this might not be an option.

    All of our docs can be found here: http://docs.forgepowered.com/
     
  39. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    Sorry for the late reply, it is currently not available. All of our efforts are going into Forge Networking Remastered at the moment and it's most important addons (Master server & NAT Traversal Server)
     
  40. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    We've just updated the NCW, are you still seeing this issue?
     
  41. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    Hello! Sorry for the late reply, I've just updated to the new fancy documentation and have added some docs on the Master Server and how to implement it: http://docs.forgepowered.com/ (See the Master Server section on the left)
     
  42. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    Hello, sorry for the late reply, was this on the latest version 21.5? We also have a big update (version 22) coming out soon that is on git.
     
  43. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    We have the new docs for Remastered up here: http://docs.forgepowered.com/
    We have all the new built api up here: http://forgepowered.com/ForgeNetworkingRemasteredAPI/html/index.html

    Proximity is in so that you are able to send messages to only those within your proximity. We will be documenting it soon; right now our focus is on documentation.

    You are still capable to send only inputs across the network. In fact we made it more compressed and faster to do so if you wanted. Then if you needed to rewind to find out what happened at a given timestep you can do that as well since all network requests have an attached timestep.

    You can actually open up secondary server/client connections in parallel with your priority game connection which would be a great way for you to manage long term stream data and ensure it doesn't block your game network threads.
     
  44. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    Hello, our primary focus right now is updating documentation. We will be updating our video tutorials very soon. Here is the link to our brand new documentation which is much cleaner than the previous and it is searchable: http://docs.forgepowered.com/
     
  45. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    Our new documentation can be found here http://docs.forgepowered.com/, we will be updating the video documentation soon. Also you can join our Discord (via your developer profile) to get live help :)
     
  46. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    Hello and thank you for your support! :)

    So we have a new documentation page here http://docs.forgepowered.com/ which is going to be much better than the pdf with syntax highlighting and a search option.

    You can setup an RPC where the client needs to send the password to the server (encrypted if you like) then the server will read the password and kick the player if it is not valid. You can also setup the server to auto-kick a player that is connected who has not sent a password in a specific amount of time if needed.

    You could do this with an RPC as well, with the RPC you can send the name and password to the server as part of a validation step. You will want to do this on a global network object (one that is marked as "don't destroy on load" or through building a MonoBehaviour-less NetworkObject and using that).

    No problem. So I'm sure there is still a lot of questions and things you wish to know more about that is hard to explain in 1 forum thread post, however if you want to join the Discord, there are tons of people (including Forge developers) who can help you out in real time as well :). To join Discord, hop on over to your developer profile and click on the Discord icon to get started! :D
     
  47. Angwe

    Angwe

    Joined:
    Jul 28, 2016
    Posts:
    1
    That link really needs to be on the main site :D
     
  48. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    You are correct and I have made the change! :D Thanks for catching that, a lot going on update wise so that card slipped haha.
     
  49. AbyssWanderer

    AbyssWanderer

    Joined:
    Mar 15, 2016
    Posts:
    77
    Hi.

    Thank you for the documentation you've made - life goes much easier with it.

    However, we still were unable to rise lobby-server (that broadcasts list of hosts to clients so that they connect peer-to-peer). We can't fulfill this stage in documentation.

    After calling client.Connect(masterServerHost, (ushort)masterServerPort); the event bindSuccessful is called, but serverAccepted is not called.
    Client sees this: http://prnt.sc/ehv2so
    Meanwhile client.client.Connected returns true. How is that possible? Could you direct us, please?
    Client is of type "TCPMasterClient"

    Note that if we make everything (master-server, host and client) on same computer - then client sees host: http://prnt.sc/ehv20m

    P.S. Yes, we are using plugins "Unity Independent Master Server REMASTERED" and "NAT Hole Punch Server REMASTERED"
     
  50. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    No problem :)

    Can you check the client.Connected boolean rather than client.client.Connected? It is possible that you bound the socket but you have not connected to the server and the request is just active (not timed out yet).

    So this makes me think that it is your firewall settings on the machine that your Master Server is on. Make sure that the machine firewall allows the application and the network firewall has it's port forwarded (for the master server and the nat server). The ports do have to be forwarded for these servers.