Best Photon product for an Open World MMO

pacepiro
pacepiro
edited December 2018 in Any Topic & Chat
TL;DR: If I don't want a room-based solution, which Photon product should I use? A customized Photon Cloud? Bolt? Quantum? Real time? Server? Is everything Unity compatible?

Hi everyone,
I've been searching a bit on the forum but I can't find any recent thread about this, I hope it is not a problem if I create another one describing my use-case. Also, I hope to be in the right section of the forum.

Basically we want to create a social VR solution for enterprises, think of it as a virtual fair.
The experience will be built with Unity and should run on Windows, MacOs, Android and iOS.
There should be one big lounge and all around several exhibitor booths. These spaces should be persistent and contain up to 1000 users. (users won't be complex or customized avatars, but just placeholders for users)
In the meantime other spaces should dynamically spawn, private lounges that should contain up to 50 users.

As far as I've read, Photon Cloud/PUN should do the job for the latter part given its room based structure. But what about the first part?
I think it could be seen as an open world game, and it should be even persistent (but about this I'm confident that Playfab will help). Could Photon Server be the best choice for this? Or maybe there is the possibility to work with PUN maybe expanding it or changing the room based approach?

We would also need text and voice chat and I've found dedicated Photon products about that (voice chat won't be always active but channels will be created on demand).

Does anyone have experience on this?
What would be the best path to follow as far as it concerns Photon solutions?
Where can I find the best documentation and tutorials for these use-cases?

Thank you very much!


Comments

  • PS: I'm writing on the behalf of a company. So cost is not a big problem. But time for development and complexity are.
  • Hi @pacepiro,

    the bad news first: none of the products will fit your requirements out of the box.
    The good news: you can use them anyway, but would have to do some extra work.

    Let's take a look at the client-side first. I guess this is relatively simple, because you can use any of the client-side products. In my opinion PUN 2 would be the best solution for it, because it comes with an included chat solution. It is also compatible with Photon Voice, which is a separate package. If you decide to use these solutions, it is enough to import the Photon Voice 2 package from the Asset Store, as it contains PUN 2, Chat and Voice.

    On the server-side things are more complicated. As a basis you can use the Photon Server, It is built to handle a lot of CCU, so it would fit your requirement. Important is, that you add server-side Network Culling / Interesting Management to optimize network messages. While the server can handle many simultaneous networking messages, a client probably can't, especially a mobile client. Because of this, you would have to decide on the server, which messages are forwarded to which client. As an example: you have three clients in your virtual world. Client A and B are standing next to each other, so they are interested in receiving updates from each other frequently. Client C is so far away from them, that they even can't see him. In this case they are not interested in what he is doing exactly, so they require updates less frequently (if at all). In your server-side custom logic you would have to deal with such a scenario. Another example is, if there are a lot of clients in the same space and each client wants to know that each other client is doing. In this case a solution might be, to reduce the send rate and stop updating clients too often.

    To add such custom server-side logic to the Photon Server, you would have two different possibilities. The first one is to use Plugins. When using Plugins, you can inject the required custom server-side logic into pre-defined hooks of the server's application. This should basically be enough, to add a proper Interest Management / Network Culling. The second option is probably the more advanced one: the Photon Server SDK allows, to implement the entire server application on your own. This way you would have much more control about the application's process, but it requires more work to implement it.
  • Thank you for the detailed answer @Christian_Simon! That's exactly what I was looking for.
    Besides the forum, what's the best way to get direct support from Photon while developing a custom server-side logic?
  • Besides the forum, what's the best way to get direct support from Photon while developing a custom server-side logic?


    Sending an email to developer@photonengine.com
  • JohnTube
    JohnTube ✭✭✭✭✭
    Hi @pacepiro,

    Thank you for choosing Photon!

    My colleague @Christian_Simon already gave a good answer to your questions.
    However, I want to point to my post here where I mention good examples of MMOs made with Photon.
  • pacepiro
    pacepiro
    edited January 2019
    @JohnTube @Christian_Simon thank you for your answers!
    In these days we are thinking very carefully about the path we need to follow.

    Just wondering if you can help us:
    • If we design our experience to be room based, let's say having no more than 100 users in the same room, not talking together at the same time, just very basic avatars translating around. Is this possibile with PUN? With the enterprise plan? So envisioning to have 1000 CCU with users divided by 100 per room?
    • About photon server, in order to build a very simple architecture, in which we don't need physics or complex interactions, do you think that a team of three unity developers can manage to build a custom server infrastructure in one month full time?
    • If it is not feasible, can you suggest where can we hire photon server experienced developers?
  • JohnTube
    JohnTube ✭✭✭✭✭
    Hi @pacepiro,

    It's not easy to answer those questions.
    Send an email to developer@photonengine.com and you will get a reply.