Now tackling server side and move to MMO

vreference
edited August 2011 in Photon Server
So I've gotten pretty comfortable with LitePeer but I'm afraid it's really time to start writing some application specific operations and move to MMO. I should probably just try it but I thought I would ask, is there a reason why the MMO client has so much code bundled into a DLL? Is there a performance advantage to this or is it for organizational purposes? I really prefer just working in NotePad++ and it's nice to be able to make tiny changes and build in unity.

Also, if there is any kind of documentation for the MMO server or client I'd be interested - I haven't found it. Photon-DotNet-Client-Documentation_v6-4-0.pdf has been invaluable to me.

Comments

  • It's just in a dll so that the win forms client and unity can share the same code - you can change this of course.. You don't even have to use any of the client code, it's just a demo.
    Documentation should be in the doc folder of the server SDK and also at developer.exitgames.com.
  • I wonder, could anyone explain the "I" terminology? e.g., IMmoItem vs MmoItem, IPeer vs Peer

    Also, I feel like there is a lot of lower level stuff happening here that I can't look at which may be making it harder for me to follow what is actually occurring. For example: I'm guessing the server actually handles incoming connections and calls the appropriate application's "CreatePeer" method? Operations work in a similar manner I take it (by calling OnOperationRequest)?

    One last thing; Just wondering about the attribute that is set before an operation is actually handled?
    e.g., "[Operation(OperationCode = (byte)OperationCode.CreateWorld)]" Where is this going and what is it doing?
  • vreference wrote:
    I wonder, could anyone explain the "I" terminology? e.g., IMmoItem vs MmoItem, IPeer vs Peer
    I = Interface --> IMmoItem defines the Interface of MmoItem
    Interfaces make it easier to test the code because you can replace the actual implementation.
    vreference wrote:
    Also, I feel like there is a lot of lower level stuff happening here that I can't look at which may be making it harder for me to follow what is actually occurring. For example: I'm guessing the server actually handles incoming connections and calls the appropriate application's "CreatePeer" method? Operations work in a similar manner I take it (by calling OnOperationRequest)?
    Correct.
    vreference wrote:
    One last thing; Just wondering about the attribute that is set before an operation is actually handled?
    e.g., "[Operation(OperationCode = (byte)OperationCode.CreateWorld)]" Where is this going and what is it doing?
    This is used by the OperationDispatcher - it's just there to show that there is an alternative to the switch/case statement at OnOperationRequest. To use the OperationDispatcher compile with the conditional compilation symbol "OperationDispatcher" (if I remember correctly).
    The CJR gaming blog explains it pretty well: http://cjrgaming.com/photon_mmo_development