Networking Concepts

I recently wrote an article about my experiences with networking and I touch on some of the concepts involved with creating competitive FPS multiplayer games. Plus I discuss my experiences with different 3rd party solutions and why I ultimately settled to use bolt in the end.

Give it a read, if you're new to networking or looking for some info this may help you.

http://manmax.org/2016/03/networking-in-unity/

Comments

  • I already stumbled over your article and skimmed through it. Nice and really useful. Cool you're posting it in our forum. As you're around (maybe), I have a question for you (below) :)

    You seemed puzzled what the idea of PUN is. Here we go:
    PUN could actually be considered a "remake" of the older Unity Networking solution. That had a nice, simple design but many quirks and bugs. It didn't get any fixes, so PUN was there to the rescue. It might not be all-purpose but it's loved by lots of developers and suits many cases.


    We would love to have Interpolation and CLSP built-in to PUN but I'm not convinced that there is a simple solution which fits most (if not all) needs.
    My question:
    Is there a solution that would fit most genres? Racing games, FPS and twitchy arcade shooters (jump and gun)? I think the best solution depends quite a bit on the game itself, no?
  • Tobias said:


    You seemed puzzled what the idea of PUN is. Here we go:
    PUN could actually be considered a "remake" of the older Unity Networking solution. That had a nice, simple design but many quirks and bugs. It didn't get any fixes, so PUN was there to the rescue. It might not be all-purpose but it's loved by lots of developers and suits many cases.

    I think it was my lack of indepth experience with PUN that really drove my opinion on it, I have no doubts its useful for many people and I definitely viewed it as a great improvement compared to the legacy networking Unity provided.
    Tobias said:


    We would love to have Interpolation and CLSP built-in to PUN but I'm not convinced that there is a simple solution which fits most (if not all) needs.
    My question:
    Is there a solution that would fit most genres? Racing games, FPS and twitchy arcade shooters (jump and gun)? I think the best solution depends quite a bit on the game itself, no?

    That is very true. There is a multitude of different genres that require different things. I mainly highlighted FPS's in my article, but even so some of their core networking principles carry over. Most genres usually require the 3 important networking concepts: Smoothness, Replication and Authority. However because of technical limitations we're prevented from having a nice blanket solution. For example, racing games would most like use a rigidbody controller. As unity doesn't support physics rewinding we can't have CLSP + Authority so a trade-off has to be made. So you're right in the sense that it varies greatly on the game itself. You can even see this in bolt, while it gives us an amazing feature set it is sort of natively tailored towards more FPS type games so people working with other genres may have to find trade-offs.

    I guess the best we can do in the mean time is really lobby the team at Unity and hopefully they improve their physics situation, because that would unlock so much potential.
  • Yes, I guess it's about time for a physics engine refactoring, now that basically every other Unity subsystem got some polish.
    On the other hand, that's guaranteed to produce lots of headaches for developers switching over.

  • Oh for sure, I suppose that is the price of progress however. I remember awhile back (I think roughly around the release of Unity 4.x.x) Unity was in serious consideration of adopting the Bullet phys engine but then decided not too because of the compatibility issues and the devs having to switch from legacy to the new engine.