I just want to say I’ve been giving AppWarp a try (I gave up on Player.IO after not being able to get any support). And let me tell you…AppWarp support is topnotch! For the last four days or so I’ve been trying AppWarp. And although their Unity sample works beautifully, I couldn’t get it integrated into my game like I wanted to. So this whole period an engineer at AppWarp and I have been e-mailing back and forth trying to solve my problem (I couldn’t call from the AppWarp lib into a routine on my Unity main thread). Anyway AppWarp actually built a new DLL to solve my problem and make AppWarp easier for Unity developers to integrate.
I’m surprised that AppWarp doesn’t have a ‘presence’ here and that nobody has given them a try. AppWarp is really visible on FaceBook and Google+ communities. AppWarp has so many tutorials and just keep them coming. And they have a whole host of services that cover just about any aspect of online gaming.
AppWarp is serious about their services and I get the feeling that AppWarp will soon be a major player in online multiplayer gaming services.
But IMHO the most important aspect of any service is support. AppWarp sure is a winner in this area!
There certainly can be local lag on top of the network related ping/lag. Can’t say if you did something wrong (you never explained/showed something, afaik).
No matter what networking you use, try to limit what you send to a minimum to get optimal results. Maybe just send input instead of each unit’s current and target position. Smooth movements in-between frames, etc.
To reduce network lag, you can pick from several regional servers of the Photon Cloud.
We have completed testing of the private version shared with Dan last week. After some further improvements we have released the latest version to include the Update method which will invoke callbacks on Unity main thread.
Visit our AppWarp Unity Developer Wiki
I have implemented SmartFox Server 2X for my on-line cribbage game, and it works reliably and well for the actual game play. It uses an “authoritative server” approach where each player’s client code receives only the information about his own hand, and plays from the opposite player only during the coarse of the game. This is desirable as a cheating prevention tool. SmartFox uses Java for its server extension code, which I wrote to deal the hands, etc.
AppWarp is very attractive because it also provides the cloud server at a reasonable cost, and has the ability to extend the server side with user authentication and a persistent store, which I haven’t implemented yet on SmartFox.
I noticed that you added a provision for doing the game callbacks on the Unity main thread. SmartFox uses a FixedUpdate for this, does your code something similar? It is, of course, very important for preventing random crashes. How reliable is AppWarp?
I see from the previous poster that your support is very good so far. I am ready to jump in with both feet, and would appreciate any help and advice that you can give me.
AppWarp differs from SmartFox in that its a purely cloud based solution that doesn’t require you to do any hosting yourself or through a 3rd party. However AppWarp cloud doesn’t allow you to add authoritative server side code as of now. We do have a flexible custom room property api which allows you to set/get/update Room properties easily get notifications when they change.
Using our other product i.e. App42 cloud, you can add do things like user authentication and adding persistent storage to your game.
The AppWarp SDK requires you to call its Update method in your MonoBehavior class main Update loop. This way our AppWarp SDK message queue can pump events received from the network on the unity main thread.
SmartFoxServer 2X goes on the cloud as well, we have an almost one-click deployment through RightScale and we’re working with Jelastic who provides a terrific cloud service for Java based servers.
In particular with the latter we have recently run a small test with 25K CCU hitting one instance of the server. 8Mbs/ IN, 32Mb/s out, CPU usage < 15%
The vertical scalability is remarkable and the pricing model is super scalable because you can fine tune the resources in steps of 200Mhz and 128MB Ram.
The advantage with this approach is that you have a fully fledged game server at your disposal, where you can customize the security, performance, internal topology, words filtering, buddy lists, detailed monitoring, in-depth stats etc… and of course deploy your server side code.
At the end of the day it really depends on what you’re looking for and the requirements of the project.
The scalability is a difficult to issue to tackle. It heavily depends on what your application does and what is the expected traffic. The best way to predict how well (or bad) your server will work is working on a small prototype of your game and then stress test it with even a small amount of clients, say 1000. At this point you will be able to see how many resources your game takes and extrapolate what will happen with larger loads
Responsiveness depends a lot on where your servers/cloud is located in respect to your users. Most cloud services cover several regions of the world to provide shorter response times to Users. In other words a player from Germany will experience better response times if he’s connected to a close server (say Germany or neighbour country) than to a server in China or Japan.
Ease of implementation: today most solutions are pretty easy to use. They offer high level API, simple deployment and good documentation. The best suggestion is to spend a little bit of time on the internet checking the available solutions. One good parameter to watch for is richness of documentation and examples and quick support.
Another important thing is to check which solutions offer rich tools out of the box that will save you countless hours of development, again based on your requirements.
When you say cloud I guess you mean SaaS (Software as a Service): you do not want to run/operate servers I assume.
(TNET is no SaaS.)
Critical Mission SWAT is using Unity + Photon Cloud (US, EU, Japan).
Web, Android; iPhone, IPad, very high ratings. Give it a try to check the latency.
Or: http://beta.verdungame.com/ (Mike is killing it ;))
When it comes to price …
100 Concurrent Users (CCU) generate 2,000 messages per second 100CCU so generate 1,000,000,000 messages per month (what?!) >> Yes, really: http://bit.ly/msg-per-second
It is still $19 with Photon Cloud.
Be sure to pick a partner that has no message/month cap.
Interesting? So this is made with Photon Cloud? What does he do to prevent cheating? (only if you know)
I love Photon Cloud and we were using it for a project that will go into real production now.
But we are looking at uLink at the moment because we want to prevent cheating, and dont want to write
physics for the server side our self.
Of cause you can do a lot of checks using Photon Cloud to prevent cheating but still a bit limited. Or
Maybe i do not know enough of it.
Yeah we run verdun entirely on the PUN cloud. We don’t run a single server ourselves (we have only local accounts which will be synched via iCloud/Steam later).
About cheating: We only noticed CheatEngine cheating so far (speedhack), which was easily fixed. We mostly ignore cheating, but we fix it as soon as it becomes an issue… we have other prios right now. We do already have this planned thoUgh. We will expand our anti-cheating measurements later in development. We will not use any server side detection. Firstly, most cheating is stopped by simple checks on the client itself (mainly memory “hack”), secondly, we will have clients check eachother. This saves us the hassle (and extra costs!) of server side physics etc.
I feel as a Indie I can’t be bothered by having to focus too much dev time on the cheaters. I would rather come up with creative solutions like detecting cheaters and putting them in isolated cheater-only game rooms ;).
Thanks for the answer. Good to know. Also had the thoughts of letting the master client control everything such as health ammo and such, and use cross checking between clients for projectiles hitting etc. Speedhacking sould also be rather easy to check for yes.
We still have this as an option if uLink fails to meet our requirements, but atbe moment it seems like we can handle a nice amount of ccu without a too high server cost.