Ghambit's Forum Posts

  • 5 posts
  • No such thing as spam here.

    My whole thing was just to try and come up with a way to not have much work making a non-networked game networked. Most of the code is obviously client-side, the server really only transmits short and simple chat strings periodically.

    That python library obviously has much more capability than a simple chat engine, but I dont really have enough knowledge to play with much more than chat. I'd LOVE to make a TBS game that had real-time animations (like when you pick up a piece to move it, everyone sees), but it's beyond me.

    Gotta start simple. Maybe I'll just do a proof of concept tutorial before I dive headfirst into my idea. And ideally, there would be a simple event-action plugin.

    Sounds like you're looking for something more "realtime" though yes? If turn-based, your sprite collisions and other graphic dependencies dont have anything to do with the server really.... that's all done client-side. All the server needs to know (done with tags) is stuff like:

    a) the player moved

    b) the player shot his gun

    c) the player dropped his bag

    ... and so on. What happens BECAUSE of this stuff (like collisions) is the client's responsibility.

    Btw, what's the 'S' plugin???

  • Inform, ADRIFT, TADS, StoryTron, etc.

    Dont bother using Construct for a Text adventure game. There are some REALLY nifty products out there that do way better.

  • Thanks for the suggestion.

    I'm leaning towards treating the entire game as one "Player" in and of itself and simply giving round/phase permissions based on turns and circumstance to whomever is logged into the game, no matter which format. In essence during the "movement" phase of someone's turn the game would lockout everyone but said Player and that player would only be able to do what's allowed during that phase. The only input to "Get" or be listened to is the final state of the game object relevant to that phase.

    When it goes networked it just sends/parses data from whatever (chat channel,etc.) and builds elements of the gamespace after every action. I SHOULD only have to inject 1 line of code per action in this case.... I think

    I'm still fuzzy on it but it's becoming clearer.

  • <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?

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • I'm new to Construct and I really like what I see here. My dilemma is that I'd like to try and use it to create a turn-based persistent multiplayer game. I can wrap my head around the design just fine, until I get to the networking portion.

    My question to whomever is listening is this. What's the BEST way to dev. a game which you fully intend to become multiplayer (down the road)? My thoughts are right now to Construct it in a "hot-seat" format and then worry about the networking down the line. (perhaps when there's a plugin)

    But, is this the best approach to take? Will I run into a lot of snags? I just would really like to get started on it at least... then if I'm satisfied with the design I'll incorporate maybe podsixnet, MySQL, html, etc.

    I guess what I'm asking is, is it necessary to work the game as net-able from the ground-up given Construct's abilities?

  • 5 posts