[NO CCU LIMIT] Forge Networking now OPEN SOURCE

Welcome to Forge Networking!

01/08/2019
There have been very many updates from both myself and the community on the GitHub repository, please make sure you jump over to the github page and get the latest stuff. The build pipeline to the asset store is a bit slow so all the best stuff usually is on Git for a bit before it makes it to the asset store.

Also make sure to join the discord, there a lot of awesome helpful community members there!

06/23/2017
Forge Networking Remastered is now open source! Let me quickly address common questions:

  • This project is not abandoned, just embracing open source like Box2D or Linux
  • We (the developers) will continue to work on the project just with the community included now
  • We are looking for contributors, we are not closed off to mods/contributors
  • The community is open and all about network games/apps, so you can join even if you are not using Forge Networking

10/29/2016
Forge Networking Remastered Release Candidate 1 (RC1) will be released in our private channels (Slack) to those who own Forge Networking tomorrow. If you purchase Forge Networking now, you will receive Forge Networking Remastered for free :). Come on over and join our global community of developers! :smile:

05/28/2016
We have uploaded 2 videos today about progress on Forge Networking Remastered (free to everyone who owns and purchases Forge Networking). Our hope is to move into an Alpha build next week to get early adopters testing out the system :). Please provide us with any feedback, and we are NOW taking requests to join the closed alpha just testing mentioned. Please us a message on Slack with the request as we have a private channel there for the group! :slight_smile:

05/16/2016
Websockets Alpha released!

04/12/2016
Subreddit is back up - Reddit - Dive into anything

02/22/2016
Moar development! We have had many things come up since Christmas and they are amazing and will push our efforts as a business far beyond what we would have hoped! What does this mean? You get @Cranick as the new full time developer of Forge Networking as well as the knowledge that our studio is funded (albeit from Forge and other things). This frees me up to do more video tutorials - as seen here and other sorts of documentation.

GitHub access for all registered developers! Are you using Forge Networking? Did you register on the developer site? You are eligible to get GitHub access! As we develop on GitHub you will get the latest commits and can test out things before they go out. Check out bug fixes, check out others pull requests, collaborate with other developers, report issues and use the wiki there. GitHub has tons of tools that help everyone out and we have decided that this will be our public issue tracking instead of EpicJoin. :slight_smile: We just enabled all of that on our repo! We currently have about 41 developers who are a part of our GitHub so lets push that number to the hundreds! :smile: *Can you say mega-feature sets and pull-request fixes? Of all of the networking systems we are the only from scratch one with the developer network and willingness to give full source code and GitHub repository access, you just won’t find that from a third party anywhere else! Come join the party! :wink:

New twist on old angle! For us it has always been about building a community, and with hundreds of people registered on our Slack that has been a great feat for any system. Seeing everyone collaborating and communicating with each other has been such an awesome experience for the team here. We wish nothing more than to build the community further, we will be less controlling with our GitHub Access (outside of requiring to be registered with Forge), we will use more open communication tools like MediaWiki and GitHub issues/wiki rather than pushing our own “EpicJoin” agenda. We will also encourage everyone to contribute to the wiki, to GitHub issues, via code pull requests, and more! :slight_smile: After all, thousands of brains are better than 2 no - at least in most cases (hiveMind–) XD?

Note: Our support email is severely backed up and we may move to only go through critical emails or request those still interested or still having problems to re-iterate. This way our email doesn’t become an infinitely growing old response system.

Thank you so much to the huge amount of you who stuck through the silence and continued to make great things! :smile:

07/29/2015
Happy Windows 10 everybody! We now have a private chat room for our Forge Networking Owners BUT if you are not an owner you can get access to chat with the developers to learn more about the system! If you would like access to the chat to ask the community questions please send an email to support@beardedmangames.com with the subject “Forge Networking Chat Request”. :slight_smile: We have a very strong and helpful community. Hope to see you all there soon!

07/8/2015
We have just released version 10.6 and have been working on finishing NAT Hole punching and the Load Balancer

06/23/2015
Announcement: Asset Store Version Released!

06/12/2015
We have released Forge Networking on our website!
This is a price per developer, not per project! Use it on as many projects as you wish! :smile:
Announcement: Website Release!

