Episode 15: Networking in Unity

A TCP packet walks into a bar and says, “I want a beer.” The bartender responds, “You want a beer?” The TCP packet says, “Yes, I want a beer.”

Wow, just writing that 3-Way handshake joke hurt. In any case, you guessed it, today’s show is all about Networking in Unity3D. The gentlemen talk about several networking suites that developers have created for or modified to work with the Unity game engine. As usual, in addition to reviewing a handful of networking tools, the guys highlight some of their experiences and tips while developing networked games.

Thanks again for tuning in this week and we hope you enjoyed the show! Feel free to send any emails with comments, questions, and concerns about networking in Unity, to: thedebuglog@gmail.com.

Download the Episode Here

Game of the Week

Kingdom Rush – Ironhide Game Studio

TL;DL  — “Too long, didn’t listen”

  • Thank you all for the ratings and reviews on iTunes!
  • Definitions of Note:
    • TCP (Transmission Control Protocol) guarantees delivery data and also guarantees that packets will be delivered in the same order in which they were sent (Webopedia).
    • UDP (User/Universal Datagram Protocol) has no handshaking dialogues, and thus exposes the user’s program to any unreliability of the underlying network protocol. There is no guarantee of delivery, ordering, or duplicate protection (Wikipedia).
  • Networking Suites
    • TNet (Tasharen Networking)
      • Quick and easy to get up and running
      • Built for synching UnityEngine GameObjects
      • Sparse documentation
      • Available on the Unity Asset Store
        • $75
    • Photon Networking
      • Heavily supported with constant updates
      • Great documentation (both community and developer)
      • Built-in support for Lobby and LAN servers
      • Photon Pun offerings (cloud-based networking servers)
        • Free (up to 20 concurrent users)
        • Pun+ (up to 100 concurrent users)
          • $95
    • UNet (Unity Networking)
    • Smartfox
    • uLink (MuchDifferent)
      • Complete networking suite with backend
        • Store data using uGameDB
        • Runs on Riak DB (NoSQL)
          • Key-value stores
      • Excellent documentation and API references
  • Best Practices in Networking
    • Encapsulation of your data for what’s being networked
    • Create a generic structure of your data and data storage
      • In case your backend changes:
        • This is typical during development (i.e. storing data locally vs. on a database vs. cloud storage via web api calls)
    • Determine your network architecture before you get started
      • Is your game going to be Peer to Peer or Client/Server or will it simply use a RESTful interface to communicate data?
      • Perform “Deltas on your Data”
        • Only send the differences in the data.
      • Only send information to clients that need them (don’t always SEND TO ALL if it’s not necessary).
    • Read Devblogs!
  • Amazon re:Invent 2015 Conference
    • Watch talks/sessions on the Game track!

Take a second to support The Debug Log on Patreon!
Previous post

Episode 14: Adventures at Unite 2015

Next post

Episode 16: The 4 Keys 2 Fun with Nicole Lazzaro - Part 1


  1. October 23, 2015 at 1:25 pm — Reply

    Hello Obinna and crew!

    We at Gamedonia are launching a realtime engine for Unity very soon. Seeing you are experienced in networking, we’d love your input on our solution for multiplayer games. Please, tune in here.

    We’d really appreciate it.

    • October 23, 2015 at 3:01 pm — Reply

      Hey there! This solution seems super cool! I’m personally a fan of products out there that sort of “abstract away” the nuances of backend server management and game networking. For a large portion of games, tools like Gamedonia and SOOMLA can help alleviate the game development process for a lot of developers. Interested to see it in action and try it out! Cheers!

  2. May 19, 2017 at 10:48 pm — Reply

    Really good and helpful. Thank you very much and keep it up

Leave a reply

Your email address will not be published. Required fields are marked *