jayderyu
Thanks very much for your comments - all very helpful and forward-looking!
* Photon server: after some initial work with Photon Server, I abandoned it in favour of Photon Cloud, mainly because of one of the factors that you identify: "The server side API is in C#". I thought it would just impose another limitation on C2 developers if they had to do server-side coding in another language. That's why my MultiPlayer behavior uses a NodeJS backend.
* Photon Cloud: the big downside here is that it doesn't allow authoritative server management, so although it takes away the burden of server-side coding, it means that C2 developers have to build game logic into the client - with all the gotchas that entails.
Wink
Thanks for your positive comments! While I agree that three minds working together can be better than one, I think that in this case, our approaches are along such different lines that. at this stage, it's probably better to pursue our individual lines of development (while definitely keeping a close eye on what each other is doing <img src="smileys/smiley2.gif" border="0" align="middle"> ).
For the record (as I've just said in another thread), my aim has been to produce plugins/behaviors (MultiPlayer and PhotonClient) that operate at a much higher level of abstraction than awarmenhoven is proposing, in order to make it as easy as possible for those who want to get into multiplayer gaming but have limited experience of low-level networking - or simply prefer to work with higher level operations. So, here's the very different basic set of ACEs in my C2 plugins/behaviors:
- Condition: New web player has joined
- Condition: Web player has been updated
- Condition: On collision with another player
- Condition: Web player/s to be created
- Condition: On my player moved
- Condition: Web player has left (use this to destroy the associated sprite)
- Condition: Game server is ready
- Action: Set the web player's ID (from the C2-allocated UID)
- Action: Initialise data of web player to create (from the server-allocated client ID and its current x/y coordinates)
- Expression: Get current X co-ordinate of web player
- Expression: Get current Y co-ordinate of web player
- Expression: Get web player's C2 UID
- Expression: Get number of web players to make (on joining game)
- Expression: Get the player's server-allocated UID
- Expression: Get the player's name
- Expression: Get the player's current score
- Expression: Get the player's current health