Antriel

Members
  • Content count

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

1,157 profile views
  1. atlas texture size vs dimensions

    The actual dimension matters. When the atlas is loaded it's decompressed from whatever format it is (png, jpeg) into pure bitmap (well, some gpus are able to use certain compressions natively, but let's not go there). That means your bitmap font will take exactly the same memory as any other atlas of the same dimensions. Afaik, the dimensions matter only for GPUs, i.e. webgl mode. They have a certain max size that they support, which makes sense if you think about how GPU works.
  2. Strategy MMO made with HTML5

    Just keep in mind that scaling by throwing better hardware at the problem isn't really scaling, and has its limits while being lot more costly than actual scaling (i.e. spreading the load on multiple boxes). Properly scaling multiplayer games is pretty big and complicated topic (and usually includes things like low latency fault tolerance and moving players between machines).
  3. Icesters Trouble

    We published this game over a year ago, but I entirely forgot about posting it here. It's a cute physics removal puzzler. Created using Flambe in Haxe with Nape physics. Art made using Flash. Save the Ice Cubes in this physics puzzler with unique twist. [puzzle, removal, physics]. Play Here Feel free to ask about anything about this game. The game is also available for non-exclusive licensing. Please contact me if you are interested.
  4. Game cycle, FPS and optomisation

    @Julz57 Yeah certainly as long as the CFF you mentioned is met, it will work (as in the 3d stereoscopic effect will be achieved). All I wanted to convey is that going above 60 FPS is certainly worthwhile and that modern VRs certainly don't work on 30 FPS. There's a difference (which you did explain even, so I'm sure you understand it better than me - again, just bluntly and succinctly repeating it for the sake of people who don't read with understanding), between 30 FPS low res stereoscopic 3d and VR headset that adjusts the reality based on the head movement. To reiterate, going above 60 FPS in general gaming is good. Stereoscopic 3d needs 60 fps per eye to look good and VR needs 90 fps per eye to not cause too much motion sickness.
  5. Game cycle, FPS and optomisation

    As far as what Phaser does -> it will try to use RAF, which will trigger as fast as hardware allows, basically syncing the update loop with display refresh rate (assuming atomic updates). This is usually 60 Hz, but it can really be anything, even 160 Hz or more in the future. We should also keep in mind that freesync, gsync and hdmi 2.1's VRR exist and can allow for intermediate values (e.g. relatively stable 75 Hz or 90 Hz or anything really). As for going over 60 FPS being pointless, I disagree. The difference in perceived smoothness between 60 and 120 FPS is extremely visible for majority of the population. There's plenty about this on the internet. About VR, the modern VR headsets use 90 Hz for both eyes. Older stereoscopic displays needed 120 Hz to achieve 60 Hz per eye. I'm not aware of any TVs actually using 30 Hz per eye. At the very least nvidia's 3d vision always required 120 Hz display. Web VR will once again use device's RAF and therefore run as fast as hardware allows (typically 60 Hz on mobiles and 90 Hz on desktop headsets for both eyes).
  6. For simple static site hosting, amazon web services will cost few cents (literally). It's not even that difficult to setup. And if you didn't use it so far, it comes with pretty big free limits for the first year, i.e. basically free.
  7. Web UDP - public demand

    This guy also tries to push something like that forward: https://gafferongames.com/post/why_cant_i_send_udp_packets_from_a_browser/
  8. Kikiki - HTML5 Multipayer Battle Arena

    Looks pretty good! I would add client side prediction (with reconciliation) for the movement. For shooting I would leave it without prediction, just add some animation so there's immediate feedback for the player.
  9. Remaining listeners after removing a group from stage

    Were they? IIRC they were not by default. Unless you used the optional parameter to set it as a weak listener and the object was gc-ed. Although in case of buttons, they indeed would not trigger (because they weren't in display list). The listeners would stay there though. Not sure how Phaser does it, but I expect the listeners to stay connected (although possibly not triggering as you can't really 'inputOver' them). Maybe `group.destroy()` will work? Not sure
  10. Multiplayer Platformer devlog

    Another devlog and it's a big one! Multiplayer Platformer Log #5 – Entity Interpolation Explaining entity interpolation. Implementing client-server synchronization using phase-locked loop. Talking about server update loops. And lot of shared code. Finally some worthwhile gif – moving around on a real server with ~200 ms ping:
  11. Multiplayer desync

    server.js line 55: You use for loop, but then use `inputs.shift()`, which manipulates the array in place. Maybe it's different in JS, but you probably want to use `while(inputs.length > 0)` instead of the for loop. Otherwise you might have issues once there's more than 1 input at a time. I strongly recommend to refactor the code, so that game logic that's shared between the client and the server is separate and shared. You should use the same code to apply update on a player instance on both. This removes code duplication and down the road will save you lot of headaches (that code duplication almost always causes). On the client side you cache all the inputs in `updates` array forever it seems. There's no reason to keep the confirmed inputs, they can be thrown away. I suggest using some big enough circular buffer instead. As for the actual trouble you have: I'm not 100% sure, at first I thought you weren't properly syncing the `lastBoost` variable, but that one is part of the inputs (which might not be a good idea either, see below), so it should work properly. The only thing I noticed is that it seems you apply the last input twice on the client. First you push it to the `updates` and then you iterate all updates and then once again apply this latest `data` update. Maybe this isn't the cause of the issue, but certainly something to check. I recommend inspecting values and trying to find out at what point the reconciliation result becomes different than expected. Regarding sending `lastBoost` and `time` as part of the input data to server: If the server is supposed to be authoritative, all that should be sent are the inputs and the server should simulate it all. Otherwise what stops me from saying my `lastBoost` time is constantly 0 even though I am boosting? Even the delta time shouldn't really be sent, although that is a design decision that might be needed if you need perfect reconciliation results. I do in my game and I went about this in a slightly different way (constant timestep). You can read about my approach on my blog: https://antriel.com/categories/multiplayer-platformer/. While it doesn't yet solve all the issues like time synchronization and entity interpolation, that article should come next week
  12. Does my game page scroll?

    It does scroll, it stops when the game is active. I would say that's expected behavior, but I suppose such script could fix that if desired. That script doesn't work though, because it's in the index of your game, which is inserted via `iframe`. The `window` is the iframe, not the whole page. You might be able to use `window.parent` but I think that won't work either unless the iframe is loaded from the same domain as the parent. Basically, the script needs to be included on the retroboltgames html file, not the game's index.html file.
  13. Graphics Darker While Moving

    I would say this is just a mix of optical illusion with display capabilities. That's why only small lines do it and why they need to be moving. Basically your eye sees black color then suddenly blue where the black was. Also the display has to change from black to blue. Other than having very good display and brain not susceptible to illusions, I doubt you can do anything about it.
  14. I never used phaser's box2d, but my guess is that `edgeChains` is a part of phaser's code, sort of extension of the pure box2d. For multiplayer you want to be absolutely sure the physics runs the same on both clients and the server, so my recommendation would be to use box2dweb or any other physics engine you want both on the client and the server. You might also be able to look at phaser's source and see how the `edgeChains` class works and replicate it yourself for the server.