We are working on the new match system of LanistaWars before starting a campaign on Kickstarter so i' ve been digging uLink for a while to see if it' s a suitable solution for our networking need in the new version. We were using PUN(Photon Unity Networking) for 1.5 years. I wanted to compare PUN and uLink about the pros and cons.
Let me first explain LanistaWars for you to understand why we need networking.
LanistaWars is a browser based MMORPG game. Player is a Lanista who is the manager of a gladiator team. We have been working on the project for 1.5 years. The game has two main parts: Web and Unity3D.
On the web side player able to manage its team, make espionage on other players which includes spying, assasination or thievery. Player can own shops and generate income through them or attack others shops and take tribute. This part is a classical browser game enchanted with new HTML5, JS, WebGL features.
Why we use Unity3D is the tricky part of LanistaWars:). Player joins 3D PvP or coop combats in arenas with its gladiators after training and setting their equipments. The match side of the game has been developed with Unity3D.
After telling LanistaWars(i' ll be giving further information about the project on coming posts), let' s dive in to the PUN and uLink.
Let' s begin with Photon. We used PUN in our all previous versions of match. Our match system had a turn based gameplay at first. We decided to use PUN because it offers a cloud based solution which is good for those who doesn' t want to deal with low level server systems. You only have to code for connecting and use callbacks, RPCs and sync. It' s very scalable. One issue to keep in mind all the logic is on the client which makes hard if your game needs a mechanism similar to server. If you need ai or authorative computation(whatever it' s) cloud doesn' t offer you the solution. You have to implement the needed logic by your self. So we decided to use active user as authorative. Implementing this logic took much of our development time. Because there has to be done many handshaking similar processes to guarantee that the game is normally going on. Why we need an authorative mechanism? To calculate turn times or other game specific values. PUN has much worked for us for several iterations of the game.
The new match system, however, will be real time.
There will be ai which especially needs a server. So i decided to go into uLink to see if it has a better solution of server-client networking. As for now yes it' s a better solution for server-client networking in the aspect of development. uLink is completely built on Unity3D. You code in Unity3D using all the features of engine like physics, navmesh, etc. Although PUN' s cloud solution is very easy to implement, the Photon Unity Server can' t be implemented directly in Unity3D which means you have to implement physics for instance. uLink' s structure is very similar to Unity Network which is also true for Photon.
As a result i find uLink better for server-client network implementation. Photon, on the other hand, offers a cloud solution which is very usefull if it' s not problem to put game logic on client side and you have an open world where players can enter the game and exit whenevery they want like half-life for instance. On PUN players able to instantiate everything they need and all those instances get cleared when they disconnect.
Yes, now it' s time for implementation:) i' ll share my further experiences about uLink implementation.