A Unity ID allows you to buy and/or subscribe to Unity products and services, shop in the Asset Store and participate
in the Unity community.
Discussion in 'Multiplayer' started by Serinx, Jan 7, 2019.
PlayFab is amazing imho.
Not sure if it is what you mean, but in SmartFoxServer we already have something along those lines.
It's the Sign Up Assistant component, which provides a highly customizable API that assists developers in creating a database-driven sign up system, without the hassle of writing their own database access code. This componente can also be paired with the Login Assistant component, an helper class which similarly assists in creating a database-driven login system.
Playfab is a good option for this, it's free to use up to 1000 MAU. I'm trying it out right now in conjunction with Photon for the gameplay syncing and it looks like it meets all of my needs so far.
Playfab handles player authorisation, characters, currencies, inventories and custom data. I think they're working on a realtime feature but I haven't looked too far into that.
I was trying GameSparks out and it looked alright, but since Amazon took over about a year ago, it looks like their support for indie developers is lacking so I moved away from that.
Thanks for that, I'll add the link in the main post
I agree! Let's add it to the list in the OP.
Which ones works with WebGL? That would be interesting thing to know
MLAPI runs on Unity 2017 and later. You can make it run on Unity 5, but not out of the box. It works with .NET 3.5 and .NET 4.6 and supports WebGL
PUN does. Bolt doesn't.
SmartFoxServer does. Client-server connection can be WS- or WSS-based.
How is this different/better than unity connected games (replacement of unet)?
* More support
* Better documented
* Every way. It's an apples and oranges comparison.
* Performance. However comparing libraries similar to the MLAPI I have yet found any lib that is as performant as us. Especially not concidering the feature set.
The MLAPI is a high level library, it does high level things and interacts closley with the engine. It can handle object spawning and such for you.
Mirror has some ok example scenes demonstrating some of supported features, albeit the multiscene one is broken in on 2019.1.. MLAPI has an example that maybe but probably doesn't even work as it was last updated a year ago? I know I've ask before but you should really keep some updated example scenes that demonstrate the features, it's just a lot easier to see things working, than try go through putting together something from bits of documentation all over the place.
I understand, the MLAPI's current example is very outdated and should not be used as per documentation.
Since you really value examples, I would love if you could message me in private what you would value in examples. It's the one thing the MLAPI is lacking in. But I honestly think it's because of our goal with the library, which is very far from what my perceived goal of Mirror, Photon and a few others are.
And as always, such comparison lists does not contain the most unique one:
- Unique "make multiplayer and receive save load for free and without efforts" feature
- Battle tested on games Windward and Sightseer (created by developer of these games)
- Almost out of box support for huge multiplayer open worlds (more than 100x100 km)
- Out of box does not supports parenting of one networked object into another (but with commenting a few line of code it became possible)
- Some kind limited \ inconvenient for games which have many hand-made levels (scenes) with manual level design (but very powerful for open world procedural games)
- Not free (95$) and demo \ free version is not available
Surley €84 is a con?
Good point, thanks. Updated.
Has anybody feedback about Forge Networking?? This is an interesting topic. Thanks!
Honestly, in my eyes Forge is one of the networking libraries that fall into the same category of SmartFox of being underappreciated.
Pretty sure unity's new networking asset is called multiplay.
I confirm that RakNet is still possible to work with Unity - and always will be, since it is an external DLL lib. Nobody and nothing can break your dependency. The only issue every developer has to go through once is cpp name mangling.
Plus, RakNet has well documented code and Doxygen-generated pages are perfect.
Forge dependency is completely broken since 2019.1, because they dropped UNet which it was relying on. End of story.
Replacing the LLAPI with something else is not hard. It’s not end of story. The MLAPI did that in a adaptable ”transport” system ages ago, shorly after Mirror and then HLAPI followed the same pattern. It’s easy to do.
Hi. I know it's a very old topic but I wonder what's this solution he uses in this tutorial :
He uses TcpListener and TcpClient. Writes his own Server and Client script. What's this solution and is it right to use it on MMO games ?
In such game like chess and other turn based games, you don't need to worry about lag compensation, prediction etc. In MMO, FPS and others, that is different story.
Thanks for answer I learned that I shouldn't use it : https://forum.unity.com/threads/how-to-finish-a-completed-multiplayer-game-project.715622/
So I will use Photon or something else. There are lots of things I must change in my project...
By the way, I saw DarkRift Networking 2 in the network solutions. It offers unlimited users for free. I think I will use it.
My game looks like this one : https://image.winudf.com/v2/image1/...A3ODQ3XzA2MQ/screen-0.jpg?fakeurl=1&type=.jpg
Should I use DarkRift Networking 2 ?
As the author of DarkRift, I would say yes. But then I might be a little bias
In all seriousness though: DarkRift takes a lot more work to get to an initial version but gives you a lot more freedom in the long run. If you're new to networking I usually suggest that you start with something higher level such as Photon; if you find it to be too limiting later on then port over to DarkRift! That's not to say you can't start straight away with DarkRift, there's plenty of people who have!
Darkrift 2 will at some point eclipse Darkrift1 and the original will cease to exist, yes?
The original has already been deprecated and almost all users now use DarkRift 2!
TCP sockets can be used for an MMO. You're talking about building your own networking system on top of that, so get ready for a lot of work.
Photon I suppose could be used for an MMO in theory, but that is not what it is designed for. Photon is designed for separate matches between a relatively small number of players. I think I remember Photon's website recommending keeping it around 8 or fewer players per room, which is effectively per match, unless you really know what you're doing on limiting network traffic to the absolute minimum necessary. They use soft bandwidth caps per room. (I'm not an expert on Photon, so maybe things have changed since I last got up to speed on them)
A match based MMO like World of Tanks could be made with Photon, but with fewer players per match. An open world MMO though I don't see how their system is set up for that kind of thing.
Generally when building an MMO you're going to be building a whole lot of custom systems for networking, and doing a lot of network troubleshooting. I'd suggest using a API which provides all the source code so you're not banging your head against a black box, or developing your own on top of sockets. TCP sockets again could work well if your game is not very fast paced, and most of the data you are sending needs to be sent reliably anyways. If most of your data doesn't need to be sent reliably, like if you're sending a ton of transform/rigidbody updates, or if the game is on the faster paced side, then TCP isn't optimal. In that case you're probably better off going with a UDP solution.
Just as a personal example, the MMO I'm building over 3/4 of the traffic is transform updates, so TCP would be a poor choice for me. After initially building it on Unet (and before that the prototype on uLink) I've been burned on either end of support or networking API bugs I can't actually look at to see what is going wrong, because of closed source. So I went with UDP sockets in my case and built a whole network API on top of that with all the features/functionality my game needs and addressed some annoyances I had with other API's so they weren't annoyances anymore. YMMV
Whenever you push the limits, and building an MMO means you're pushing the limits, expect to have to do a ton of custom work, where there aren't going to be drop in solutions for your problems.
I want to add a few details that got lost:
In most "Photon" games, Photon Unity Networking (PUN) is used. This is pretty much as described above but you can get 16 to 20 players out of if, if you put some effort into the networking. PUN is a very generic client side package and it's simplicity is the focus. It works without server-side coding but can be combined with server plugins, too.
Aside from the Photon Cloud, we offer the Photon Server SDK and the Realtime API on the client side. We use both in PUN but that is only one use case. The game Albion Online uses the Photon Server and has 500 players in a single fight. Of course, the team heavily modified and optimized their server-code but it's running on Photon Servers.
The point being: Photon is not equivalent with PUN.
@tobiass , thoughts on this comment about difficult to implement cheat prevention (compare to other options).
Note: I am a PUN 2 users.
In our experience, cheat prevention is always difficult.
If the game is not truly deterministic, you need a dedicated server which is running the logic server-side.
Yes, when you build a game that's hosted in-Unity, you can run it on a dedicated server and prevent cheating. Unless a cheater finds a loophole. As long as you run all the instances on your own machines.
For PUN it's extra work to make the server aware of the game logic and state. This is hard for cases that need the scene to detect the cheat, as the server does not run Unity. If the game logic does not dependent on the scenes and assets, the implementation may actually be simple and more lightweight. You could implement a C# simulation of the game and run it in the client and server.
If you want full blown cheat protection with scenes and physics involved, PUN is probably not the best choice, yes.
If you do a card game (e.g.) it's relatively simple to write a Photon Server Plugin and run it per room.
Admittedly, PUN is not a very safe option by default, as the clients are authoritative. Quantum has several benefits in that regard. Bolt on the other hand is in-Unity hosted.
Thank you all so much. I looked at dark rift documents and I realised that Photon is much easier. Also I couldn't find tutorials about dark rift. For someone newbie like me, it's better to start with Photon I guess.
But I will learn Dark Rift someday...
Any example games you can point to that are public and proudly using darkrift2?
On a different note, i'm currently working on an RTS/sim game hybrid, and I have no experience with multiplayer. Just picked up a book, working through it with sample projects, but I wanted to know if there's a tried and true solution that I should bark down once I get through the basics? Here's what's important:
Client-server. No lockstep. Cheat prevention. Multiple persistent servers with few players (similar to the minecraft model with no master server). Ideally not super hard to get into, a decent amount of documentation. I don't need tutorials, I just need solid docs. A ton of the compute is done server side. I'm thinking of putting it on the cloud, but I just don't know enough yet. In terms of cloud, Playfab/azure seems cheapest.
Thoughts? Any veterans have any input? I am inspired by this networking solution (client-server, all compute on server, etc, just not sure what solution plays friendliest with this type of server architecture https://www.gamasutra.com/blogs/Gaf...346598/Satisfactory_Network_Optimizations.php)
Sure! Here's two that are currently available on Steam!
Koliseum Soccer VR
Ignis Duels of Wizards
As for your personal game, Legion TD 2 is an RTS(ish) game running off DarkRift 1 which has a very similar architecture to DR2.
Does the move to DOTS/ECS pose problems for you or users of Darkrift2 in the future?
As far as I know it doesn't. DarkRift doesn't actually depend on Unity (it'll work for any .NET application) so there's not really much to update for it. Obviously if there are changes that need to be made they will be!
I updated the networking frameworks comparison google document (link), and filled out the Dark Rift 2 sections. Plus added an additional section to the Master server description.
At the top of the document I also added a link to an excel sheet with a side by side comparison of some of the networking solutions available.
Link to the excel sheet
Both docs are still a work in progress and I have not received confirmation on some of the info I've written there (marked with light blue background color) but nevertheless, it should offer a good high level comparison.
I've yet to do performance tests and check the overheads of using these frameworks. Perhaps some time in the future I might be able to do this.
Nice documents! They're an excellent resource for the community!
I've added a few comments to clear up some of the unknowns for you
There's also some very good benchmarks here (mainly of transport libraries) that may be of relevance
@Jamster @F-R-O-S-T-Y thanks for those links, I've added them to the original post.
I hope they prove to be useful. If anyone has suggestions on how to improve it, let me know!
I will post in this thread if I update the docs.
Thanks for the link!
@Serinx Thank you so much for putting together the doc - while we wait for Unity's own new solution to flesh out, choosing a Unity networking solution is complex at the moment, so it really helps to have some neutral, well structured analysis.
What about SpatialOS (https://improbable.io/spatialos) - did you consider that?
@Colin_MacLeod Hey, no problem. I just started the thread and everybody else helped to fill it out!
I haven't heard of that one, I'll have to check it out though, looks very featureful!
Yes, it is. I've been experimenting with it a bit and like it a lot. It uses their own ECS implementation under the hood and I'm still grappling with how to make that work for my app.
It's cool but expensive as hell.
Oh yeah? I couldn't really get a handle on pricing. What did you find? At what level (i.e. player count) are you running or projecting?
@Colin_MacLeod Looking at their pricing page - it costs $0.54 per hour per 100 player instance.
That would add up to around $389/month to keep a 100 player instance alive 24/7...
This model would only really make sense if you had a massive, active playerbase and/or a subscription-based game.
@Serinx Thank you so much for decoding this for me. It seems incredible that this is the cost - especially given the Photon PUN v2 rates
thank's for this post
so maybie it's possible to get official aswer about clarify where multiply is now
like this projet ?
Dots are already on packages any sample ? somewhere