Ashley's Forum Posts

  • I'll see if I can get some improvements in for the next beta.

  • Where are you downloading Ejecta from? I thought they already fixed it. Try the latest code: visit https://github.com/phoboslab/ejecta and click 'Download zip' on the right.

  • If you mean using 'dt' in the 'Every X seconds' condition, that is incorrect - don't do it!

  • kmsravindra - the client input state is the only low-latency way of telling the host what you are doing. So it sounds like you want to set the object's x and y position as the client input values. Then it will move on the host. The peer will see it with lag, so you can simply display it at the mouse position instead of syncing to hide the lag.

  • 'Physical memory used' is 7 GB? That's clearly a memory leak. Are you sure your project is not creating objects/particles infinitely? Can you reproduce the problem in a minimal new project?

  • Microsoft have created a site where you can vote for your most wanted Internet Explorer features. The IE team may use this feedback to consider which features to prioritise. I thought I'd point out features relevant to Construct 2 so you can add your votes if you want to see them supported.

    Note you get 25 votes per account and you can use 1, 2 or 3 votes on each item. So you can add extra weight to your most preferred features.

    My personal #1 request: Ogg Vorbis and Opus audio formats support - dual encoding is a big pain for everyone, and IE supporting Ogg Vorbis (or even Opus) would be a good step towards fixing that. Please add votes for this!

    Other features relevant to C2:

    Frequent updates development cycle

    WebRTC support (for multiplayer to work in IE)

    Web MIDI API (would enable a MIDI plugin in C2)

    a[download] attribute (so 'invoke download' can work in IE)

    Web Speech API (input) (for speech recognition to work in IE)

    Web Speech API (synthesis) (for speech synthesis to work in IE)

    Battery status API (so the Browser object's battery features work in IE)

    Vibration API (so the Browser object's 'Vibrate' action can work in IE - useful for physical feedback on mobile)

    WebGL 2.0 (enable some useful extra rendering features in WebGL mode)

    Note some features like the Web Audio API are already stated as 'In development' on status.modern.ie. There's no need to vote on things listed there as already in development, hopefully they will turn up soon anyway.

  • CocoonJS does not support memory management. This is partly why CocoonJS is no longer officially supported.

    Export to PhoneGap or Ejecta for lower memory use.

  • 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:bisniz60]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!

  • I don't know why people keep bumping this, the Browser object has had 'On back button pressed' for ages.

  • 1. Which method out of the below is preferred to propagate data from peer to host in multiplayer and in what conditions each of them is used ?

    A. Set Client input state "<variable>" to something and then use Multiplayer.PeerState (Associatedobject.peerid", "<variable>") sequence

    Use that for anything latency-sensitive, which is generally the buttons the peer is pressing, i.e. as the name suggests, input states.

    [quote:2rfc2qr0]B. Send message with peer data within the message

    Anything not latency sensitive, like chat messages.

    [quote:2rfc2qr0]C. Use Sync variable

    Not an option, because that *only* sends data from the host to the peer. 'Sync' never sends anything from the peer to the host.

    [quote:2rfc2qr0][re: is read for input] For me the confusion is whether this condition should be checked by host or by a peer?

    By the peer, because only peers send their input. The condition is very simple. Imagine setting a global variable to true when 'On client update' triggers. The condition just checks if the global has been set. If you allow the player to move before then, it will simply cause an input prediction error, because the host is not yet aware of your movement. It's pretty minor though - even if an input prediction error occurs, it will be corrected a few moments later.

    [quote:2rfc2qr0]Another confusion is for the "on client update", this is a trigger, but what triggers 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".

    • Post link icon

    Please only use English on the forum.

  • Making it built-in won't make it magically faster. It still has to do the same number of collision checks.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • The Multiplayer manual entry accurately describes what 'Is ready for input' does. Is there something else about it you were wondering?

  • In my British accent I say construct (does the underlining make sense? ), but obviously different people have different accents! There's not the one true way to speak...

  • What's wrong with using loops? Why do you need this? Is it worth the serious performance impact of making far more collision checks than otherwise?