Take the complexity of every mechanic in your game, then multiply the time and complexity by 2, or 3. Deciding when, and how, to sync game objects (e.g. who's the owner? Who effects what objects and when? What happens if someone joins late? How/when do you update/sync objects/params without bogging the network) scripts variables/params, debugging/testing with multiple machines. Just like anything, it seems simple conceptually, until you start needing to implement it yourself haha. It's totally worth doing, but start small! It can be a fun process if you are patient and persistent. Actually, I'll pitch this: If you want some help to get off the ground, I offer 1 on 1 sessions (developer support) as a side hustle (I used to work as a Unity instructor at Circuit Stream). There's also some great tutorials on PUN. I use PUN and it's great if you are making basic stuff with smaller #s of players and don't require super low latencies.
@@creepybrainz4840 I agree with you it’s not easy but that’s normal gamedev is never was easy , I think that people are generally programmed from other’s, and they say it’s hard even they didn’t experience itself.
Congrats on another excellent video Jason! The timestamps to help out everyone are: 00:53 UNnet (Deprecated) 01:34 Mirror uMMORPG 03:08 Stream (video sponsor) 05:01 Photon Fusion - Bolt - Pun 07:05 Unity 08:47 Fish-Net 10:16 Dark Rift 2 11:00 Smartfox
Working on a small scale (playercount) social mmo using fishnet. I have worked with mirror and ummorpg/2d in the past, but switched over to a scratch build co-op system with MLAPI back when it was first coming up, where I learnt most of my multiplayer coding. But the rapid changes during its development made me seitch back to mirror where i discovered fishnet. After switching to fishnet the first thing I discovered was just how smooth the server auth/client prediction was and how much nicer it felt than anything I had built previous. Haven't gone back. I have tested out basic builds with 8 players and over 250 AI all moving around on a live server and it was still just as smooth.
mainly using Unreal Engine networking, after hearing unity's ONE network dev talk about how "Games and Multiplayer are hard, Network is hard" in 2019... I had to just give up on unity and go to unreal. God bless you for helping the pain unity provides. God speed GameDevs!
I am using Mirror at the moment but i just read the documentation and benchmarks of Fishnet and i will swap to it now, it somehow looks like its more fun and a bit easier to develop with it. And i like the fact that they have an official roadmap which also includes an video tutorial series.
Using Nakama at the moment as our internal teams found that the most useful for our applications over others mentioned in the chat. What stands out there is needing multiplayer control across different platforms all in the same session like Unity and a website all synchronised.
@@aibor_io6871 Working really well. It's much better now with developing TypeScript modules instead of Go for the team. I'd recommend using the command pattern to simplify things a lot on the client end or JSONPatch if you want to maintain the full game state centrally. Depends on your application. Hope that helps!
Ive been using Photon Pun for a month now for a multiplayer shooter, I think an important thing to mention is that photon aint free if youre planning doing anything other then prototyping , the costs monthly spike pretty quickly if youre getting more then 100 ccu's
The last one I used was Quantum from Exit Games. The guys that made Photon and Fusion. It was a different experience, since you make all the game logic in Quantum and not in Unity. However, when you get used to it, it feels like making a single player game.
Quantum is awesome. Its deterministic so you only have to sync inputs instead of trying to sync everything in the game constantly. It makes anticheat, replays, reducing lag and data sent, and more incredibly easy. Same patterns that they use to make Overwatch incredibly smooth.
@@ryanharbert9415 thank you for your first message, I now have an idea in the future about to make an online game smooth as possible 😯... because in the future I want it to be smooth as possible... because I have tried to play a private server that has very ugly outcomes when you are lagging, all things are like freeze and freeze while that same game but other private server when I am lagging, I can still move and hit players which is much better then after my ping came to normal the player that i hit on, just get killed and they are shock haha that's the kind of network I want, instead of those movements of players that are basing on your internet 🤮
Yeah it seemed intriguing. I want to check it out at some point. The only thing is finding the time to evaluate it, and I'm definitely worried that it's so different it won't integrate with any other Unity libraries.
recently I've been using Nakama for all my games. Paradox is apparently using it for their grand strategy games. it doesn't have fancy features like physics simulation, prediction, lag compensation, etc. But it's performant, open source and easy to use. It's perfect for small games, turn based or any game that doesn't require physics sim or complicated animations like first person shooters. Photon is definitely easy to use /setup , but it gets expensive fast! Nothing beats open source! :D
I've been using Unity's Netcode for GameObjects: it's now quite stable although still in pre-release and is very similar in its design to UNet/Mirror. The bite sized samples and Boss Room are useful too and regularly updated but looking for specific examples is still less easy than with Mirror as the solution is more recent. All in all I'm OK with my choice and hoping that the (very responsive) Unity networking team will make performance improvements, client-side prediction and NavMesh integration their priorities over the next few months!
@@mikekozlov3484 Performance markedly improved in the last few months. The team has also started exploring the facilitation of host migration (see GitHub issues) but yes, for client-side prediction and even better performance currently FishGames is still the solution of choice.
FishNet is definitly the best and easiest solution ! Server Authoritive movment ? Just drag the script in, connect your input and the transform output aaaaand done.... God i love this asset !
I use DarkRift 2 and I'm really happy with it. The Support in the Discord Server is very fast and the community is great (grows every day). DarkRift 2 is very easy to setup and to use. You can make a console based server or a headless unity server (build the server directly in unity). And there are other cool functions ready to use :) The devs of DR2 have some cool plans for the future :D
I looked at DarkRift too, looks solid indeed! The only reason i went with Fishnet in the End is because DarkRift at time was not free, and i didn't see if it has client side prediction. But definately still on my list!
Jason, I was really looking for not-outdated multiplayer options that would integrate well with unity and have been avoiding the subject (because I expected it to be a huge ordeal). with these options though, I at least have a starting-off point that I can focus on. thanks!
@@publicalias8172 I tried it and it seems like a mess... You had better luck with it? Mostly I find that it lacks the input checks that a closed source project requires and it just throws nullpointers when I do something wrong with references to lines in code I can't see.
I actually use node js to make a server and a socket io client in unity to connect to it. May not be the best system, won't work fast, but it's my system and I love it. It's quite easy to set up too and It's flexible as hell.
can you define wont work fast? I am thinking of using something similar and I would like to know if I can stay on websockets or move to another solution
@@unhealthytomato3219 it's more of a theory as everything about web sockets seems to be more centered in online chats and stuff. I've done tests with up to 5 players with a basic player that moves and talks to npcs and it works great, the latency seems fine too. If you are not going to use it for an mmo I'd say its great, especially because you do all the logic :)
I am currently working with Fusion on an FPS game, I've started when fusion was still in beta, and now there is a stable official version, it's kinda have everything needed for a fast paced game with the tick rate system, it s confusing to use at the beginning but once you are used to it you won't have any trouble doing what you have in mind
Mirror also have a dots focused solution that seems cool. This was well timed for me also as I'm currently trialing Mirror, its been fine so far. Being that I don't have any major network requirements, all I'm looking for is a service to just get out of the way and that won't break the bank. Most of the work for me at least is building a robust abstraction in order to prevent the networking app from polluting the other codebase systems. And Mirror is actually worse for that than PUN, but both are guilty. I'll try fishnet next, then fusion
I'm using Photon PUN, and for the first time on my new project. Having never worked on multiplayer I found PUN pretty easy to get. I am still learning some of the advanced lobby and room things, but as for implementing gameplay systems and syncing I find it great. The default photonview stuff works great and is very proformant. Thier team is also great, I had a few questions related to cost and they were very helpful. I will say that the cost system is a bit complicated for someone new to multiplayer.
The biggest problem I ran into with PUN back when I used it (5+ years ago) was that you had no control of the server and no way to make an authoritative system. Which is a big problem for cheat prevention. Obviously not every game needs that kind of cheat prevention, but it was a big turn off for me. Though perhaps they've changed their product :)
I've been building a game in Mirror, and once it "clicks" it becomes very easy to make good progress. I'm now converting the project to FishNet and I've been enjoying FishNet as well. Mirror's community is bigger currently, and there are more resources available for it, but FishNet's community is increasing steadily and the developer is a great guy who is eager to listen to suggestions and offers lots of help.
It's a remake of Notch's entry to the 22nd Ludun Dare, Minicraft. I'm using it as means to learn networking in Unity. I think it's good to get a grasp of the basics before attempting to build my own game.
Jason, I really love your content and has helped me a lot in game development. I just want to give you a small feedback for your videos. The red rotating light is a little distracting. Just a thought you might consider. Keep posting videos , we love it.
I’ve had students make multiplayer VR experiences easily (easily enough for students) with Normcore. Not sure how well it’s documented since it’s not super widely used, but the creators have gone to release a vr esports title, Nock, for the quest.
could you give some more feedback since the normcore itself is not widely used and it looks nice from what i checked their docs. Im trying to build a VR game either probably in Normcore or FIshnet, any suggestions? :)
I have used Mirror, Colyseys, PUN and FishNet. I hated Colyseys didn't care for PUNs pricing and didn't do more then play with it before moving on. I accomplished a lot with Mirror and I am really liking FishNet so far. I would recommend Fishnet to anyone looking to get into networking but it still (Nov 2022) needs more documentation and you may need to play with other tools like mirror just to understand some networking basics.
I really appreciate that you are both a knowledgeable person who shares what they know, and also open to the idea that you don't know everything. One thing that drives me insane is people acting like they are the ultimate expert in something, and after you do what they suggested for a while, you learn that they were overselling their knowledge and sent you down the wrong path. I appreciate that you are clear about what you know, what you think, and what you need to learn more about.
A Review on FishNet in Asset Store: I've been waiting a long time for a networking solution like this. I'm just glad it's finally here. I've tried Mirror, PUN, Photon Bolt, Netcode for GameObjects (MLAPI), Mirage, Forge. All of them have major hang-ups for one reason or another. Each one of them suffers from various downsides like legacy code, disorganization, or weird ways of doing things. But FishNet? The code base is clean. Like really, really, really clean. And even though it's simple and clean™, it still has all the features you want, and then some. Don't get me wrong, those other networking solutions have their strengths, for sure, but FishNet just takes all those strengths and bundles them into one package. Sure, Mirror is easy to use... it's just that FishNet is even easier to use. Photon Bolt is fast... but FishNet is even faster. Unity's Netcode for GameObjects is architectured well... but FishNet is just architectured even better. I cannot say enough good things about this networking package. It's just so good, and you should try it.
Having used both fishnet and mirror, fishnet Def seems like the better choice atm. Much more performant and stable (fn docs provide ways for you to test and prove this yourself)
@@andriusbendoraitis3171 Can you please elaborate? Far as I am aware everything in the documentation is true. If there is outdated information about Mirror please let me know and I'll fix it. Please keep in mind I only update Mirror's information based on store releases. But if you are curious about the tests, run them yourself. I've provided all of the information to do so with the results.
@@FirstGearGames I mean, I'm sure all your claims in the docs are correct at least to some level. They just seem like they were written to fill a page with nice green text, rather than to genuinely explain the differences and advantages of Fishnet. Phrases like "Fish-Networking uses 93% less bandwidth, a very drastic difference!" makes me feel like you are heavily overselling something. (Unless it is actually a representative number in real-world scenarios, then hats-off, bright future for Fishnet!). Sorry for being vague, I don't really have the time to test everything rigorously, to give you more specifics. Best of luck with the project!
@@andriusbendoraitis3171 I've been hearing Mirror supporters (not implying that's the case here) say this for awhile. The only discrepancies which may exist are if Mirror updated their product with a feature or improvement I was not aware of. Being that I do not use Mirror anymore, I encourage others to notify me when this becomes the case. I'll try to summarize an explanation to your concerns in few words as possible... The features comparison only glazes some of the features FishNet has compared to Mirror. I've left many other unique and quality of life features out because it was difficult to give them a name without creating a large description of what they do. As you pointed out, it's mostly just feature titles without a description of why they are helpful. Though, seeing someone actually spell that out for me makes me believe I should improve upon that as soon as possible. The performance comparisons are also very real. The part you mention of 93% less bandwidth is specifically about RPCs, which the documentation states. If you are looking for an actual real-world scenario benchmark you can check out fish-networking.gitbook.io/docs/manual/general/performance/benchmarks/fish-networking-vs-mirror - how to test this yourself is found with the results. There is also a #user-benchmarks channel in my Discord where naturally, users can post findings of their own tests. Here's the summary on my benchmarks by the way: - Client FPS: FishNet clients achieved 70% more FPS than Mirror. - Bandwidth: FishNet used 67-78% less bandwidth than Mirror. - Server Performance(200 CCU): FishNet retained 92.6% server performance, while Mirror retained only 16.8% performance. Let me know if you have any questions. PS: I've been in the process of updating the documentation. If you want to review the full changes please check back a few more days from now.
The following video might be "The best networking stack for the different game genres". FPS, MMO, Battle Royale, Fighting, Casual, etc. Or maybe by different session types; turn-based, session-based, and persistent world.
the best thing with pun has to be the google results, most questions/solutions have been answered via google, testing fusion and fish atm so far fusion is winning
Tom Weiland, who also has a channel on youtube just released Riptide networking. I have used it successfully to create authoritative server multiplayer. Its free and easy. You still need to implement client prediction and lag compensation on your own, but the plumbing is all there.
Using PUN 2 in production and moving to using Fusion. Currently doing multiplayer VR events and minigames. PUN 2 is easy to use, but Fusion has a lot more features, and a heck of a lot more power, so I will be switching to it. Oh, and physics in fusion is handled in a similar way to something like Rocket League.
Hey! Have you found some tutorials for Fusion, I also use PUN 2 and I'm trying to make the jump but a lot of the links inside fusion documentation page are dead for some reason. Also, how was your experience? it is that much better as everyone says?
Another mid-level option if you don't want to directly wrap your TCP/UDP, you can try using a transport layer like Lidgren to handle different channels and ordering messages for you without abstracting away all of the serialization and engine-specific stuff
Photon was mentioned. Specifically I use PUN2 and I like it. Initial set up isn't great, but once you get going it's pretty good for our game. Haven't made anything like an FPS though. It seems to handle synchronizing many GameObjects at a time well, and it supports immediate and buffered RPCs. I've never used anything else, though, so I'm excited to see what Unity has to offer!
Duuuue! I haven't watched your videos in a while and today I came back, and boy.... Great content as always but man.... WHAT on earth have you done with your background space?! xD
Hey, I'm kind of new into online multiplayer and started my game with Photon Pun, which I find quite easy to use. In early phase I've decided that I would like game to hit Steam and utilizing Steamworks features (not expecting any success, but want to proof myself that I'm able to finish the project) and thus now changing it to Mirror due to existence of Steamworks libraries for Unity. I believe it's always important to understand what are the options and select proper tool for the right job - thanks Jason helping us all with this understanding 👍
Using Forge Networking on a project of mine, a multiplayer railways simulation. Its handling everything I have needed it to so far and has been easy to work with
I still use photon Pun and i think it is really great for small multiplayer games, the hashtables format for sending game room data takes a bit getting used to for beginners but everything else is very noob friendly
hey! I'm developing a small game too, was the PUN free plan enough for your player base or did you need to buy the pay version? I got a prototype version of my game running on photon, 4 players by room, I'd been looking into Fishnet lately but Photon is so much easier, or I got used to it at least.
Back in the day when I was smart, I built my own networking code for XNA. It was a lot of fun figuring out how to get things to work and working with multiple threads. I've been looking to get back into gamedev. But I'm old now, so I don't have time to build multiplayer again... I might have a peek at Fishnet
Smartfox 2x here. We've been over 10k CCUs and it's really reliable (monoscene game, 20-25 players per instance). Mirror has some impressive projects using it as well, seems to be solid.
I use Tom Weiland's Riptide networking solution. It's a bit more advanced than normal (i.e. it's purely code-based and doesn't have a simple component to apply to gameobjects that automatically works), but it allows for complete customization of networking. It has built-in RUDP and is completely open-sourced. It's still new but works phenomenally so far, and it has great tutorials made for it. Definitely would check Tom Weiland out on youtube!
I'm going to use Photon Fusion for my FPS with up to 20 players per game. Big advantages are scalable pricings, many optionally services and nice documentary about the netcode. It's also a quite new "technology", released in the last year's, so you're up to date :) To compensate the monthly costs for this service, players can rent a server and run it as an public server. Obviously there is no possibility to setup a public dedicated server from a player, only private ones to play with invited friends.
I'm currently using Yojimbo, it was made for c but it has a nice layer for dotnet. It is quite easy to install. One problem is that there isn't much documentation, so the whole security thing might be a problem, unfortunately I haven't experienced it in production yet, we'll see.
What no one tells you about Mirror in the first place: With the default Telepathy transport it just works in local networks, not online! That's because your router won't allow you to open a listener port for a server. If you want to host a game on your device, you need to manually open the needed port on your router. Of couse, this is a no go for potential customers of your game. The best solution for games that you want to publish on Steam is to use the FizzySteamworks transport and make use of NAT traversal und repeaters provided by Valve for free. Other options like NobleConnect will cost a little bit. This is not to be meant against Mirror - I succesfully used it in my game and like it - but to keep in mind if you consider using Mirror for online multiplayer.
@@cloudPvP You've right. That's another solution. But don't you have to pay for the hosting then? TBH I don't know much about developing and hosting dedicated servers.
@@ComfortZoneGames yeah you generally have to pay a web server provider to host your server. But it really depends on your app. For example i use the free tier of AWS to host my dedicated server for over a year. But my app is very light and can be supported by the free tier servers.
Hey, nice vid, thanks! For us - we are using Smartfox. I don't know about others libs, but smartfox provides cross-platform support, which is what we need for our projects - used for pc, mobile and almost all consoles
I've used Photon Fusion and want to point out it has a couple of drawbacks. It only supports networking through their relay service. You can't have a direct client->host setup. So that will increase your pings times by a bit, and conversely affect your game's responsiveness. Also they introduce a new update function (FixedUpdateNetwork) that you must use for all networking-related matters. This can be most of your game in fact if you want most of it to work in multiplayer. And if you're using other Unity game frameworks, be prepared to spend a lot of time adapting it to Fusion and FixedUpdateNetwork. We've also observed it seems to be optimized to the point of being risky, with some crashes on iOS since integrating it. It's a shame since this library seems the most polished out of everything I've seen so far. Unity Netcode for GameObjects (what happens when you let programmers name things) is still a preview package, so not fully supported or bug free yet. Occasionally I'd get silent failures. No logs, no exceptions, just client fails to connect. So they need to focus on surfacing error codes to the game. Also the events are kinda dumb. The "player joined" event is very late, to the point where you can get multiple "player disconnected" events without ever getting a "player joined" event. Those events need to be symmetric to make any sense at all. It definitely has long-term potential but since it's still a preview package, it's a risk for anything you're planning on releasing commercially. I'd wait a bit for it to get some more development time.
A good compromise between the extremes of complete library, and making your own networking solution on the level of TCP or UDP seems to be Websockets, IMO. No need to muck about with actual protocols and ports and all that lowest-level stuff, Websockets are much simpler and friendlier, but they seem to be pretty powerful. I've been able to handle 15k concurrent connections with my laptop (hp omen 15) being the server and it seemed to handle it fine.
If you want to roll up your own server I am using RiptideNetworking by Tom Weiland for my small puzzle game. It is open source and written by a single person so it will not have many bells and whistles but a big benefit of it is that it's C# so if you want to have domain logic on the server without needing to learn another language this might be a good choice for you ;)
@@BadBanana There are definitely things that I like in it (simplicity and relative ease of making the library do what you need it to do) and other ones I might not recommend in a project that's anything but a prototype (static only message handlers) but it is a good thin server library and with a bit of refactoring it's easy to make it do what you need.
@@BadBanana I love Tom's content and appreciate what he does for the community, but, aren't you afraid of investing your time and devotion to learn something that depends on 1 single person? I'm just saying
It looks like my last comment was deleted by YT... anyways, DarkRift user here - great library with a great (though small) community to back it. Recently went open source - if you are having trouble with the official docs, there are several tutorials and networking resources provided in the discord :) One nice thing about DR is that it supports both embedded (Unity) servers so you can take advantage of things like AI, Physics, etc easily on your server but it also supports console servers that can be a lot more performant if you don't need Unity to handle those things.
Photon PUN is great for devs new to multiplayer so I'm interested to see how Fusion works out in this regard. I've also used SmartFoxServer2X and it's solid (long history, was big for ActionScript Flash games back in the day - its AOI feature is still a pretty unique offering). Sadly Heroic Labs Nakama server was not mentioned since it is an open-source offering (not many out there) but also used for huge games (like by Zynga) - currently using on a client project that needs to support 40k CCU. ^^
I used photon pun v1 for my first time using networking inside unity. seemed to work pretty well once I understood the netoworking concepts and how to bes implement things. I think I had more problems relating to game architecture that caused headaches with networking rather than the networking itself.
I am definitely looking forward to some Fusion tutorials, I didn't get the chance to use PUN, I went from unet to mirror. I've been tinkering with Fusion and it's a bit of a pain going back and forth between the examples, the documentation and my own code.
In my opinion, and from hundreds of tests and tests that I have carried out, I am afraid (I say "I am afraid" because I am an individual programmer) that the development of this type of element, which is so vital, has great risks when it is developed by individual natural persons. There are many occasions when, for whatever reason (illness, fatigue, lack of profitability, etc.) this type of product has ended up in oblivion. If this happens to you with a vegetation tool... well, good. But with a multiplayer development it is very different. I personally am "in love" with Fish-Net and have the pro options for my subscription on Patreon. But, I insist, the risk that one day you get "stuck" is there. It is a fact that we cannot ignore. Greetings.
Personally, I love FishNet. I haven't gotten to the point yet where I can develop multiplayer for my game, but that is the solution I'll be using for sure.
I used SmartFoxServer for a game. I like how easy it is to implement and use, all you have to do is drag a .dll into the project and it works. It doesnt really bring a lot to the table however. You have to host you own server and also manage everything on your own. Like there is no network transforms or RPCs. You would always send player variable updates to the server and every client would receive them and you had to implement your logic based on that. Works with 2D, 3D, everything but I dont think it is really scalable/managable for bigger projects. At least that is how I understood it and I looked quiet a lot through the documentation. The documentation is actually pretty decent but next time I will definitely go with something else. Probably going to try FishNet ;D
I am writing a source generator for Unity Transport to make serialization easier. And I think using Unity Transport with DOTS will be a better performance for big games. But without source generators, it will not have much speed in the development process and as a result
Colyseus has compatibility with a bunch of engines, including Unity. Good management for rooms, state, and normal message. Ok matchmaking, and compatibility with reddis out of the box. Though a case of needing JavaScript as another language.
Usually the story with unity’s solutions is: endless beta period to find out the final is really slow and crappy. Then you turn to something else… Fishnet is looking really good though…
I used Pun/Photon to network my game up a year or so ago. I was pretty disappointed that it did so badly if you were essentially using high speed object, there were massive jumps in the objects on screen and it looked very jerky. I had to go through and write my own stuff that would attempt to figure out the velocity and direction it was likely to take and then adjust this as new positions would come in (which is what I thought Pun was supposed to do for me) It's an issue if you are an indie developer who can't afford to pay for stuff - Pun gives you 4 players per lobby for free which is ok, but I'll certainly be taking a look at these other options and see if somethings better. Ultimately I think it would be useful to get rid of the central servers and have peer-to-peer play... but you still need a server of some sort to handle the lobby/matchmaking stuff
@@RobLang I'm often checking out Game Dev channels - especially if it's something I can put to use. improving the networking aspect of my sim is something I'd like to sort out
@CurryKitten I am currently developing a VR game where a fast moving ball needs to be synced for multiple players every second. Syncing with PUN won't work for this. I had to write my own sync for the ball. The only way it worked is for each instance to have its local ball and then sync based on velocity at each hit and network ping times. But PUN works fine for slower moving objects in the game.
@@hawkgamedev Thanks :) There's not too much dev stuff on my channel (perhaps I'll have another channel for that at some point) but I hope you enjoy what's there !
I worked with mirror and photon for some prototyping, but now I make my own system. My game is turn based so the traffic is low and it doesn't matter if it's slow. All the paid options charge too much for the things I just need. So SignalR it is for me. Simplest way would probably be to abuse such messaging services like your sponsor and send json data instead of chat messages xD
The biggest problem is more to get people playing the game, so the servers are not empty. If a games is empty, even new player would quickly drop out, as there is noone to play with. Games that also support asynchronous play, or offline play have an advantage here.
Hey man, I started learning Unity and stuff, and in the future, I'm planning to build quite a fast-paced multiplayer soccer game that would include chat, story mode too etc. Which networking system you would recommend to me?
Unfortunately, the video focuses, for the most part, on performance options instead of 'the best option for your particular project'. What would be the easiest and fast option to implement for a turn-based game that really doesn't need network performance? Is Fish-NET easier than Mirror?
Mirror is as simple as adding a prefab network manager to your scene and changing the extension of code that needs to be synced via a server. It has components to sync rigidbodies, transforms, child transforms, and more. It's really easy to setup and get working in like an hour compared to having to setup EVERYTHING on your own for MLAPI based multiplayer setups (which I believe photon is)
@@NeonTheCoder I see. I'm not sure how it works with turn based games where you have several controllable units per player. It's not a prefab per say but several. It also seems that sifh-net follows that same path.
I vouched for Fishnet for a while now, been using it some projects, and it didn't grow as fast as I needed personally, after months of using it, I realised that Mirror had everything I needed for a fast-paced and that client prediction wasn't hard to implement in Mirror. The support is also much more helpful. My personnal experience with FirstGearGame were strange, pretty much narrowed down to talking about how much he dislikes Vis2k over some random drama. The project is great, just not "enough" for my games just yet.
What was lacking with Fishnet? It's advertised as being faster than Mirror with more features (like prediction). I'm trying to decide between the two, but I want something that's easily capable of authoritative logic
what about unity's transport layer? I use it exclusively. It's the easiest to understand as it just sends bytes over. The work is a bit much but you have the finest level of control. Nobody seems to know it?
could you give some more feedback since the normcore itself is not widely used and it looks nice from what i checked their docs. Im trying to build a VR game either probably in Normcore or FIshnet, any suggestions? :)
i slowly gained preference for dedicated servers instead of running BaaS mainly because for someone who is dealing with unity already its easier to jump to something written in c# best of all is you can run a full game in a server.. the only thing you lose though is multiple game engine support and baas dashboards like metrics logs admin page..BaaS like colyseus is good though or edgegap or nakama but very expessive. i highly recommend photon pun for all beginners if you just want to deliver a product connecting multiplayer without caring much about baas or dedicated servers because photon pun .. but if you care about cheaters use dedicated networking like Fish-Net Smartfox Dark Rift 2 mirror toggling between photon or a variant of fishnet or mirror is good way or even a baas but you have to keep in mind how much power you want vs willing to give up.
I believe smartfox is only for flash from what I remember. Nathan from DapperDino had great tutorials. Mirror was my main choice for predominantly that reason. Tutorials make a world of difference. I'm sure there is a case to be made for software that was great, but never made it because of a lack of use documentation. Mirror has a limit to the number of connections, and then charge beyond that number. I'm a noob to a lot of this stuff, but I hear Photon is pretty good. It's just like a lot of what's happening right now where your tools snowball in cost, and so you default to all of the cheapest options available. Some tools are monthly. It feels as though the industry is trying to find an economic balance. My thought is make it free until it makes money. The more people using the tool you have the more companies will use your tool.
I chose to roll my own, simply because I started making my game way before I even settled on Unity for the client. It has been quite a lot of work for sure - and I probably wouldn't recommend going that route for someone wanting to make a game relatively fast, but today I'm happy I did so because I don't need to use Unity on the server.
Question, I need to learn everything I can about using a Photon Server (currently experienced with C# and Unity). I've looked on Udemy etc. and TH-cam and haven't found much. I saw one Udemy course
I just started learning networking a bit and I've started with Mirror since that's the one I found tutorials for. Dark Rift 2 has been recommended to me on Discord, but I don't know any specific pros or cons.
So I'm working on a competitive physics game with force-based movement where the collision data between players is the primary factor in who wins. It all happens with extremely simple shapes in a box, but I'm having a terrible time getting the camera controls to network properly. I first attempted to do it with PUN, but their docs confused me horribly, so I removed all the PUN code and decided to switch to Mirror. I found the docs a lot more useful, but I still can't get the camera controls to network properly. I'm parenting the camera to the player object and trying to spawn it in with the player, but my movement controls are integrated with it and when it spawns in, I can look around, but it won't move with my player. Also, when other players are spawned in, their cameras don't seem to spawn at all. I'm hopelessly confused.
Hi Jason, one of the developers of both Fusion and Quantum here. Thanks a lot for the kind words about our stuff. We try to always keep an eye on feedback and informational videos like this of yours. Anybody who is interested can drop a question bellow here. I’ll try my best to answer timely.
Hey Erick, Long time PUN user (Both 2D and 3D) I noticed that PUN was horrific for 2D Platformering Physics and player synchronization and was curious if Fusion would be a significant step up? Also, what is the learning curve going from PUN 2 -> Fusion, as it feels a bit daunting having to re-learn the wheel. I look forward to your feedback :)
@@reinhardtweyers9720 hi. Fusion has nothing to do with the way PUN works. It's a discrete ticks-based architecture that is designed for these games where accuracy is paramount. We recently released a sample called Razor Madness that loosely inspired by super meat boy vibes/mechanics. It should give you an idea of how to do 2D platforming with its APIs.
Multiplayer isn't as hard as you think. It's much much harder.
How so? Im new to this and planning on getting started on it
Take the complexity of every mechanic in your game, then multiply the time and complexity by 2, or 3. Deciding when, and how, to sync game objects (e.g. who's the owner? Who effects what objects and when? What happens if someone joins late? How/when do you update/sync objects/params without bogging the network) scripts variables/params, debugging/testing with multiple machines. Just like anything, it seems simple conceptually, until you start needing to implement it yourself haha.
It's totally worth doing, but start small! It can be a fun process if you are patient and persistent.
Actually, I'll pitch this: If you want some help to get off the ground, I offer 1 on 1 sessions (developer support) as a side hustle (I used to work as a Unity instructor at Circuit Stream). There's also some great tutorials on PUN. I use PUN and it's great if you are making basic stuff with smaller #s of players and don't require super low latencies.
@@Rainysummer55 im working on online game for mobile.. The multiplayer system is too easy don't listen to people that say multiplayer is hard.
@@creepybrainz4840 I agree with you it’s not easy but that’s normal gamedev is never was easy , I think that people are generally programmed from other’s, and they say it’s hard even they didn’t experience itself.
Oh no, well it can't be that bad right?
Congrats on another excellent video Jason!
The timestamps to help out everyone are:
00:53 UNnet (Deprecated)
01:34 Mirror uMMORPG
03:08 Stream (video sponsor)
05:01 Photon Fusion - Bolt - Pun
07:05 Unity
08:47 Fish-Net
10:16 Dark Rift 2
11:00 Smartfox
Working on a small scale (playercount) social mmo using fishnet. I have worked with mirror and ummorpg/2d in the past, but switched over to a scratch build co-op system with MLAPI back when it was first coming up, where I learnt most of my multiplayer coding. But the rapid changes during its development made me seitch back to mirror where i discovered fishnet. After switching to fishnet the first thing I discovered was just how smooth the server auth/client prediction was and how much nicer it felt than anything I had built previous. Haven't gone back. I have tested out basic builds with 8 players and over 250 AI all moving around on a live server and it was still just as smooth.
Thanks for the incite! I will definitely look into fishnet
I think Epic Online Services is the best option no limits free
mainly using Unreal Engine networking, after hearing unity's ONE network dev talk about how "Games and Multiplayer are hard, Network is hard" in 2019... I had to just give up on unity and go to unreal. God bless you for helping the pain unity provides. God speed GameDevs!
I am using Mirror at the moment but i just read the documentation and benchmarks of Fishnet and i will swap to it now, it somehow looks like its more fun and a bit easier to develop with it. And i like the fact that they have an official roadmap which also includes an video tutorial series.
which video series? Mirror is good but has few tutorial ..
Using Nakama at the moment as our internal teams found that the most useful for our applications over others mentioned in the chat. What stands out there is needing multiplayer control across different platforms all in the same session like Unity and a website all synchronised.
Oh nice, I was planning on using Nakama for a later project, how is it working for you?
@@aibor_io6871 Working really well. It's much better now with developing TypeScript modules instead of Go for the team. I'd recommend using the command pattern to simplify things a lot on the client end or JSONPatch if you want to maintain the full game state centrally. Depends on your application. Hope that helps!
@@achery323 Thank you , this was quite helpful , thank you will look into the command pattern
Ive been using Photon Pun for a month now for a multiplayer shooter, I think an important thing to mention is that photon aint free if youre planning doing anything other then prototyping , the costs monthly spike pretty quickly if youre getting more then 100 ccu's
The last one I used was Quantum from Exit Games. The guys that made Photon and Fusion. It was a different experience, since you make all the game logic in Quantum and not in Unity. However, when you get used to it, it feels like making a single player game.
Quantum is awesome. Its deterministic so you only have to sync inputs instead of trying to sync everything in the game constantly. It makes anticheat, replays, reducing lag and data sent, and more incredibly easy. Same patterns that they use to make Overwatch incredibly smooth.
@@ryanharbert9415 Does it have authoritative server? Is it viable for games simulated on server side with unity only for front end?
@@dworm123 Yeah but you don't necessarily need it. Inputs are all validated so the cheating player will only mess up their own experience.
@@ryanharbert9415 thank you for your first message, I now have an idea in the future about to make an online game smooth as possible 😯... because in the future I want it to be smooth as possible... because I have tried to play a private server that has very ugly outcomes when you are lagging, all things are like freeze and freeze while that same game but other private server when I am lagging, I can still move and hit players which is much better then after my ping came to normal the player that i hit on, just get killed and they are shock haha
that's the kind of network I want, instead of those movements of players that are basing on your internet 🤮
Yeah it seemed intriguing. I want to check it out at some point. The only thing is finding the time to evaluate it, and I'm definitely worried that it's so different it won't integrate with any other Unity libraries.
recently I've been using Nakama for all my games. Paradox is apparently using it for their grand strategy games. it doesn't have fancy features like physics simulation, prediction, lag compensation, etc. But it's performant, open source and easy to use. It's perfect for small games, turn based or any game that doesn't require physics sim or complicated animations like first person shooters. Photon is definitely easy to use /setup , but it gets expensive fast! Nothing beats open source! :D
I've been using Unity's Netcode for GameObjects: it's now quite stable although still in pre-release and is very similar in its design to UNet/Mirror. The bite sized samples and Boss Room are useful too and regularly updated but looking for specific examples is still less easy than with Mirror as the solution is more recent. All in all I'm OK with my choice and hoping that the (very responsive) Unity networking team will make performance improvements, client-side prediction and NavMesh integration their priorities over the next few months!
9 months later, still nothing from this is implemented.
@@mikekozlov3484 Performance markedly improved in the last few months.
The team has also started exploring the facilitation of host migration (see GitHub issues) but yes, for client-side prediction and even better performance currently FishGames is still the solution of choice.
@@cradle_of_chaos Yep, rewriting my proto from Netcode to FishNet right now.
FishNet is definitly the best and easiest solution ! Server Authoritive movment ? Just drag the script in, connect your input and the transform output aaaaand done.... God i love this asset !
I use DarkRift 2 and I'm really happy with it. The Support in the Discord Server is very fast and the community is great (grows every day).
DarkRift 2 is very easy to setup and to use. You can make a console based server or a headless unity server (build the server directly in unity).
And there are other cool functions ready to use :)
The devs of DR2 have some cool plans for the future :D
I looked at DarkRift too, looks solid indeed! The only reason i went with Fishnet in the End is because DarkRift at time was not free, and i didn't see if it has client side prediction. But definately still on my list!
Jason, I was really looking for not-outdated multiplayer options that would integrate well with unity and have been avoiding the subject (because I expected it to be a huge ordeal). with these options though, I at least have a starting-off point that I can focus on. thanks!
Fusion is a gamechanger really, bringing AAA options available to smaller studios at a great price it's huge.
ya I have to agree with "public alias" look at photon fusion, it is the future for indie devs not ready for backend dev.
@@publicalias8172 I tried it and it seems like a mess... You had better luck with it? Mostly I find that it lacks the input checks that a closed source project requires and it just throws nullpointers when I do something wrong with references to lines in code I can't see.
I actually use node js to make a server and a socket io client in unity to connect to it. May not be the best system, won't work fast, but it's my system and I love it. It's quite easy to set up too and It's flexible as hell.
can you define wont work fast? I am thinking of using something similar and I would like to know if I can stay on websockets or move to another solution
@@unhealthytomato3219 it's more of a theory as everything about web sockets seems to be more centered in online chats and stuff. I've done tests with up to 5 players with a basic player that moves and talks to npcs and it works great, the latency seems fine too. If you are not going to use it for an mmo I'd say its great, especially because you do all the logic :)
I am currently working with Fusion on an FPS game, I've started when fusion was still in beta, and now there is a stable official version, it's kinda have everything needed for a fast paced game with the tick rate system, it s confusing to use at the beginning but once you are used to it you won't have any trouble doing what you have in mind
Mirror also have a dots focused solution that seems cool. This was well timed for me also as I'm currently trialing Mirror, its been fine so far. Being that I don't have any major network requirements, all I'm looking for is a service to just get out of the way and that won't break the bank. Most of the work for me at least is building a robust abstraction in order to prevent the networking app from polluting the other codebase systems. And Mirror is actually worse for that than PUN, but both are guilty. I'll try fishnet next, then fusion
I'm using Photon PUN, and for the first time on my new project. Having never worked on multiplayer I found PUN pretty easy to get. I am still learning some of the advanced lobby and room things, but as for implementing gameplay systems and syncing I find it great. The default photonview stuff works great and is very proformant. Thier team is also great, I had a few questions related to cost and they were very helpful. I will say that the cost system is a bit complicated for someone new to multiplayer.
The biggest problem I ran into with PUN back when I used it (5+ years ago) was that you had no control of the server and no way to make an authoritative system. Which is a big problem for cheat prevention.
Obviously not every game needs that kind of cheat prevention, but it was a big turn off for me. Though perhaps they've changed their product :)
I've been building a game in Mirror, and once it "clicks" it becomes very easy to make good progress. I'm now converting the project to FishNet and I've been enjoying FishNet as well. Mirror's community is bigger currently, and there are more resources available for it, but FishNet's community is increasing steadily and the developer is a great guy who is eager to listen to suggestions and offers lots of help.
What's your game about?
It's a remake of Notch's entry to the 22nd Ludun Dare, Minicraft. I'm using it as means to learn networking in Unity. I think it's good to get a grasp of the basics before attempting to build my own game.
Jason, I really love your content and has helped me a lot in game development. I just want to give you a small feedback for your videos. The red rotating light is a little distracting. Just a thought you might consider. Keep posting videos , we love it.
lol, so I am not the only one that gets hypnotized by that thing...
I’ve had students make multiplayer VR experiences easily (easily enough for students) with Normcore. Not sure how well it’s documented since it’s not super widely used, but the creators have gone to release a vr esports title, Nock, for the quest.
how you verified with such low sub count ?
could you give some more feedback since the normcore itself is not widely used and it looks nice from what i checked their docs. Im trying to build a VR game either probably in Normcore or FIshnet, any suggestions? :)
I have used Mirror, Colyseys, PUN and FishNet. I hated Colyseys didn't care for PUNs pricing and didn't do more then play with it before moving on. I accomplished a lot with Mirror and I am really liking FishNet so far. I would recommend Fishnet to anyone looking to get into networking but it still (Nov 2022) needs more documentation and you may need to play with other tools like mirror just to understand some networking basics.
I really appreciate that you are both a knowledgeable person who shares what they know, and also open to the idea that you don't know everything. One thing that drives me insane is people acting like they are the ultimate expert in something, and after you do what they suggested for a while, you learn that they were overselling their knowledge and sent you down the wrong path. I appreciate that you are clear about what you know, what you think, and what you need to learn more about.
A Review on FishNet in Asset Store: I've been waiting a long time for a networking solution like this. I'm just glad it's finally here.
I've tried Mirror, PUN, Photon Bolt, Netcode for GameObjects (MLAPI), Mirage, Forge. All of them have major hang-ups for one reason or another. Each one of them suffers from various downsides like legacy code, disorganization, or weird ways of doing things. But FishNet? The code base is clean. Like really, really, really clean. And even though it's simple and clean™, it still has all the features you want, and then some.
Don't get me wrong, those other networking solutions have their strengths, for sure, but FishNet just takes all those strengths and bundles them into one package.
Sure, Mirror is easy to use... it's just that FishNet is even easier to use. Photon Bolt is fast... but FishNet is even faster. Unity's Netcode for GameObjects is architectured well... but FishNet is just architectured even better.
I cannot say enough good things about this networking package. It's just so good, and you should try it.
Thanks!!
Now I really know what to try out
So fishnet is better than MLAPI 1.0 right?
@@nathanmiguel76 this is someone else's review I copied for new comers to multiplayer games!
I've read about FishNet, but just wonder about using it on production project. becase it's just new package, it've just been released for few months.
Having used both fishnet and mirror, fishnet Def seems like the better choice atm. Much more performant and stable (fn docs provide ways for you to test and prove this yourself)
What kind of game are you developing with fishnet?
The way fn docs compare themselves to mirror in the docs is so disingenuous though. Makes me wonder what's the quality of the provided tests.
@@andriusbendoraitis3171 Can you please elaborate? Far as I am aware everything in the documentation is true. If there is outdated information about Mirror please let me know and I'll fix it. Please keep in mind I only update Mirror's information based on store releases.
But if you are curious about the tests, run them yourself. I've provided all of the information to do so with the results.
@@FirstGearGames I mean, I'm sure all your claims in the docs are correct at least to some level. They just seem like they were written to fill a page with nice green text, rather than to genuinely explain the differences and advantages of Fishnet.
Phrases like "Fish-Networking uses 93% less bandwidth, a very drastic difference!" makes me feel like you are heavily overselling something. (Unless it is actually a representative number in real-world scenarios, then hats-off, bright future for Fishnet!).
Sorry for being vague, I don't really have the time to test everything rigorously, to give you more specifics. Best of luck with the project!
@@andriusbendoraitis3171 I've been hearing Mirror supporters (not implying that's the case here) say this for awhile. The only discrepancies which may exist are if Mirror updated their product with a feature or improvement I was not aware of. Being that I do not use Mirror anymore, I encourage others to notify me when this becomes the case. I'll try to summarize an explanation to your concerns in few words as possible...
The features comparison only glazes some of the features FishNet has compared to Mirror. I've left many other unique and quality of life features out because it was difficult to give them a name without creating a large description of what they do. As you pointed out, it's mostly just feature titles without a description of why they are helpful. Though, seeing someone actually spell that out for me makes me believe I should improve upon that as soon as possible.
The performance comparisons are also very real. The part you mention of 93% less bandwidth is specifically about RPCs, which the documentation states. If you are looking for an actual real-world scenario benchmark you can check out fish-networking.gitbook.io/docs/manual/general/performance/benchmarks/fish-networking-vs-mirror - how to test this yourself is found with the results. There is also a #user-benchmarks channel in my Discord where naturally, users can post findings of their own tests.
Here's the summary on my benchmarks by the way:
- Client FPS: FishNet clients achieved 70% more FPS than Mirror.
- Bandwidth: FishNet used 67-78% less bandwidth than Mirror.
- Server Performance(200 CCU): FishNet retained 92.6% server performance, while Mirror retained only 16.8% performance.
Let me know if you have any questions.
PS: I've been in the process of updating the documentation. If you want to review the full changes please check back a few more days from now.
Straight up read my mind. Was literally combing through your videos for some multiplayer stuff this morning. Thank you!
The following video might be "The best networking stack for the different game genres". FPS, MMO, Battle Royale, Fighting, Casual, etc. Or maybe by different session types; turn-based, session-based, and persistent world.
the best thing with pun has to be the google results, most questions/solutions have been answered via google, testing fusion and fish atm so far fusion is winning
Tom Weiland, who also has a channel on youtube just released Riptide networking. I have used it successfully to create authoritative server multiplayer. Its free and easy. You still need to implement client prediction and lag compensation on your own, but the plumbing is all there.
I love how we could experience througout Jasons videos how his room evolves. Im from the "big white lamp in the corner era". You guys?
Using PUN 2 in production and moving to using Fusion.
Currently doing multiplayer VR events and minigames.
PUN 2 is easy to use, but Fusion has a lot more features, and a heck of a lot more power, so I will be switching to it.
Oh, and physics in fusion is handled in a similar way to something like Rocket League.
Hey! Have you found some tutorials for Fusion, I also use PUN 2 and I'm trying to make the jump but a lot of the links inside fusion documentation page are dead for some reason. Also, how was your experience? it is that much better as everyone says?
Another mid-level option if you don't want to directly wrap your TCP/UDP, you can try using a transport layer like Lidgren to handle different channels and ordering messages for you without abstracting away all of the serialization and engine-specific stuff
Jason, you seriously are the start. Thank you for letting me know about Fish-Networking - I will definitely dig deeper into it! :)
Photon was mentioned. Specifically I use PUN2 and I like it. Initial set up isn't great, but once you get going it's pretty good for our game. Haven't made anything like an FPS though.
It seems to handle synchronizing many GameObjects at a time well, and it supports immediate and buffered RPCs.
I've never used anything else, though, so I'm excited to see what Unity has to offer!
Duuuue! I haven't watched your videos in a while and today I came back, and boy.... Great content as always but man.... WHAT on earth have you done with your background space?! xD
I have been waiting for such a curated video for so long now 😭
Thank you so much ❤️
Hey, I'm kind of new into online multiplayer and started my game with Photon Pun, which I find quite easy to use. In early phase I've decided that I would like game to hit Steam and utilizing Steamworks features (not expecting any success, but want to proof myself that I'm able to finish the project) and thus now changing it to Mirror due to existence of Steamworks libraries for Unity.
I believe it's always important to understand what are the options and select proper tool for the right job - thanks Jason helping us all with this understanding 👍
I've Used Mirror and Pun 1 and 2 and I love PUN personally.
Using Forge Networking on a project of mine, a multiplayer railways simulation. Its handling everything I have needed it to so far and has been easy to work with
I wrote my own UDP networking engine with p2p capabilities after having a miserable experience with bolt. great video!
I still use photon Pun and i think it is really great for small multiplayer games, the hashtables format for sending game room data takes a bit getting used to for beginners but everything else is very noob friendly
hey! I'm developing a small game too, was the PUN free plan enough for your player base or did you need to buy the pay version? I got a prototype version of my game running on photon, 4 players by room, I'd been looking into Fishnet lately but Photon is so much easier, or I got used to it at least.
Back in the day when I was smart, I built my own networking code for XNA. It was a lot of fun figuring out how to get things to work and working with multiple threads.
I've been looking to get back into gamedev. But I'm old now, so I don't have time to build multiplayer again... I might have a peek at Fishnet
So glad this video came up; I've been trying to decide on how I want to handle multiplayer in my game 🤔
Smartfox 2x here. We've been over 10k CCUs and it's really reliable (monoscene game, 20-25 players per instance). Mirror has some impressive projects using it as well, seems to be solid.
what kind of game do you have if you don't mind me asking.
UNet is just.... aah those were the times..... of networking spaghetti....
Aw man, i can't stop looking at the lamp, it is the third time i look at the video XD
I use Tom Weiland's Riptide networking solution. It's a bit more advanced than normal (i.e. it's purely code-based and doesn't have a simple component to apply to gameobjects that automatically works), but it allows for complete customization of networking. It has built-in RUDP and is completely open-sourced. It's still new but works phenomenally so far, and it has great tutorials made for it. Definitely would check Tom Weiland out on youtube!
I know mirror & photon
This video is helpful & learned a lot of stuff about alternatives & which is best.
I'm going to use Photon Fusion for my FPS with up to 20 players per game. Big advantages are scalable pricings, many optionally services and nice documentary about the netcode. It's also a quite new "technology", released in the last year's, so you're up to date :)
To compensate the monthly costs for this service, players can rent a server and run it as an public server. Obviously there is no possibility to setup a public dedicated server from a player, only private ones to play with invited friends.
I'm currently using Yojimbo, it was made for c but it has a nice layer for dotnet. It is quite easy to install. One problem is that there isn't much documentation, so the whole security thing might be a problem, unfortunately I haven't experienced it in production yet, we'll see.
What no one tells you about Mirror in the first place: With the default Telepathy transport it just works in local networks, not online! That's because your router won't allow you to open a listener port for a server. If you want to host a game on your device, you need to manually open the needed port on your router. Of couse, this is a no go for potential customers of your game. The best solution for games that you want to publish on Steam is to use the FizzySteamworks transport and make use of NAT traversal und repeaters provided by Valve for free. Other options like NobleConnect will cost a little bit. This is not to be meant against Mirror - I succesfully used it in my game and like it - but to keep in mind if you consider using Mirror for online multiplayer.
You can always host a dedicated server with mirror. That way you won't need to forward your ports. At least that's what i did
@@cloudPvP You've right. That's another solution. But don't you have to pay for the hosting then? TBH I don't know much about developing and hosting dedicated servers.
@@ComfortZoneGames yeah you generally have to pay a web server provider to host your server. But it really depends on your app. For example i use the free tier of AWS to host my dedicated server for over a year. But my app is very light and can be supported by the free tier servers.
@@cloudPvP That might be a good option for future projects. Thanks for the Tipp.
Hey, nice vid, thanks! For us - we are using Smartfox. I don't know about others libs, but smartfox provides cross-platform support, which is what we need for our projects - used for pc, mobile and almost all consoles
I've used Photon Fusion and want to point out it has a couple of drawbacks. It only supports networking through their relay service. You can't have a direct client->host setup. So that will increase your pings times by a bit, and conversely affect your game's responsiveness. Also they introduce a new update function (FixedUpdateNetwork) that you must use for all networking-related matters. This can be most of your game in fact if you want most of it to work in multiplayer. And if you're using other Unity game frameworks, be prepared to spend a lot of time adapting it to Fusion and FixedUpdateNetwork. We've also observed it seems to be optimized to the point of being risky, with some crashes on iOS since integrating it. It's a shame since this library seems the most polished out of everything I've seen so far.
Unity Netcode for GameObjects (what happens when you let programmers name things) is still a preview package, so not fully supported or bug free yet. Occasionally I'd get silent failures. No logs, no exceptions, just client fails to connect. So they need to focus on surfacing error codes to the game. Also the events are kinda dumb. The "player joined" event is very late, to the point where you can get multiple "player disconnected" events without ever getting a "player joined" event. Those events need to be symmetric to make any sense at all. It definitely has long-term potential but since it's still a preview package, it's a risk for anything you're planning on releasing commercially. I'd wait a bit for it to get some more development time.
FYI: i am a backend developer with 4 yrs experience working on real time systems and databases
A good compromise between the extremes of complete library, and making your own networking solution on the level of TCP or UDP seems to be Websockets, IMO.
No need to muck about with actual protocols and ports and all that lowest-level stuff, Websockets are much simpler and friendlier, but they seem to be pretty powerful. I've been able to handle 15k concurrent connections with my laptop (hp omen 15) being the server and it seemed to handle it fine.
If you want to roll up your own server I am using RiptideNetworking by Tom Weiland for my small puzzle game. It is open source and written by a single person so it will not have many bells and whistles but a big benefit of it is that it's C# so if you want to have domain logic on the server without needing to learn another language this might be a good choice for you ;)
I'm going into Tom's stuff next year when I begin my course.
It will be useful to see how he has done things compared to cs
@@BadBanana There are definitely things that I like in it (simplicity and relative ease of making the library do what you need it to do) and other ones I might not recommend in a project that's anything but a prototype (static only message handlers) but it is a good thin server library and with a bit of refactoring it's easy to make it do what you need.
@@BadBanana I love Tom's content and appreciate what he does for the community, but, aren't you afraid of investing your time and devotion to learn something that depends on 1 single person? I'm just saying
It looks like my last comment was deleted by YT... anyways, DarkRift user here - great library with a great (though small) community to back it. Recently went open source - if you are having trouble with the official docs, there are several tutorials and networking resources provided in the discord :) One nice thing about DR is that it supports both embedded (Unity) servers so you can take advantage of things like AI, Physics, etc easily on your server but it also supports console servers that can be a lot more performant if you don't need Unity to handle those things.
Photon PUN is great for devs new to multiplayer so I'm interested to see how Fusion works out in this regard. I've also used SmartFoxServer2X and it's solid (long history, was big for ActionScript Flash games back in the day - its AOI feature is still a pretty unique offering). Sadly Heroic Labs Nakama server was not mentioned since it is an open-source offering (not many out there) but also used for huge games (like by Zynga) - currently using on a client project that needs to support 40k CCU. ^^
I'm assuming you are running Nakama on your own hardware? If so, what are your server specs to achieve 40k CCU?
I used photon pun v1 for my first time using networking inside unity. seemed to work pretty well once I understood the netoworking concepts and how to bes implement things. I think I had more problems relating to game architecture that caused headaches with networking rather than the networking itself.
I am definitely looking forward to some Fusion tutorials, I didn't get the chance to use PUN, I went from unet to mirror. I've been tinkering with Fusion and it's a bit of a pain going back and forth between the examples, the documentation and my own code.
In my opinion, and from hundreds of tests and tests that I have carried out, I am afraid (I say "I am afraid" because I am an individual programmer) that the development of this type of element, which is so vital, has great risks when it is developed by individual natural persons. There are many occasions when, for whatever reason (illness, fatigue, lack of profitability, etc.) this type of product has ended up in oblivion.
If this happens to you with a vegetation tool... well, good. But with a multiplayer development it is very different.
I personally am "in love" with Fish-Net and have the pro options for my subscription on Patreon. But, I insist, the risk that one day you get "stuck" is there.
It is a fact that we cannot ignore.
Greetings.
exactly my thoughts about stuff beind developed by 1 person or 2. What's the legacy looking like when nobody thinks for the worst.
Personally, I love FishNet. I haven't gotten to the point yet where I can develop multiplayer for my game, but that is the solution I'll be using for sure.
I've also experinced working with Photon, super quick to get simple testing going. Thanks for sharing!
I used SmartFoxServer for a game. I like how easy it is to implement and use, all you have to do is drag a .dll into the project and it works.
It doesnt really bring a lot to the table however. You have to host you own server and also manage everything on your own.
Like there is no network transforms or RPCs. You would always send player variable updates to the server and every client would receive them and you had to implement your logic based on that. Works with 2D, 3D, everything but I dont think it is really scalable/managable for bigger projects.
At least that is how I understood it and I looked quiet a lot through the documentation.
The documentation is actually pretty decent but next time I will definitely go with something else. Probably going to try FishNet ;D
I also use SmartFox and currently creating a Unity OpenWorld asset that is based on SmartFox Server and Game Creator.
I am writing a source generator for Unity Transport to make serialization easier. And I think using Unity Transport with DOTS will be a better performance for big games. But without source generators, it will not have much speed in the development process and as a result
I'm also curious about the Steam Networking solution🤔
Had great success with Photon Bolt in the past, but was hoping Unity would finally have a stable alternative. Taking forever.
Colyseus has compatibility with a bunch of engines, including Unity. Good management for rooms, state, and normal message. Ok matchmaking, and compatibility with reddis out of the box. Though a case of needing JavaScript as another language.
Currently developing a game using Quantum, it is by far the smoothest multiplayer game dev I've ever had.
I'm using DarkRift 2 with Unity. Thanks for the vid very helpful.
I’ve used normcore and it’s been good. They even have a sample VR project.
SignalR + WebGL = Pretty Good!
FishNet is a new one, it's better in every way to mirror. It's not hard to upgrade projects from it.
This was really usefull especially with the New Unity Networking system update.
Usually the story with unity’s solutions is: endless beta period to find out the final is really slow and crappy. Then you turn to something else… Fishnet is looking really good though…
I used Pun/Photon to network my game up a year or so ago. I was pretty disappointed that it did so badly if you were essentially using high speed object, there were massive jumps in the objects on screen and it looked very jerky. I had to go through and write my own stuff that would attempt to figure out the velocity and direction it was likely to take and then adjust this as new positions would come in (which is what I thought Pun was supposed to do for me) It's an issue if you are an indie developer who can't afford to pay for stuff - Pun gives you 4 players per lobby for free which is ok, but I'll certainly be taking a look at these other options and see if somethings better. Ultimately I think it would be useful to get rid of the central servers and have peer-to-peer play... but you still need a server of some sort to handle the lobby/matchmaking stuff
Scrolling through the comments I didn't expect to see one of my favourite drone TH-camrs in my other hobby!
@@RobLang I'm often checking out Game Dev channels - especially if it's something I can put to use. improving the networking aspect of my sim is something I'd like to sort out
@CurryKitten I am currently developing a VR game where a fast moving ball needs to be synced for multiple players every second. Syncing with PUN won't work for this. I had to write my own sync for the ball. The only way it worked is for each instance to have its local ball and then sync based on velocity at each hit and network ping times. But PUN works fine for slower moving objects in the game.
@@CurryKitten I just subbed to your channel thanks to this comment, great stuff there!
@@hawkgamedev Thanks :) There's not too much dev stuff on my channel (perhaps I'll have another channel for that at some point) but I hope you enjoy what's there !
I worked with mirror and photon for some prototyping, but now I make my own system.
My game is turn based so the traffic is low and it doesn't matter if it's slow. All the paid options charge too much for the things I just need. So SignalR it is for me.
Simplest way would probably be to abuse such messaging services like your sponsor and send json data instead of chat messages xD
The biggest problem is more to get people playing the game, so the servers are not empty. If a games is empty, even new player would quickly drop out, as there is noone to play with. Games that also support asynchronous play, or offline play have an advantage here.
Hey man, I started learning Unity and stuff, and in the future, I'm planning to build quite a fast-paced multiplayer soccer game that would include chat, story mode too etc.
Which networking system you would recommend to me?
Im using TNet3. Would have like to see it in the list.
Unfortunately, the video focuses, for the most part, on performance options instead of 'the best option for your particular project'. What would be the easiest and fast option to implement for a turn-based game that really doesn't need network performance? Is Fish-NET easier than Mirror?
Mirror is as simple as adding a prefab network manager to your scene and changing the extension of code that needs to be synced via a server. It has components to sync rigidbodies, transforms, child transforms, and more. It's really easy to setup and get working in like an hour compared to having to setup EVERYTHING on your own for MLAPI based multiplayer setups (which I believe photon is)
@@NeonTheCoder I see. I'm not sure how it works with turn based games where you have several controllable units per player. It's not a prefab per say but several. It also seems that sifh-net follows that same path.
I vouched for Fishnet for a while now, been using it some projects, and it didn't grow as fast as I needed personally, after months of using it, I realised that Mirror had everything I needed for a fast-paced and that client prediction wasn't hard to implement in Mirror. The support is also much more helpful. My personnal experience with FirstGearGame were strange, pretty much narrowed down to talking about how much he dislikes Vis2k over some random drama. The project is great, just not "enough" for my games just yet.
What was lacking with Fishnet? It's advertised as being faster than Mirror with more features (like prediction). I'm trying to decide between the two, but I want something that's easily capable of authoritative logic
what about unity's transport layer? I use it exclusively. It's the easiest to understand as it just sends bytes over. The work is a bit much but you have the finest level of control. Nobody seems to know it?
Normcore is definitely a great option if you're doing VR, and also easy to use for non-vr.
could you give some more feedback since the normcore itself is not widely used and it looks nice from what i checked their docs. Im trying to build a VR game either probably in Normcore or FIshnet, any suggestions? :)
Love ya, Love your show...
Started vr social app using pun2. Setup was easy and seems to work.
Have yet to stress test.
i slowly gained preference for dedicated servers instead of running BaaS mainly because for someone who is dealing with unity already its easier to jump to something written in c# best of all is you can run a full game in a server.. the only thing you lose though is multiple game engine support and baas dashboards like metrics logs admin page..BaaS like colyseus is good though or edgegap or nakama but very expessive.
i highly recommend photon pun for all beginners if you just want to deliver a product connecting multiplayer without caring much about baas or dedicated servers because photon pun .. but if you care about cheaters use dedicated networking like Fish-Net Smartfox Dark Rift 2 mirror
toggling between photon or a variant of fishnet or mirror is good way or even a baas but you have to keep in mind how much power you want vs willing to give up.
I believe smartfox is only for flash from what I remember. Nathan from DapperDino had great tutorials. Mirror was my main choice for predominantly that reason. Tutorials make a world of difference. I'm sure there is a case to be made for software that was great, but never made it because of a lack of use documentation. Mirror has a limit to the number of connections, and then charge beyond that number. I'm a noob to a lot of this stuff, but I hear Photon is pretty good. It's just like a lot of what's happening right now where your tools snowball in cost, and so you default to all of the cheapest options available. Some tools are monthly. It feels as though the industry is trying to find an economic balance. My thought is make it free until it makes money. The more people using the tool you have the more companies will use your tool.
SmartFox does everything, no longer Flash.
Hey for the people watching that nowadays, photon pun is free up to 20players per server so to start i would really recommand this option.
I chose to roll my own, simply because I started making my game way before I even settled on Unity for the client.
It has been quite a lot of work for sure - and I probably wouldn't recommend going that route for someone wanting to make a game relatively fast, but today I'm happy I did so because I don't need to use Unity on the server.
Question, I need to learn everything I can about using a Photon Server (currently experienced with C# and Unity). I've looked on Udemy etc. and TH-cam and haven't found much. I saw one Udemy course
Thanks very much!
i've only used photon, and only once. it did have some issues but it was a very basic project and i didn't even bother searching
We have developed soccer game. Now we want to implement multiplayer. Which one do you suggest?
I just started learning networking a bit and I've started with Mirror since that's the one I found tutorials for.
Dark Rift 2 has been recommended to me on Discord, but I don't know any specific pros or cons.
I also use Mirror, lots of tutorials, and there exists a book about building MMO using it!
I personally recommend Photon because its easy to understand system and implementation of code is easy too.
Hello. If I want to create a videogame similar to chess but for 4 players. What do you recommend me?
Thanks for talking about these topics.
I'm a complete noob when it comes to networking and multiplayer games in unity, but I tried out Photon a while back, and it seemed alright
Fish-net for the win !
So I'm working on a competitive physics game with force-based movement where the collision data between players is the primary factor in who wins. It all happens with extremely simple shapes in a box, but I'm having a terrible time getting the camera controls to network properly. I first attempted to do it with PUN, but their docs confused me horribly, so I removed all the PUN code and decided to switch to Mirror. I found the docs a lot more useful, but I still can't get the camera controls to network properly. I'm parenting the camera to the player object and trying to spawn it in with the player, but my movement controls are integrated with it and when it spawns in, I can look around, but it won't move with my player. Also, when other players are spawned in, their cameras don't seem to spawn at all. I'm hopelessly confused.
what about Normcore? anyone used it? any opinions on it?
Hi Jason, one of the developers of both Fusion and Quantum here. Thanks a lot for the kind words about our stuff.
We try to always keep an eye on feedback and informational videos like this of yours.
Anybody who is interested can drop a question bellow here. I’ll try my best to answer timely.
Hey Erick,
Long time PUN user (Both 2D and 3D)
I noticed that PUN was horrific for 2D Platformering Physics and player synchronization and was curious if Fusion would be a significant step up? Also, what is the learning curve going from PUN 2 -> Fusion, as it feels a bit daunting having to re-learn the wheel. I look forward to your feedback :)
@@reinhardtweyers9720 hi. Fusion has nothing to do with the way PUN works. It's a discrete ticks-based architecture that is designed for these games where accuracy is paramount.
We recently released a sample called Razor Madness that loosely inspired by super meat boy vibes/mechanics. It should give you an idea of how to do 2D platforming with its APIs.
@@erickpassos thanks for the input. Will have a look into it 🙂
Is there any good tutorial for Quantum. There is nothing available on website.