Reasons to use Forge over UNET or other solutions:

  • We provide full source code for every platform

  • No plugins needed, all source in native Unity C# code

  • Fast support. We focus on our system and can get bugs fixed in days, not months. Also since full source is provided, the community can submit bug fixes or features

  • No CCU or DAU limitation

  • Support for Unity 4.6+ as well as Unity 5+

  • Built in server browser

  • Built in local area network server finding

  • Support for TCP communication

  • Read why we love this project

  • Others thoughts

Come join our Global User base!

-------------------- BEGIN ORIGINAL POST --------------------
HOW EASY IT IS TO GET STARTED

I have been able to get my Networking library working for all supported platforms of Unity. This includes the following:

TCP (required for any reasonable playability in the Web Player)
UDP/R-UDP (unreliable and reliable)
HTTP/HTTPS (includes GET, POST, PUT, and DELETE)
Multi-Threaded structure (while still holding main thread variable integrity)
Event driven (register events for almost anything, including: player disconnection, message sent, errors, etc.)
RPC (remote procedure calls) even including private methods (must be called from the specified type).

Automatic serialization of common types
Allows for custom type serialization (expansion)
A serialization class that has any property marked with the [NetworkSerialized] flag sent across the network (must be networking serialized type)
A base networking serialized class to extend from in order to serialize any data type

This package will also include the Master Server for host listings. The Arbiter Server keeps track of open hosts running your specified game (separated by key) for super easy match making host lookup. Includes player counts, ip/port, password (via comment), and auto dropping of cached hosts that don’t UDP ping within a specified TTL (time to live in seconds).

I am posting here to get feedback on what people would like to see as well as what people expect to see in a networking library. I will be uploading some videos soon to show the basic workflow as it currently stands.


NOTICE: We have heard that some people using other networking systems are spreading some rumors. We have been asked about this enough times to post here. Lets iron out the facts! :slight_smile:

Q: Do you use ASCII to send data over the network?
A: NO We have not ever nor ever wills send data as ASCII this is a complete fabrication. We did send a couple of RPC calls as a string very, very early in development which no longer happened after we implemented our mapping layer. This is probably where the rumor started.

Q: So and so “ripped them a new one”
A: NO In fact, if you continue reading, we actually corrected Mr. So and so as he said things that were just not true and any faults we had in our first 3 weeks of development were ironed out. Please look at our update changelogs and velocity.

Please ask us if you have any questions and thank you to everyone who corrected these misconceptions on our behalf. :smile:

To access the developer portal, please got to: http://developers.forgepowered.com

10 Likes

sounds good. What is the server running on?

The server is running in Unity so you can run the server from any platform, Linux (including headless), PC, Mac, windows phone 8, iPhone, Android – basically you can have the server hosted on any of the Unity platforms that support sockets :slight_smile:

Hi farrisarts,

I am interested on your library especially the WP8 support.
Do you know when will you release your library.
Can i get it now ?

regards,
Mathieu

Hello @zapoutix ,

I have been working really hard to get this networking system out as soon as possible. The package has been stable so far through my various testing, however there are more features that I am adding to the system. I could probably start kicking off the developer registrations for a beta of the system though. Would you be interested in testing out the system in Beta or would you rather wait until the system has the rest of the features finished up?

Does the server run in a Unity instance?

So I could run the server in the editor, and connect another editor as a client for debugging?

Yes, in fact that is how I have been testing a lot of the work. The way that the system works is that it allows you to let your players host the games (just like built in Unity) however, you can also host room instances yourself for MMO or any other style games (ie: SmartFox or Photon). So the flexibility of this system is much more grand than just having one or the other. I will make some videos demonstrating how the system works on both local and via “cloud” :slight_smile:

1 Like

Sounds good!

If you could also put together a little demo of your system using authoritative physics that would be great.
So Physics are calculated on the server and the resulting transforms are synced to the clients.

If your system could support this I’d be interested in helping out with the beta.

Sounds good, I actually have started working on a part of the system that will deal with making the server calculate all of the physics and just sending the positions and rotations to the clients! I’ll see about getting a demo of it up and going asap :slight_smile:

Also, I have recorded a very rough and quick video showing an example of it running in the editor and on a build client.

