Ashley
Addressing 2 first.
When the chat is handled for the room itself then yes this works 100% fine. There is no need to support any other connection for any game play elements dealing with the active dungeon, battlezone, pokertable....... however stepping outside of that particular small instanced game design the Plugin doesn't handle so well.
Let's examine a larger game world structure design. We/I/Someone creates a game where the player can actively travel from game room to game room. Each game room is a section of some larger world and each game room is Hosted by a browser tab on a game companies computer; not by an actual player. The player travels to each section of the world by reaching zone edges, portals and other such stuff. The game world isn't inhabited by just 4-10 friends, but is in inhabited by say 400+ players at one time.
Players can congregate into groups who travel zone to zone with each other.
Players can form friends and have friends lists.
Players can form into guilds.
Player Groups can go into instanced "dungeons" where the "dungeon" is hosted by a player.
Under the current structure that the Plugin provides in relation to this large persistent world of numerous players there are no some road blocks.
1. Players can only speak to other players in the current zone/room/layout.
2. Friends cannot Tell/Whisper any one on their friends in list outside of the current room because this requires a communication channel to another room.
3. Players cannot Guild chat with there guild because all communications can only be handled by the room.
In a more robust game structure design where gameplay is more than isolated instances the developer should have access to the communication tools requires.
Moving back to 1.
Why not use WebSockets?
It is true that WebSocket can be used for the chat, loot drops so on etc. However the big aspect of C2 having a full robust plugin and more importantly the WebRTC. Is that any browser can now act as a Listen server. This allows us to write server logic on the fantastic C2 language and IDE.
I'm snipping this line from a well written tutorial <img src="{SMILIES_PATH}/icon_e_smile.gif" alt=":)" title="Smile">
Developing multiplayer games is difficult, even though Construct 2's Multiplayer object takes care of many of the complexities for you. In the same way the events to every game are different, the way multiplayer messages and data are handled will depend on the type of game you are making. As a result the Multiplayer object has relatively abstract general-purpose features so you can make best use of it for your particular game.
[I highlighted the part that I believe as the most relevance, but almost the entire paragraph as relevance.]
What I am finding is that the Plugin as it is now isn't designed to be relatively abstract featured for best use of my particular game. In fact I'm coming head on to game play elements that go out side of this single design base; which is.
* Player Hosted room of real time game play where all data is handled by the Host.
Providing I stick to that model there is no problem in fact it's fantastic, but that's not the model I want to create a game in. I would like to leverage the Multiplayer Plugin and the C2 language to create a more robust game world. I could use WebSocket, but then that requires not using C2 toolkit. I can program in Java, C/C++, C#, JS, Lua.... but I don't want to I'm selfish. It seems the current design requires that the entire community abandon this plugin if we want any more game play than the definition above. This is unfortunate as using the C2 Plugin makes making multiplayer games so much easier. And that is the point of C2; to lower the bar to making games and not telling the developers to go and program in another traditional language.
I've seen some one put up a sample starter of a MP game a few days ago. Similar to other 2D MMO actions games. Very likely he's preparing for the MP plugin and doesn't want to use another language to code the other server aspects. Well the MP plugin as it won't let him. http://roracle.x10.mx/ Maybe I'm wrong about this game, but the reference of (off)line is indicative to me of a game that will go online. Also the game has numerous trappings of game play that belongs to a larger game world. The dev can still make the game providing the dev doesn't provide any game play features that requires interacting outside of the current layout-zone-room.
At this point I addressed why multiple rooms are wanted and why we want to use C2(I selfishly want to code in C2) and not go back to writing in another language. Let's go on to the last part.
In the world structure sample I previously wrote about started, I started with zones that were run by a company hosted on Tabs. I also mentioned that the "Dungeon"(actually for me it's derelict spaceships) is a Host instance. The Player Host will handle the room activity of the Dungeon. The reason for this is because I would like to take the opportunity to use WebRTC to handle one section of game play. monster handling, player movement. However during the course of play I want players to Whisper/Tell to there friends who are outside the room, I want players to chat with guild mates who are outside the room, and more importantly I don't want the player Host to handle anything in regards to random loot drops or persistent server character storage. that should be handled by server.
So yes. We could use WebSockets. I don't want to I admit to being partially selfish, but also the fact that other developers who want to design a more robust game will need more than the current Plugin provides. To me the idea of writing the the character server in another language doesn't leverage the benefit of a Plugin where the player can program a server. It comes down to that the Multiplayer Plugin can be a Host of a game, but can't be a server of information.
I'm willing to Concede to an extent. I'm willing to skip on the multi-room aspect in favour of just being able to have multiple instances of the plugin. I can work around not having multiple rooms. but I can't work around not having Multiple instances of the Plugin.
If I could at least have 2 MP Plugin at the same time; I could at least have
MP-RoomPlay uses Signalling server
MP-Character uses personal company server(that never goes through scirra signalling, direct connect)
MP-Play handles all the interaction with game play world. Moving in the layout, moving to another layout/room. getting MP-Play Id's and working with them in a game play fashion.
MP-Character handles on the non room play aspects
Chat outside of the room(tag: chat, message: [alias]-hey, want to travel together?)
Character persistent storage(tag: save, gear-1jvj93ng39 )
Loot drops( tag: loot, [npcid]-weapon11235, coin-12,.....)
Special randomized elements.
It would be great to have rooms, but it's not needed if we have multi instanced plugin. So please reconsider the idea of the Plugin only being singular global. Plus i would like attach instance variables to the plugin as an awesome extra added feature. How hard would it be to switch the plugin over? As I understand it's mostly just an option param in the SDK.