Photon Cloud persistence and security question

Options
wgrace
edited March 2013 in Photon Server
I've been reading about the differences between Photon Cloud and Photon Server, and deciding which to use for me has basically boiled down to 2 questions:


1.) I read that the vast majority of content and game logic while using photon cloud is "client based" which, unless I'm mistaken (totally possible) would mean that any application/game running on the Photon Cloud should be relatively easy to "hack". Client sided game information is made available and manipulable through malicious means like using cheat engine/hex editors/etc. Without hosting player-character and other important information on a server database won't this make it far too easy for people to manipulate data as opposed to the self-hosted Photon Server?

2.) Is it possible to have a "persistent world" model using the Photon Cloud, or at the very least simulate a persistent world, or is the lobby screen/room creation/match-making behavior completely unavoidable? Allow me to explain what I mean by simulating a persistent world:
||||
-Have a log-in screen to check for account validity
-Instead of having the player create or join a room manually, the player is automatically placed into a room upon connecting, without ever seeing a lobby screen (to simulate connecting to a persistent world)
-There is only ever 1 room created, or maybe 2 once a cap is reached, which all players are filtered into upon connecting (if nobody is connected, the first person to join unknowingly causes this room to be created, and then is put into it, at which point any further log-ins are filtered in)


My reason for this curiosity is that I am creating a multi-player RPG, small scale (think like a baby version of Everquest, emphasis on baby lol) - and room creating/match-making isn't really appropriate for such a game, it should be a persistent world, and two fundamental problems arise, if i go for security by hosting most information server-side, I lose persistence, because I simply cannot keep a self-hosted server up all the time. If I go for persistence with the cloud, I (potentially) lose security by forcing most information and game logic to be handled client-side. A dilemma.




Apologies for the wordiness.
Responses appreciated.

Comments

  • dreamora
    Options
    Photon Cloud has no persistence. When the last user left the room, it will be cleaned along all its data (all player properties and room properties are stored on the Photon server and 'persistent' as well as independent of the clients. This also holds for buffered RPCs in case of Photon Unity Networking).

    If you want true persistence and the cloud, you would need to add something for this purpose. The two widest used and simplest additions here are the Roar Engine (offers a truckload of additional stuff including store features to sell IAP / virtual goods etc) and Moai which is a webservice++ with persistence, mobile notifications and lua based server side for request based interaction.

    But you can naturally also host own 'dedicated server clients' which keep rooms alive, act as controlling client and are hosted in an own backend of your choice where they facilitate database connectionss and alike.


    For the purpose of your game, I think something along the second model with dedicated simulation servers seems to be the best approach in case you have 'critical' data you need to be able to trust. If thats not the case, if its more like Diablo and alike, I would host an own Photon Server (LiteRoom or LoadBalancing based) and expand it to do the required lighter, non-simulation verification of player actions directly.
  • wgrace
    Options
    dreamora wrote:
    Photon Cloud has no persistence. When the last user left the room, it will be cleaned along all its data (all player properties and room properties are stored on the Photon server and 'persistent' as well as independent of the clients. This also holds for buffered RPCs in case of Photon Unity Networking).

    If you want true persistence and the cloud, you would need to add something for this purpose. The two widest used and simplest additions here are the Roar Engine (offers a truckload of additional stuff including store features to sell IAP / virtual goods etc) and Moai which is a webservice++ with persistence, mobile notifications and lua based server side for request based interaction.

    But you can naturally also host own 'dedicated server clients' which keep rooms alive, act as controlling client and are hosted in an own backend of your choice where they facilitate database connectionss and alike.


    For the purpose of your game, I think something along the second model with dedicated simulation servers seems to be the best approach in case you have 'critical' data you need to be able to trust. If thats not the case, if its more like Diablo and alike, I would host an own Photon Server (LiteRoom or LoadBalancing based) and expand it to do the required lighter, non-simulation verification of player actions directly.

    I'm looking for "real" persistence, I don't want the worlds values to all reset back to starting when the last person logs out. Everything should stay persistent.

    BTW - thank you for all the information. Roar engine seems interesting.. Looks like it is more used for less serious stuff like facebook games though, still researching if its viable to make a more serious in-depth title using its SDK.
  • dreamora
    Options
    Serious stuff is a matter of definition I think.
    Facebook games normally generate more load on the hardware, user interest and revenue than realtime MMOs. From the later only 10% are ever released and only 1 out of 1000 started MMO projects ever breaks even entering the profit area.
    So I wouldn't consider a FB game as not as serious. They are just a whole different breed of game with different targets and requirements.

    That being said: if Roar / Moai are options heavily depends on what you wanted to do.
    If you want to realtime serialize the world, they won't do it, then you will need a db cluster along your zone cluster cluster within the same network environment to handle it scalable and performant.
    In such a case going with Photon MMO and/or Photon LoadBalancing would be the way to go out of my view.