Ashley's Forum Posts

  • This particular issue is a bug in Chrome on Android.

  • It looks like the Chrome origin trial for this experimental feature expired, and they haven't started a new one yet. This is why we warn that experimental features can change at any time!

  • This is not supported in Construct 2, but Construct 3 supports it with the solid collision filtering feature.

    The sprite angle is just Sprite.Orbit.Rotation + 90 when going clockwise, and Sprite.Orbit.Rotation - 90 when going counter-clockwise. It's as easy as that.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads

    I now got the code to work using set mirrored action -- however, quite like my earlier work around -- where I set a flipped frame, to rectify the flipped image -- the set mirrored is visually noticeable by making the sprite blink.

    That's just a normal consequence of the 'Set mirrored' action. Even if the behavior controlled that for you, it'd still work like that.

    'Set mirrored' is a shorthand for setting a negative width. The reason we don't make behaviors control the mirroring is it effectively means the behavior then controls the object size. This could then conflict with any other actions or behaviors that also aim to adjust the object size. So by leaving this to your event sheets, you remain in control of how the object size is managed.

    Behaviors are really just to simplify some basic calculations and gameplay mechanics. Most behaviors can be replicated in events, and if you need to customise them beyond what the behavior provides, you can and should use events instead. This is an intentional design decision of Construct.

  • Why are you asking for this? It should make no difference to the game if Construct uses a spritesheet or not, and using a spritesheet is more efficient.

  • It is not possible to run games on a file:/// scheme because modern browsers have such tight security restrictions for local files that it prevents the game loading.

    Just use the right exporter for the job. E.g. use the mobile app exporters for Android/iOS, the desktop exports to run locally on Windows/macOS, etc.

    The sprite is not mirrored if you use a negative rotation speed. It just uses the same angle as if it had a positive rotation speed.

    I believe this is by design as it matches other features in Construct, like the Platform behavior. If you intend to flip the direction of the sprite, you can use the 'Set mirrored' action. For example a typical platform game will use the 'Set mirrored' action as the player presses the left and right movement keys - the behavior does not control that for you.

  • Construct 2 never had any official 3D features. Perhaps you were talking about a third-party addon, which is the responsibility of the addon developer.

  • Transparency in 3D is extremely complicated. To get correct 3D rendering, you have to use a depth buffer, and depth buffers assume everything is opaque.

    It should work providing everything is drawn in back-to-front order, so adjusting Z order may make a difference in some cases. But this is a fundamental limitation of 3D rendering. This kind of thing is really just the tip of the iceberg of the incredible complexity that you get in to if you want to make a real 3D engine, which I'm keen not to go in to - the design of 3D shape is aimed at basically a 2D shape with depth, or "2.5D" as some people call it.

  • It's still possible to get seamlessly looping music by mixing the tail in to the start, which is what I assumed most people were doing. Sample-accurate playback works well for things like fast regular sounds, like in the built-in example for audio scheduling, which is what I had in mind when designing it.

    As I said it should be fine to put music tracks in the sounds folder. They are only loaded on startup if you enable "Preload sounds", so you can just turn that off, and use the other memory management features of the Audio plugin to control what's loaded and when.

  • Hierarchies should work with savegames. We've done the work to make sure relationships are preserved and I've fixed a couple of bugs relating to hierarchies and savegames in the past, so it should all be working. If it doesn't work in your case, please file an issue.

  • So can't you do it by splitting it up in to 3 tracks: intro (clean), intro (with tail), and the rest of the main track? I don't think that's a hack, that seems a pretty reasonable way to do it.

    I'm not sure if you realise, but scheduled audio does not actually usually work with audio categorised as music. These tracks are normally backed by <audio> elements, which don't support sample-accurate playback - only Web Audio buffers do, which is how audio categorised as sound is played.

    On some platforms for various reasons like compatibility we actually ignore the audio categorisation and play everything as sound anyway (i.e. via Web Audio buffers). I've never seen or heard of any particular negative consequence of doing that, so I think it's fine to do that in your case too if you need sample-accurate playback of music tracks, and audio categorised as sound can be played with unlimited overlap.

  • Again, hosting important project data in a file you AJAX request is not effective. If someone copies your entire project, they will also copy the files that are AJAX requested, and everything will still work.

    I'd advise just to use the domain lock approach described in the tutorial I linked to previously. If you use AJAX, it's entirely possible you could come up with a very complicated scheme that offers no protection against copying whatsoever.

  • The tutorial Publishing to the web has some advice under the heading "Domain lock".

    I personally wouldn't bother going much further than that, unless you're willing to enter an on-going DRM arms race.

    I wouldn't actually go for the approach of AJAX requesting a file - if you want it to work in preview, you have to configure the AJAX response to work cross-domain, and if it works for any domain, the protection is no longer effective.