Looks really good and easy to setup, good job!

I noticed a Plugins folder was created when you imported the package, was the DLL in the Plugins folder just a stub for Windows Store Apps?

So it will work fine with Web Player and Web GL?

I’m keen to get my hands on the beta, I want to implement it in my racing game, I’ve sort of implemented uLink already but my main concern is its lack of Windows Store and WP8 support.

Any ETA when a beta will be available for testing?

Thanks!

Yes, the plugins folder is just for the support of WP and Windows Store. The other DLL in there is just a completely managed DLL that is the code for all of the other platforms. I have tested this a lot with the Webplayer as it is yet another unique platform to Unity (like WP and Win Store). I have taken a lot of the heavy lifting away from how networking is normally handled in the Webplayer and there actually is no extra code or work you need to do to get it working on the Webplayer (however there are some things you can do to customize how it works in the Webplayer).

I will make another video to talk about (show) the Webplayer implementation. It is a bit of a unique platform and so there are some things to note about how web browsers like Firefox, Chrome, etc deal with plugins (like Unity Webplayer and Flash) in what they are allowed to do with Sockets and what they are not allowed to do.

As for Web GL, it currently is in an experimental stage as that is yet another beast, it is requiring us to write yet another extension to the library for “WebSockets” since the default networking will not work with it. So that one is in the development stages, however it probably will be our goal after the initial release. :slight_smile:

Lastly, we are wanting to get the beta out asap so we can get new feature requests, bug reports and so forth. We have a couple more technical features to throw into the system and we want to stress test a few things on heavy usage such as the instantiation of objects on the Network in volume, high volume connect and disconnects, etc. So hopefully we can get a beta out within a week! :smile:

1 Like

Hi farrisarts,

i just watched your video, your plugin look great.
I am interested to try the beta version, but actually i am not sending position, rotation or scale on my project, i am more interested on the RPC functionality

Regards,
Mathieu

Awesome! I actually have a full demo of a game (Tic-Tac-Toe), as well as a Chat demo, that does nothing but use our RPC functionality. I can make a video demoing this as well as it is another powerful feature in the system. You can even use the RPC functionality on private functions, that way you can keep your code as clean as you wish it to be. :slight_smile:

Ok great, let us know when the beta is available.

@zapoutix ,

I have created a video to show the TicTacToe (Pure RPC) game. It uses the “SimpleNetworkedMonoBehavior” class that is a part of the system to do this. Also notice that by using the “SimpleNetworkedMonoBehavior” it cuts out all of the fat of the other script that was shown with interpolation and variable serialization.

@Meltdown I have created that video to show it working in the Webplayer and to talk a little bit about what internet browsers do with plugins.

https://www.youtube.com/watch?v=oYUfzUbh7nY

I notice in the server start method you specify a networking mode, i.e TCP.
What happens if you need unreliable UDP for object synch, and TCP for RPCs?

The system at it’s current state allows multiple connections and connection types. Basically there is a global “Networking” static class that is used to manage only 1 connection (which you would use for your primary connection). This particular static class was created only to make the system very easy to use for those who don’t want to get too technical. However if you need to use multiple connections for things like VoIP, Chat, RPC only channel, HTTP request, and so forth you can actually create a new connection by making a new instance of one of the connection classes. (Note: HTTP has its own class that fires off a separate threaded connection when doing a HTTP request, so there isn’t really a need to make an instance of this particular class).

I haven’t tested how many connections you can be running at a time, but I have had somewhere around 3-5 running at a single time thus far without any issues. In fact, the system actually uses these classes itself for the helper classes that are built in to communicate with the Arbiter server (master server/server (room) starter delegater).

I would also like to note that you can actually write your own byte serialization of any content type so that you can easily extend it to do things like VoIP, which this also comes with events that you can register to listen for this data.

1 Like

I should probably say that you can do RPC calls over UDP as well. However, in the backend of the system, it automatically makes it a R-UDP (Reliable UDP) since I figure that RPC calls are high priority and are required to get to the other end. I chose to use TCP in that video just because I wanted to give good ol’ TCP some love after testing in UDP all day. ;D

Yes, RPC’s definately need to be reliable :slight_smile: