Ashley's Forum Posts

  • — - if you're using the Tilemap object, you should definitely use the Tilemap.PositionToTileX/Y expressions instead.

  • That's odd, I've not noticed that effect before. I think Chrome is noticing there's an offline cache and the loading progress is reflecting the offline cache progress - but it's not programmed to do that... hmm...

  • I'd report it as an issue to WineBottler, they might be able to fix it.

  • I think you'll be able to keep using Chrome Frame, just it won't be updated any more. Alternatively a message on your site suggesting to switch to Firefox or Chrome is better than nothing. Given enough time, these browsers will disappear in to history eventually anyway...

  • You do not have permission to view this post

  • I'm having trouble understanding what the .capx is supposed to be doing. Can you create a minimal example? It looks like you should be able to demonstrate the problem with say two objects and two events.

  • Does it work for you on Windows 8.1? The crash logs are not useful; we need to be able to reproduce the problem or at least find out more detail about the exact error. I can export and run it on Windows 8.1 using VS2013 so it seems to work just fine.

  • Yeah, looks like it would be useful if it still worked when the bar is auto-hidden. Should be fixed in the next build.

  • Closing: chalk that one up to a driver bug (if tiled backgrounds display wrong, the same issue would cause that here as well - broken non-power-of-two texture support). Looks fine here as well.

  • Closing as not a bug: moving an object with mouse control conflicts with the 8 direction behavior. It is not designed to be used like that. Since there is no apparent reason to use the 8 direction behavior in this project, just remove it.

  • Why would you want to do this?

  • Also on reading "deWiTTERS Game Loop", I disagree with fairly significant parts of it: the article goes all the way through without even mentioning v-sync, which is pretty strange. The goal of good game engine should be to draw a new frame at every v-sync interval. Picking 25 and 50 as example framerates are just about the worst examples. Picking 60 still wouldn't be perfect, because it doesn't address the problem that v-sync intervals come at different rates on different devices, depending on the display refresh rate. So that's quite a significant problematic area that it does not attempt to address.

    Further the recommended solution proposes moving a fairly significant amount of logic in to the display function. In a good game engine, logic is a modifying operation and display is a read-only operation. The suggested solution sounds like it is really proposing three functions: logic, interpolate_logic, and display. So you call logic() at some fixed rate, then interpolate_logic() followed by display() at a higher rate.

    To me this seems a kind of crazy way to design a game engine; it's a pretty big architectural change, and makes the assumption that it's good for performance if interpolate_logic() is cheaper than logic(). In fact if the game is GPU-bottlenecked, there's no point calling interpolate_logic() - you may as well just call the full logic() since it runs in parallel to the GPU and won't impact performance. And I'm convinced that even the use of interpolate_logic() will cause game logic problems far more serious than vanishingly small rounding errors with variable framerates, which will not cause any problems in a well-designed game with reasonable tolerances.

    You can also simulate this method in the existing engine using techniques I've recommended previously: run expensive things like collision checks, for-each loops or nested loops on a timer, or at least every N ticks. Then you are effectively splitting your game logic in to expensive logic ticks (logic()) and cheap logic ticks (interpolate_logic()). This is just straightforwardly sensible game design and works well in a variable framerate engine as well, and can be done today without any extra engine options or rearchitecting.

    On the contrary I'm of the opinion that the variable rate logic/display cycle is the best solution: it v-syncs nicely at different refresh rates, handles mid-range framerates reasonably well, and is simple to design and reason about (since logic updates and display updates come at the same rate). I think the only disadvantage is really low framerates can teleport objects through collisions, but most systems aren't that slow, and there is a minimum framerate of 10 FPS in the Construct 2 engine.

  • I've tried skipping every other tick regardless of the timing, and it just halves the framerate regardless of what it is on Chrome for Android. So if it's running at 40 FPS it drops to 20 FPS instead of 30 FPS, and still looks pretty bad.

    I'm of the opinion that half framerate mode as implemented does not do anything useful, is too difficult to make work reliably in a browser-based engine, and I'd like to remove it in the next build.

    Changing how the engine runs ticks and render frames is another matter and could be considered separately. However again I'm not convinced there's much value there. You want to aim to render a frame every v-sync interval, which is usually 60 FPS. Dropping frames is not much help if the game is logic-bottlenecked (the GPU will do the heavy lifting, not the CPU). Running logic more often than rendering is wasteful of CPU time.

    AFAIK this is not a significant problem on desktops. I think it's a problem best solved by waiting. It's not much help in the short term, but in the long term I'm pretty sure everyone will have phones and tablets that can more or less match desktop performance.

  • You should report this as a bug in the Bugs following all the guidelines (e.g. attaching a .capx).

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads