DuckfaceNinja's Forum Posts

  • Hmm, I'm interested with shinkan method of hiding the url, it came to me that why not use MP plugin to deliver the url string? This can be single flow process like below:

    1)Peer: connect to host

    2)Peer: on joined room, send message <browser.URL>

    3)Host: on peer message, compare message with whitelist array, if true, send some screwed message.

    4)Peer: on message, load the message into array, then compare with browser.URL

    5) If equal, disconnect from signal, then start game.

    Step 3&4 is redundant check. I think it would be hard for the thief to fabricate "send message", there's probably loophole here, but for me it's an interesting idea. The drawback would be having an always online host to enable the checking. What do you guys think?

    I like the "flood with ads" idea!

  • I would imagine you just have to sync every object in the container (and since not every object in a container share the same X and Y coordinates, as some may be just static, syncying them by default would be unessecary)

    Actually only one object is required to be sync in the container, for other object in the container, they would have to be positioned and pinned on peer side upon creation, since they are spawned at default (-1000,-1000). Syncing all objects would kill the bandwidth though, it's unnecessary when they already have the coordinate reference from the synced object. This would apply to animation too.

  • Because I'm working in my game and i don't want anything missing from it if i uninstall C2.

    That is very unlikely to happen. Even if you installed 3rd party plugin it will still be there once you install the new release.

  • This sounds incredibly unrealistic to me. I run web servers that get thousands and thousands of uniques a day, and they hum along fine on a single mid grade server. If you needed 10 dedicated servers for 100+ players MMOs would not be technically or financially feasible. The some of the higher traffic websites in the world typically operate on fewer than a handful of servers.

    I think he meant 10 separate session of chrome (10 tabs) as host, if we're discussing in the context of C2 MP plugin.

    Changing between rooms took 1-3 seconds from my tests, I think this is somehow acceptable for a player moving from a zone to another zone.

    It doesn't mean it's not doable (I'm sure DuckfaceNinja has some clever tricks to share ), it means it'll be counter-productive. You still have the option of web sockets. But when talking "easy" C2 multiplayer, think "Risk of Rain", not "Realm of the Mad God", for example.

    It's not a clever trick at all, but it is exactly as you said, it's counter productive. For me, I make decision to go down on that path simply because I want to reduce as much tools as possible to be able to create a multiplayer game.

    Note on, creating a different project for the host, this is a very difficult to do. Imagine this, I'm capable of making a multiplayer bomberman game, fully functioning in just 2 days (with placeholder sprite of course). The amount of time I'm building/tweaking my host project, I started it in mid july, and it still ongoing now, this only involves logic and data management, I haven't even started on any visual on client. That is the direct comparison of the difficulty level, it just that much.

  • Do you think i can make the server outside of the actual game? A different project

    Yep, I'm actually doing it.

    Speaking of my project, i don't think i'll have alot of problems with zones, i already planned it, there won't be that much zones

    You might want to consider sharding your host, depends on your game genre. Pokemonesque movement id fine, but for fast pace you'd want to run several zones/host instead.

  • > Is the input prediction error logged into the browser console?

    >

    No, because there is always input prediction error, it's just usually small enough to be unnoticeable. You can spot a serious input prediction error though by seeing if your player suddenly jumps somewhere else without you controlling it!

    [quote:2jxb63o5]Is this frame rate dependent and is it correct if I assume it fires every other tick? I wonder what will happen if one of the peer have a significantly slower device compared to others..

    It's intended to fire every other tick, but it is not framerate dependent (very few C2 features are). If your framerate drops to 30 it will send input every tick (which is the same frequency as every other tick at 60 FPS), and if it drops further below then input is simply sent less often. However the multiplayer engine is inherently designed to deal with missing data due to packet loss so this won't adversely affect the control, it will just make it a bit less accurate. The bigger problem is that the game is slow!

    Great! Thanks for the info!

  • Cool! I've done my part!

  • Right click in the "Choos a platform to export to" window.

    This was answered too many times already, try to search the forum.

  • One would *need* access to the API calls tied directly to a steam approved game / app to have a functioning plugin.

    I don't know what I'm about to ask but here goes nothing, will it be too much if we ask for a public access to the API calls for testing and play-around the plugin purposes. Is such a thing (can) even exist?

    It seem it would require a game to be greenlit to actually know whether the plugin is working, or is there any way that would tell me the plugin works?

  • Hi DuckfaceNinja,

    thanks for your fast reply!

    I can't get it to work the way I would like to though...

    Would you mind if I posted my project so you can take a look at it?

    Thanks again!

    Ruud.

    I don't have C2 in front of me now, but it is always better to post one anyway, others can take a look at it. The best capx will be a minimal and specific to your issue, don't post one with valuable assets though, or a complete game. (if the game has been coded significantly)

  • It's pretty minor though - even if an input prediction error occurs, it will be corrected a few moments later.

    Ah good to know this, so the conclusion is this will see some use for fast paced games like racing. That's why it is a bit difficult to make test case, simply because the error is quite unnoticeable visually. Is the input prediction error logged into the browser console? I don't remember seeing any error with regard to it.

    It fires 30 times a second to test the inputs, because that's how often messages are sent to the host (not 60, because that would use double bandwidth for little benefit). The frequency should not be important though. The trigger basically means "time to check what the inputs are, because it's about to be sent to the host".

    Is this frame rate dependent and is it correct if I assume it fires every other tick? I wonder what will happen if one of the peer have a significantly slower device compared to others..

  • BUMP

    Ashley

    is there a C2 native solution for back button support on mobile? This is the thread that comes up in google search results. Apologies if my google-fu has failed and it has been answered elsewhere.

    I never tried this but I just happen to use browser object now and saw home button and back button from browser object. Have you tried this?

  • DuckfaceNinja Ah I see, so there's no way to do it without the array then? ): Dang, alright. Thanks for all your help!!

    There's many way to do it actually, it just that I don't think any of other method is any easier, for example you can use instance variable and timer, but it's actually quite tricky and requires you to know much more. Well I'm mentioning array for the reason of it's usefulness in any situation. For me, array is the most robust functionality that let you to make almost anything, so learning array is much more future proof.

  • The Multiplayer manual entry accurately describes what 'Is ready for input' does. Is there something else about it you were wondering?

    For me I was wondering on what case should I be using it. I find myself never used this so far, I think this is of some use for network optimization but I can't really figure out how to fully exploit this.

    For me the confusion is whether this condition should be checked by host or by a peer? (should be under host group or peer group?) I guess local testing doesn't give me distinctive result that would give an intuitive idea on how to correctly utilize this.

    Another confusion is for the "on client update", this is a trigger, but what triggers it? Did the host send some signal to trigger this or, this is triggered on client side when the set client input is done? How frequent it triggers? Is this related to the excerpt "30 times on internet, 60 times in LAN"?

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • My question is - "is ready for input" OR "on client update" one of these is necessary to communicate

    Probably not, it's a bit unclear on when it is necessary, so test test and test, that's what I'll do.

    I am trying to work on this scenario --> As a peer/host , lets say I want to create a coin whenever I double click...And each coin could be moved around only by the peer who creates it....if you have some ideas then let me know

    The host will still be the one who creates it, but to differentiate it, you have to associate them with peer or, store the peerid into instance variable, and structure your conditions based on that to disallow selection from non-creator peer.