Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

[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
    Awesome reviews! We definitely have huge scalability in mind but it will take us a little bit of time to play catch up on the bigger guys. We will make sure to have you saying "Forge it is!" soon enough hopefully! :D I think these reviews are really helpful because it shows us what to look at in more depth so that we can bring those things to Forge as well as avoid the things that were not good about the other ones!

    Thanks for taking time to make the review and please feel free to continue giving us any feedback that you have, maybe some things that are missing from the other ones you would like to see and so forth! :)
     
  2. jpthek9

    jpthek9

    Joined:
    Nov 28, 2013
    Posts:
    944
    Yes, definitely! I'm really looking looking forward to the further development of Forge. I actually have a great idea for a game that needs an authoritative server and would definitely try out Forge for it. At that point, this networking library will might be far past its final release and a popular choice for many.

    One thing I'd really like from Forge is independent developer friendliness. It's probably not yet time to decide pricing and licensing rules but there should be a way for people like me to evaluate it before making a decision. I think this is partly why Photon was so successful, because they were very friendly to the vast majority of developers by giving them a simple out-of-the-box setup complete with a cloud. It's definitely what got me sucked into it in the beginning.
     
  3. Cranick

    Cranick

    Joined:
    Nov 20, 2011
    Posts:
    310
    This is a great review for everyone to look at for Multiplayer solutions currently, as Brent has said, we are still in development and keeping our heads and ears up and running as much as possible so that we may fill the needs of the many. Thank you for taking the time and mentioning us, glad that this is out there so that people can have an idea of solutions that are out there currently and what is still being worked on. :)
     
    jpthek9 likes this.
  4. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    That sounds awesome! We can't wait to have you working with the system for a full game :)

    This is an excellent idea! We actually have a design for a system that will allow us to provide an evaluation to users who would like to try before they buy :). We will be sure to make this an important part of our system, so that people who are on the fence can try out Forge and find out why they need to use it for their games!

    Thank you for this reference, we will analyze it well and learn from those who came before us! We do have many plans for cloud as well after the initial release, the Arbiter I spoke of in the very beginning will become a powerful extension to the stand alone library!
     
  5. Zaddo67

    Zaddo67

    Joined:
    Aug 14, 2012
    Posts:
    489
    I checked out 8.1. The client connect issue is now fixed, thanks :)

    I am still having some problems with BMSByte.

    Data Sent:
    12-00-01-00-02-69-64-05-00-00-00-00-00-00-00-01

    Data Received:
    03-00-00-00-04-00-00-00-01-00-00-00-00-00-00-00-63-00-00-00-00-00-00-00-00-07-00-00-00-73-70-61-77-6E-4D-65-12-00-01-00-02-69-64-05-00-00-00-00-00-00-00-01-00-00-00

    It took me a couple hours to first work out that the received byte array is not what was sent and then work out how to get the sent data out of the received byte array. I have copied my solution below. As you can see, I am manually removing the garbage from the front of the array that was added after it was sent across the network. As well as the 3 nulls that are suffixed to the sent data.

    I tried using the BMSByte.RemoveStart method to clean up garbage at the start of the array, but this just seems to increase the value of StartIndex?

    Is there an easier way to get the transmitted byte array out of BMSByte on the receiver?

    Also, what is the purpose of all the extra data that is being added to the array when it sent across the network?

    EDIT: Another question. I noticed you have a compress method on the BMSByte. However, there is no uncompress? What is the correct process for using compress?

    To Send:

    Code (csharp):
    1.  
    2.                 BMSByte payload = new BMSByte();
    3.                 payload.Clone(bytes);
    4.                 Networking.WriteCustom(command, myNetworker, payload, false, NetworkReceivers.Server);
    5.  
    To Unpack:

    Code (csharp):
    1.  
    2.         public static byte[] GetDataStream(NetworkingStream stream)
    3.         {
    4.                 byte[] data = new byte[stream.Bytes.byteArr.Length - stream.Bytes.StartIndex()];
    5.                 Array.Copy(stream.Bytes.byteArr, stream.Bytes.StartIndex(), data, 0, stream.Bytes.byteArr.Length - (stream.Bytes.StartIndex() + 3));
    6.               return data;
    7.         }
    8.  
     
    Last edited: Feb 1, 2015
  6. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    No problem! :D

    Hey! Sorry about the issue :( This is probably more of a lack of documentation around this topic.

    So are you just needing the raw byte data? If so you can actually use the stream.ByteReadIndex combined with the BMSByte:

    Code (CSharp):
    1. byte[] data = new byte[stream.Bytes.Size - stream.ByteReadIndex];
    2. Array.Copy(stream.Bytes.byteArr, stream.Bytes.StartIndex(), data, 0, data.Length);
    Otherwise if you are trying to send basic data types or Vector3, Vector4, Color, or Quaternion you can use:

    Code (CSharp):
    1. // Caching
    2. BMSByte test = new BMSByte();
    3.  
    4. // ...
    5. // This will prepare the cached variable to store new data
    6. test.Clear();
    7.  
    8. // This will map the bytes to the test object
    9. ObjectMapper.MapBytes(test, OwningNetWorker.Players.Count + 1);
    10.  
    11. //...
    12. // Funciton later on, using NetworkingStream stream
    13. int count = ObjectMapper.Map<int>(stream);
    Please let me know if this helps or not. Also maybe you can send me a short sample and I can work off that and use it for the better answer :)
     
    Zaddo67 likes this.
  7. jpthek9

    jpthek9

    Joined:
    Nov 28, 2013
    Posts:
    944
    I've been working with Forge more and I noticed a small bit of bandwidth improvement that could be made. For calling RPC's, a string is used to identify the methods. I'm guessing the string is sent over the network which means more bandwidth overhead than necessary.

    There could be a system that automatically finds [BRPC] methods and registers them into some kind of dictionary. To call an RPC, the dictionary key (an efficient byte) is sent instead of the string then when the byte gets to the other side, it's interpreted and returns the method's name from the dictionary.

    Is this is possible to implement into Forge? It's just that for RPC-intense games, every byte counts. A byte for the identification would work perfectly as I can't think of a game that would require more than 256 unique RPC's.

    Also, I'm glad that Forge uses doubles! I've always hated floating math imprecision >.<.
     
    Last edited: Feb 1, 2015
    Zaddo67 likes this.
  8. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    You are right, in the latest tests we have moved these to being sent as int dictionary look ups already :D. We actually do int->string dictionary lookups for other parts so we decided it was far enough along to start mapping both our RPC and our WriteCustom methods. :) You will see these changes in Version 9!

    ;D We ourselves have needs when floats just don't suit the case.
     
  9. jpthek9

    jpthek9

    Joined:
    Nov 28, 2013
    Posts:
    944
    Oh, I just thought of something that might work well with Forge. One of the biggest things that made DarkRift so flexible was that it worked a lot with delegates. Developers could easily create their own ways to process data by doing DarkRift.onData += MyReceiveDataBehavior where MyReceiveDataBehavior would have 2 parameters like MessageInfo (network stuff) and Data (my parameters). To call all methods in onData, I'd just write SendMessage(Targets, Data). Data would be an object[]. Developers could maintain their own dictionary of methods based on a value in the Data parameter. For me, this system gave me more control and ease of use. I think it'd also help performance by taking out the need for reflection or reverse dictionary.

    Here's a pseudocode example for the system I'm describing: http://pastebin.com/rJH4bKBn.

    If you guys have the time, could this be implemented for custom operations? It's definitely not of top priority as the current RPC system works fine but it'd be nice to be given more control.

    Edit: Never mind! I didn't do too much looking into before posting this. The system has already been implemented with NetWorker.dataRead! This is awesome!
     
    Last edited: Feb 1, 2015
  10. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    :D Glad you found the events. We are working very hard to make the entire system event driven. We have provided delegates for connections, disconnections, disconnections with messages, data read events, and soon we will be adding a few more for things like failed packets, high response times, and various other warning/errors that could be happening behind the scenes. This will enable the developers to have the power to know when something is going wrong, where it is coming from and maybe implement some run-time logic to adapt to these issues :)

    Edit: We are also working on a "WriteRaw" method which will allow you to write your own custom message across the network with only a 2 byte header, this will not be reliable but will allow you to register an unsigned short (other than 0) id and then when the network receives a message that starts with a number that is not 0 it will fire off a "ReadRaw" event. This way you can make messages as tiny as you want + 2bytes for all those POWER users :)
     
    Last edited: Feb 1, 2015
  11. jpthek9

    jpthek9

    Joined:
    Nov 28, 2013
    Posts:
    944
    Haha that sounds great. I've always thought of bandwidth as a currency and I'm super miserly with it.

    So PlayFab turned out to not be what I expected - it's a solution mainly for accounts and currency but doesn't have much support for real time servers. I think the next step is prototyping my game with Forge. I'm really excited about all these features already implemented and the features to come. I tested the headless server in batch mode and it performed very well.

    To sum up my perspective on Forge:
    1. Event system - check
    2. Performance - check
    3. Bandwidth efficiency - check
    4. Control - nearly check
     
    Last edited: Feb 1, 2015
  12. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    Ah! Well no worries, don't tell those guys be we plan on having that system built in, in the future ;)

    Awesome! Glad to hear it :). I am actually about to send out Beta Version 9 which gets rid of those strings from the RPC's and adds in that new WriteRaw method in the Networking class :)

    After I send out Beta V9 (since it has some critical fixes as well) I will start working on making some separate demo scenes showing off individual features before I forget all these things we have added! XD

    I like this :). Now we can focus on getting that "Control" to a "check" and not a "nearly check". Just let us know what you need and it will find it's way in! :D
     
  13. jpthek9

    jpthek9

    Joined:
    Nov 28, 2013
    Posts:
    944
    The only thing is that WriteRaw event I want to take advantage of. Control is probably as good as check because everything you guys have said are working on came out fast and well.

    Having an integrated database system, simulation-capable servers, and a cloud all united under one networking library... Where have you been all my life sweet love?
     
    Last edited: Feb 1, 2015
  14. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    Awesome, you should see it in your inbox in a few minutes :)

    So since those are all check, now all we need to do is figure out how to make them check++

    I will be starting on integrating our own proprietary key-value cache database into the system. I will be stripping it down as it currently is an exe. It will be integrated with the server and allow you to cache game data to a key-value store at runtime without any extra connections (though the original version of it was connection based and independent).
     
  15. jpthek9

    jpthek9

    Joined:
    Nov 28, 2013
    Posts:
    944
    That sounds great! I have a really good feeling about how far Forge will go and how far it'll take my game. I'm very excited for V9 but unfortunately I need to get some shut eye. Checking my inbox will be the first thing I do tomorrow (or rather, later on in the morning).
     
  16. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    Awesome! :) We couldn't ask for anything more. We will be sure to work closely with you to make sure that we can make your game a reality! Let me know if you have any other awesome ideas!

    I probably should take a lesson from you and go to sleep as well (it's either super late or super early here depending on your perspective). Working too late seems to be something I am good at these days XD.
     
  17. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    Hello all! We are excited to be releasing "Forge Bare Metal" as a part of the beta. This is a .exe that you can run that sits on top of our system but independently of Unity. Now you can have a fully message based server running without any of the overhead of the Unity Engine (for those who don't need physics and such).

    upload_2015-2-1_15-3-18.jpeg
     
    Zaddo67 and jpthek9 like this.
  18. jpthek9

    jpthek9

    Joined:
    Nov 28, 2013
    Posts:
    944
    Wow! This is absolutely perfect! And the sexy text art! By the time Forge is finished, there'll be no competition. I mean, authoritative servers are one thing, but 0% CPU bare metal servers will extend Forge to new frontiers.
     
  19. Zaddo67

    Zaddo67

    Joined:
    Aug 14, 2012
    Posts:
    489

    This looks exciting :eek: Can't wait to see how it works.

    Is the Arbiter Server now available? I want to start looking at building a Foyer and getting your recommendation on how to setup a server on the web for brokering game host's and client connections.
     
  20. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    Thanks for the kind words :). We are working our best to insert all of our collective knowledge here at the studio in game development, networks, databases, HTTP (REST), etc to make Forge the only system that developers will need. We want to make a system that WE want to use too; and to us, having 20 third party plugins to accomplish one game type seems silly. Since we too are using the system (even now as I type) we are striving for the things we would like in a system. Such as power, low memory, low cpu, flexibility, ease of use, raw programming power, and plug-and-play as well. Thanks to all of the testers inputs, we have been able to get features that we haven't immediately seen (or some things we didn't notice and needed to optimize) so we are very grateful for all of the input! Hopefully together we can all build a system that we need, so that we can make our dream games and applications come true!
     
    jpthek9 likes this.
  21. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    Bare Metal is a piece of the Arbiter. With its completion we will be one step closer to having the Arbiter ready for beta testing. We are actually slowly seeping into developing the Arbiter now (as seen by the Beta completion of Bare Metal). My hope is to have the Arbiter out for Beta testing as soon as possible. There are still some major features that need to be added to the system, such as our "not named yet" load balancer and "also not named yet" cloud/database integration as well as a couple features I can't talk about now that will hopefully be a game changer for most.
     
    Zaddo67 likes this.
  22. jpthek9

    jpthek9

    Joined:
    Nov 28, 2013
    Posts:
    944
    I have a few ideas for names if you'd like some.

    For the load balancer,

    Maat (The God of Balance responsible for the Weighing of the Heart; you could also name the server instances 'Maat's Feathers' because of how lightweight they are).

    For the cloud,

    Shu (The God of Air; he has a pacifying, controlling influence and omnipresence like an integrated cloud database).

    I think the Egyption motif also fits the whole theme of 'Forge' and 'Arbiter' with their shining, innovative metal creations and solemn religion.
     
    Last edited: Feb 2, 2015
  23. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    These are awesome names, I'll have the team check out this post and see what their thoughts are. :D Thanks for the input, names are usually so hard to come up with XD
     
  24. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    A simple demo of Bare Metal as well as a request for commands that developers would like to see:

     
  25. jpthek9

    jpthek9

    Joined:
    Nov 28, 2013
    Posts:
    944
    I'm super excited about the bare metal version. I have a suggestion for the bare metal servers that might take a load off your shoulders. PlayFab's account, currency, and cloud systems are already very well established. Forge could provide default support for PlayFab (maybe even become PlayFab's default networking library). I found an article describing the commands needed for PlayFab integration: https://support.playfab.com/support/discussions/topics/1000040625. They say they plan to integrate Photon into their system but I'd rather have authoritative capability and efficiency with Forge :).

    If it's not too much work, can there be an option to use Forge with PlayFab? They work by instantiating a new instance of the server build through their matchmaking system which would synergize with Forge very well.
     
    Last edited: Feb 2, 2015
  26. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    We are currently developing our own system for this as we have industry experience in such things; however we will look into their documentation and find out if we can easily plug into their api's. I am all about developing the system in a way that it is flexible and works well for the developers using it :). Thanks for the link, we will look into it asap :D
     
  27. jpthek9

    jpthek9

    Joined:
    Nov 28, 2013
    Posts:
    944
    Oh, forgive me for even asking! I feel ashamed for insulting you guys by second guessing your capabilities.
     
    Last edited: Feb 2, 2015
  28. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    Haha XD, we are not offended! ;D That just tells us that you are wanting those kinds of features so we best make sure they all make it into the system :)
     
  29. jpthek9

    jpthek9

    Joined:
    Nov 28, 2013
    Posts:
    944
    Your prediction was correct. Forge it is!
     
    Last edited: Feb 2, 2015
    Cranick likes this.
  30. Zaddo67

    Zaddo67

    Joined:
    Aug 14, 2012
    Posts:
    489
    It would be awesome if the Bare Metal server supported plugins.The Arbiter server would be an example of a plugin.

    Then the community or you guys could develop additional plugins, eg: Leaderboards, Achievments, DLC.

    This could provide Bearded Man Studios with another revenue stream for the plugins ;)

    Therefore, my suggestion for commands are:
    PluginLoad xxxxxx
    PluginUnload xxxxx
    PluginRestart xxxxx

    Additional Features:
    - load plugin automatically through the config file.
    - Plugin commands. So commands for that plugin can be entered on the console.

    ps: I assume the bare metal console can be accessed remotely.
     
    Last edited: Feb 2, 2015
    jpthek9 likes this.
  31. jpthek9

    jpthek9

    Joined:
    Nov 28, 2013
    Posts:
    944
    I'm 100% for that! Maybe the plugin system could be an easy drag-and-drop system so developers won't have to mess around with the code and get it all yucky. Just build a .dll file and put it in the plugins folder. The server automatically instantiates an instance of the class inheriting from 'Plugin'. That would be a great, easy to use system I'd thoroughly enjoy and contribute to.

    On a side note, how much bandwidth overhead does WriteRaw have? I'm deciding at what rate aggregated command packets need to be sent.

    Also, I'm not sure what the id part of WriteRaw does. If it's not significant, can it be done away with? Sorry I'm just really greedy with my bandwidth.

    Nevermind! I actually found a use for it as a wrapper for the byte array identifying the bytes each element uses in the array.
     
    Last edited: Feb 2, 2015
    Zaddo67 likes this.
  32. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    We actually have a plugin system for the Arbiter. That is a fantastic idea to bring that plugins system to Bare Metal. We can actually easily bring the structure over to implement it :)

    This is a good idea too! :D

    Our current plugin system for the Arbiter auto-loads the plugins found in a plugins folder but I think it is a better idea to be able to load an unload the plugins at will too. We will make a directory AutoLoad that will pull the ones you want loaded at start in :)
    If you can access the device running Bare Metal remotely, you should have access to it too. We can possibly make an API after the fact that will allow you to connect to the server via an app or something :)
     
    Zaddo67 likes this.
  33. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    WriteRaw has 2 byte overhead for the identifyer. We decided to make this a short so that we can identify our main messages with 0 and allow the developers to identify any of their messages and filter them out with any number in the 65,535 range (other than 0 of course).

    :D Glad it came useful!
     
  34. jpthek9

    jpthek9

    Joined:
    Nov 28, 2013
    Posts:
    944
    Thanks for the info. I have a few more questions before I flesh out my game's networking.

    What's the overhead of a packet send in total? Is it consistent with the information I found here of 48 bytes of overhead? This value or anything close is very manageable for me.

    You guys probably haven't started on the cloud, but I'm definitely planning on using it. what's a good number to keep the bandwidth under on a cloud server instance? I can trade off some responsiveness and get it under 5KB if needed.
     
  35. Cranick

    Cranick

    Joined:
    Nov 20, 2011
    Posts:
    310
    Thank you, this made our day!

    We will continue to grow this system as we want it to be a fantastic system, not only for other developers, but for our team as well. The feedback we get can only help improve the flow of work for everyone that is involved and we plan to keep that going for the future of Forge as well.
     
  36. jpthek9

    jpthek9

    Joined:
    Nov 28, 2013
    Posts:
    944
    You're welcome and thank you for making Forge :D! I'll do my best to provide as much feedback as needed and keep up to date with every new feature.
     
  37. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    Our headers are normally 15 bytes (there is one case that happens to be 19 bytes but that is 1 time in the beginning). The payload of the packet is relative to the information that is being sent. If it is an RPC with a lot of parameters then the payload will be larger, however the headers remain at 15 bytes.

    We have designs in place for the cloud. In many ways, each bit that we work on for Forge is adding to completing the cloud due to our extremely formatted design. We have designed Forge as much as we can to make it super easy to extend and add features to (thus why we have been able to power-house features out quickly).

    To answer(ish) the question though, if we are talking amount-per-second then we have yet to really test out the system in a distributed manor. We will make a note to get statistics for this question so that we can properly answer it. As for now, you seem very keen on keeping your bandwidth as low as possible :) so I would like to say, keep doing what you are doing and keep monitoring your bandwidth usage as you extend. Hopefully we can generate some key statistics that will help aid your quest very soon!
     
  38. jpthek9

    jpthek9

    Joined:
    Nov 28, 2013
    Posts:
    944
    Great! 15 bytes is extremely efficient so that means I can be a bit more aggressive with packet sends. I'll take after Forge and try to keep my implementation as variable as possible which would also be good to suit individual games' needs.
     
  39. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    Awesome! :D Let us know if you need anything!
     
  40. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    I am here to report that this feature is now in and a part of Bare Metal. You place all your plugins in the "Plugins" folder, found in the Bare Metal directory. If you want your plugin to be loaded when Bare Metal begins, then you will put your plugin in the "AutoLoad" folder inside of the "Plugins" directory :)
     
    Zaddo67 likes this.
  41. jpthek9

    jpthek9

    Joined:
    Nov 28, 2013
    Posts:
    944
    Awesome! I'll start coding my game server-side as soon as I get my hands on Forge: Bare Metal (sounds like an intense sci-fi action movie). I just realized how awesomely every piece of Forge is named.

    By the way, can 65,535 be used instead of 0 for the WriteRaw id you guys need? It's just a small luxury for developers to be able to use 0. If it's too much trouble, I can just send over x + 1 and get the same results.

    Oh yeah, also, I have a decent mic and screen recording tool. If you guys want, I can make tutorials for some features of Forge (like coding plugins after I familiarize myself with the system). Anything to save you guys time so you can focus on developing.
     
    Last edited: Feb 2, 2015
  42. Zaddo67

    Zaddo67

    Joined:
    Aug 14, 2012
    Posts:
    489

    YOU ARE AWESOME!!! :)

    That was amazingly quick, WOW!!!
     
  43. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    ;D We are working on our naming conventions to be memorable and congruent.

    Good idea! I'll reserve ushort.MaxValue rather than 0 then :) You will see this change reflected in the next update.

    This would be awesome! I usually do a lot of the tutorials; however they do take up some time to make them, double check them, upload them, put them on the website, etc. So this would be awesome :D
     
  44. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    Why thank you :) I derailed to help with some of the new website features but I'll make a quick video showing how it works very basically, that way when you guys get it you can start crunching your plugins.
     
  45. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    Hey guys, so here is how the current plugin flow works. What are your thoughts? Do you think it is simple enough to implement?

     
  46. Zaddo67

    Zaddo67

    Joined:
    Aug 14, 2012
    Posts:
    489
    Hey Brent,
    I just watched your plugin video.
    That is going to make it really easy to extend the Bare Metal server.
    Very nice job!!
     
  47. GraphXCreations

    GraphXCreations

    Joined:
    Jul 6, 2014
    Posts:
    121
    baremetal is nice to have,
    thank you,
    i watch the adding plugin video and sounds simple.
    altho, i am now confused on how to handle gameplay logic for my project.
    how to send ,receive rpc etc.....
    a simple example of a basic client server communication will be nice, how to attach components to server side networked objects etc...

    to be honest, even tho console servers/baremetal non unity instance servers are very light weight which is great.
    when it comes to gameplay and authoritative control over the game requires too much technical interaction, since baremetal are not aware of the overall game engine, they are numb,
    no server side collision/physics etc.....

    but nice addon, some will find it an alternative solution, i in particular not fan of them,
    hence always after unity server networking,

    maybe i am missing a great deal by not making full usage an features of a baremetal,
    perhaps someone will give enough incentives for making me change my mind about baremetal usage over unity server.

    but i think is nice to have the alternative,
    question,
    can one alternate between them using both setups simultaniously?

    for example: using unity server forge for open world setup to have a physics aware and very tight authoritative setup,
    and have a baremetal server for minigames/room based instances?

    where players from open world unity server can join/jump into the baremetal room instance
    and get back to unity server after minigame finished?

    in other words using the baremetal server for room based dungeons/battlegrounds or arenas instances?
    so there will be not too much overhead by running dozens of unity server instances for ie: for 2vs2 arenas matches? etc..

    if so, we can use a nice matchmaking plugin and a lobby plugin too, for those who would like to do
    moba styles games or room based ones with forge baremetal servers.

    not sure if i even make sense :)
     
    Last edited: Feb 2, 2015
  48. Pantheon

    Pantheon

    Joined:
    Feb 2, 2015
    Posts:
    1
    Hi ,
    I'm new to this forum and I am searching for a start up sdk to begin my unity development journey and specially in multiplayer online games and Im looking for an easy one with much features and this one attracted me . Is this a good choice to start with as newbie/noob ? does this support android,ios platform ?? also can I get this or Is there a free version of this . Thanks :)
     
  49. jpthek9

    jpthek9

    Joined:
    Nov 28, 2013
    Posts:
    944
    Yes, definitely. All needed code is in videos posted on their website but it's just as easy for me to explain in a bit of text if you need it.
    It has support for clients and servers on every platform Unity supports. You can probably get it by messaging farrisarts to sign up for the Beta.
     
  50. Brent_Farris

    Brent_Farris

    Joined:
    Jul 13, 2012
    Posts:
    881
    Being the creator of this networking I am very bias but... Yes, I would suggest our system to complete newcomers. We are in the process of making a "Masterclass" video tutorial series using our system for free. These videos will not only teach our system but will teach general network game and applicaiton programming as well. So the skills are applicable for life! :D

    This system works on PC, Mac, Linux, Linux-Headless, Webplayer, Windows Phone 8.1, iOS, Android, Windows 8.1 (Store) and any other platforms that allow socket programming in Unity. We are actually in the middle of developing support for Bluetooth as well!

    You can get in on all the freeness the Beta version has to offer for free ;D. All I will need is an email address, so just send me a private message or send an email to support@beardedmangames.com with the subject line as "Forge Networking Beta" and we will get you in on the Beta :D. I'm sure others here can give you their non-bias opinion for truthiness since I must be bias as the creator :)