<forgive me, for I are newb>
In the case of a simple turn-based game. Is it not possible to parse data from a read-only chat channel? For instance, you could have your normal chat channel that people talk from and then another channel (read-only or invisible) devoted to the "system" or "combat," etc.
You have strings in these channels representing all relevant data (object positions, states, etc.). Each client subscribed to the channel would then be able to draw the gamespace dependent on said channel(s).
At each player's end of "turn" their channel(s) would update (pump) to the server, which would trigger everyone else's client to update... and on and on.
A smart cookie would make multiple channels devoted to certain objects. For instance you'd have one channel devoted to chargen, another to object location, another for combat, another for map states, etc. This way you're not parsing from one huge string every turn and only call on what's needed... as well, this allows for turns to be "interrupted" when viable per the game's rules ("attacks of opportunity", "assisted actions," "overwatches," and so on.) In this way you could moreso look at a turn as an "action." For instance, it's PlayerA's turn and he moves his character 5 spots, then the server pumps the object locations channel, clients update, events activate, etc. Then PlayerA fires his weapon and the cycle continues until he's taken all of his actions. Then his turn is over and the next Player goes through the same routine. In this way, other players can more adequately keep track of what's going on and you dont have to worry about any timing issues (e.g. if you were to do one global (pump) at every endTurn all the clients would simply "blink" and the other players would be like wtf? You'd also have to code each game element to sift through a long, complex chat string - which sux).
Periodically the server will autopump all channels to create a saveState in case of connectivity loss. This saveState would remain in the remote server and/or each client. This way, games that arent completed can be finished later. Since the channel data will be system tagged, upon restarting the game you can have the game only generate the most recent gamespace and ignore the rest.
And on and on and on.
Basically, this whole idea leverages this simple code:
connection.Send({?action?: ?action_name?, ?tag_name?: tagdata})
And then obviously the similar code from server to client.
Data is data... and in a TurnBased game we dont need to worry as much about floods and latency so why not just use the simple chat server as our window to multiplayer gaming?
I'm weak with Construct since I just started and my programming skills are sophomoric so I'm not entirely clear on how it'd effect the build, but the goal is definitely to make it as simple as possible. Ultimately I'd like to dev. the game for "Hot Seat" and be able to easily add network function with minimal code. I guess it'd be as simple as just adding connection.Send({?action?: ?action_name?, ?tag_name?: tagdata}) after each action. The game would be "globalized" so the server essentially wouldnt care (aside from chat) who did what, but clientside the game would lock you out from manipulating the gamespace if it wasnt your turn per the rules.
There's more to is obviously and I'm rambling so I'll stop here. Anyways, is this a doable plan?