Antriel

Members
  • Content Count

    211
  • Joined

  • Last visited

About Antriel

  • Rank
    Advanced Member

Contact Methods

  • Website URL
    https://antriel.com
  • Twitter
    PeterAchberger

Profile Information

  • Gender
    Male
  • Location
    Slovakia/Czechia

Recent Profile Visitors

2,626 profile views
  1. Antriel

    How much faster is phaser3?

    They get rendered, although there is a way to cull them if you want (not always faster though, as it needs to figure out which are in bounds, but you can always make your own culling that would be faster if possible). No idea about fillrate of off-screen stuff. They do get send to GPU for rendering, but the actual fragments won't get rendered if they are outside, so I would reckon it won't affect fillrate. But I'm just guessing.
  2. Antriel

    OkijinGames Visual Fx

    Might be best to ask the man himself, pinging @OkijinGames. He did write this about it though:
  3. Antriel

    How much faster is phaser3?

    On WebGL, unless the engine does something really silly, it mostly comes down to fillrate (amount of pixels you push), and amount of data the CPU needs to prepare. That depends on the rendering pipeline. Usually it's much more worth it to send a lot of data, so it is flexible. The synthetic benchmarks that just try to spawn as much as possible don't really tell much about real-world performance. In either case, here's example from phaser that uses special object optimized for performance (doesn't send as much data to the gpu, but can't rotate/scale the objects). For me it doesn't slow down at all at 20k. http://labs.phaser.io/view.html?src=src\game objects\blitter\benchmark test 3.js I don't have experience with pixi, but knowing how Phaser 3 works, I would be quite surprised if pixi was substantially faster in anything. I would expect them to be similar, or pixi slightly worse. Of course Phaser being a whole game framework, there is some extra overhead, but definitely nothing that could cause problems.
  4. Antriel

    Phaser 3 - synchronisation with server

    Personally I handle logic separate from Phaser, using it just for the rendering. What I use is a combination of update and my own setTimeout to move the game logic forward and send inputs to the server. Basically this, except I have 2 entry points (both RAF, i.e. Phaser's update, and my own timer). On top of that is interpolation of other entities, prediction of player's entity and syncing time with the server.
  5. It's a way to have refresh rate of something locked to signals from something else. I use it to sync clients time with server network tick.
  6. That stackexchange answer is quite close to phase-locked loop I describe here: https://antriel.com/post/online-platformer-5/.
  7. Antriel

    Objects might fall through despite of collision

    You can increase the `fps` parameter of Arcade in game config.
  8. Antriel

    So, what's the deal with sound?

    See how phaser does it: Checking on init: https://github.com/photonstorm/phaser/blob/476a31093ad5b1d723392720401be83541878b04/src/sound/webaudio/WebAudioSoundManager.js#L76 And subsequent waiting for input to unlock: https://github.com/photonstorm/phaser/blob/476a31093ad5b1d723392720401be83541878b04/src/sound/webaudio/WebAudioSoundManager.js#L143
  9. Antriel

    So, what's the deal with sound?

    https://developers.google.com/web/updates/2017/09/autoplay-policy-changes Basically you need to start/unlock the audio on user input first, then it works at any time. I handle that by making user start the game via click after the preloader.
  10. 50 Hz is normal. Try doing the setInterval that just logs the time too, with something like 10 ms interval. If that fires around the problematic message, with +-10ms interval, then event loop isn't too busy. Also, is there a visible missing date? Like before there's delta of 0, is there delta of 100? If not then it really feels like the message callback is ran more than it should (which you can determine by the contents of the message).
  11. Then it's either what @mattstyles said, or your event loop is too busy and can't process the message fast enough – that might show in profiling. I would try to simply log `Date.now()` on arrival of messages and maybe also run another timeout with much smaller timestep than what server sends, logging the time too, to visualize whether event loop is free or not.
  12. The packet drops along the way, you can't test for that like that. You could try doing it on a good LAN connection (that you tested) or a localhost loopback, which shouldn't drop packets at all.
  13. Unfortunately, not with TCP. And the only way to do UDP on the web is via WebRTC, which is aimed at media and p2p networking, so achieving client-server architecture there is difficult.
  14. Websockets use TCP under the hood. If a packet drops along the way, TCP will buffer any additional packets until it also receives the one it lost. After it does, it will supply everything it has, which can cause what you see. There is nothing you can do to prevent that apart from using multiple websocket connections and implementing something like udp over tcp.
  15. Antriel

    Is there a problem with phaser time

    Yeah. Basically if you needed de/acceleration, you would adjust speed by using the `dt`. Which won't work well unless you use fixed delta time. Which is what the articles I linked talk about.