Photon + Rackspace Cloud ? Any good for me?

Options
garysimmons
edited November 2011 in DotNet
Hi Everyone,

I am a seasoned developer but very new to the multi-player arena and therefore wanted to ask for help with regards writing an application in a cloud that will be easily (prefer transparently) scalable. There many solutions and buzzwords surrounding this topic so It's hard at first to really nail down what I need to make my project work from a technology standpoint.

Basically the project I am working on is like a room based mmog with an authoritative server. That is to say the game universe is divided up into areas (rooms) that players can connect to by passing through wormholes/portals but players can only communicate and see players within the same room. I have been testing PlayerIO as a solution but its performance is not steady enough for a real time 3D game in my opinion. (The lag spikes seem really bad, often a big as 4 or 5 seconds and this happens many times in 1 minute).

I am thinking that Photon might be a solution for me (my clients are in unity) and wanted to ask if anyone here has had any experience hosting on the Rackpace cloud servers with Photon? If so..these are the questions I would love somebody to answer.

1. Is hosting in the Rackspace cloud good enough performance to host a real time multiplayer (twitch like) game?

2. How easy does Photon and/or Rackspace make scaling. I know in rackspace you can simply add more server instances to accommodate demand but does stuff have to be done on the Photon side of things to make sure that when new rooms are created they are done so on the least burdened servers? Or is this automatic whenever Photon runs in a cloud such as Rackspace?

3. Does photon/Rackspace sound like a good fit for this type of game?

Thanks for any advice you can give me

Comments

  • Tobias
    Options
    We use Rackspace at the moment for our Photon Cloud service.

    1. If the hosting is in the same region as your players, Rackspace has no lag penalty that I know of.
    2. We have a Loadbalancing application, which is actually two: A master which forwards players to gameservers and the gameserver itself. You configure the master and then each started instance connects to that to become available for players. The loadbalancing is done by the master and can be adjusted to your needs. It's there in source.
    3. Yes. We made sure Photon's rooms are self contained and run in their own threads (from a pool). They scale well and give you the ability to add your in-room logic easily.
  • Ho Tobias,

    Thanks for your response. I think I will give rackspace a try at least during development and see how I get on.

    With regards the LoadBalancing application framework.

    I have to admit that I feel like I am missing a bunch of information here. I usually don't have any trouble adopting new technologies and reading through the basics of operations, responses and events all seems simple enough. I follow along with tutorials on the site just fine and also have watched many videos about developing simple server/client code and that's no problem.

    Then I find myself thrown into 'lite' source code without any documentation? Am I missing something here? Perhaps it is that 'lite' is abstracting me from the details that's throwing me off here but there is quite a lot of source to wade through. In short, I can't really get my head around where to put MY code (for example, my constantly running game/physics loop). Is there some more in-depth documentation I am missing here? It seems using 'lite' to me bears very little resemblance code wise to any of the simpler tutorials.

    The same is true of the Load Balancing project! I downloaded Networking for Unity and that all seems delightfully easy but I once again loose the connection between photonViews (state sync) and how that information is now being delivered to my server in the way of requests/responses and events. When an object moved for example, what is the server receiving from the client in the way of notifications?

    I hope you can point me in the right direction as I am currently at the end of a few days of very frustrating code poking.:)

    AM I missing some reference material here?
  • Tobias
    Options
    We all agree that the documentation could be better.
    There is some in the downloaded server SDKs (see "doc" folder) and some additional info on our developer website: http://doc.exitgames.com.
    Aside from this, we try to keep the code simple enough to understand.

    Very high level:
    In general, the server will do work when operations are called. The main classes to implement that logic are either the Peer or the Room. Both handle incoming requests (as messages) and the code shows how to handle operations, send responses and events. Repeating tasks can be done by scheduled messages, which get done repeatedly.
    Operations are done this way: http://doc.exitgames.com/v3/liteandlite ... operations