Ashley's Forum Posts

  • It does the overhead because you asked it to. By adding a 'for each' you are telling Construct 'repeat all the sub-events, conditions and actions for each instance'. So it does that for you. If you don't want it to do that for you, then don't use 'for each'.

    In general, computers can't guess what your intent is. You have to tell it what to do, and it will do what you tell it. This is true of all programming languages: if you write inefficient code, it probably won't guess that you could have used a more efficient algorithm and replace it for you, it will just do the best it can with the code you gave it. If you want it to do something more efficient, you have to write the code to tell the computer to do that instead.

  • The 'Physics catapult' example uses an impulse to catapult the player-controlled character. It looks like it works for me the same at 60 FPS and ~6000 FPS (100x faster). So it looks to me like impulses are working correctly even at substantially different framerates.

  • Running events has a small performance overhead for every event block, condition and action encountered. If you use 'For each' as in example 1, then it means the overhead for all the sub-events, conditions and actions is repeated for every instance. If you don't use 'For each' as in example 2, then the overhead is only done once.

    Sometimes however do you need 'For each' for correct results, such as if you increment a global variable in an action inside it, but my advice is not to use 'For each' unnecessarily. And as ever, if you want to know the real performance impact, measure it yourself.

  • It should just work. The default physics stepping mode is 'Framerate independent' which uses delta-time time steps. You don't need to change any physics forces or settings, the physics engine just uses time steps to match the framerate. I tried the 'Physics catapult' example and it works pretty much identically to me at both 60 FPS and in unlimited framerate mode running at something like 6000 FPS.

    You can set the physics stepping mode to 'Fixed', but then you get framerate dependence issues, i.e. it will go faster with a higher display refresh rate.

    The main downside with framerate independent physics is it's not a deterministic simulation. As delta-time is based on clock readings which have tiny amounts of variance, the simulation is not guaranteed to go exactly the same way every time. Different display refresh rates will also use a different time step and that can also introduce another source of non-determinism. You may have to design levels and such with some tolerance to allow for variance in the simulation.

  • Well now I'm curious, do the filenames need to be url-friendly?

    I'm not sure what you mean. Any filename you choose should load, within reason. If it works in preview mode, then the browser can load it.

  • The way subfolders works changed a while back. Check the 'Export file structure' property under 'Compatibility settings' in project properties. The new default is 'Folders', which means you must specify subfolder paths as well. For example if you have a sound in the path click/click1.webm, you must now use the string "click/click1.webm" when playing from a string. The old way ("flat" mode) allowed you to play from a string "click1.webm" even if it was in a subfolder.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Thanks for the feedback! I always thought there's a lot of software out there that's unnecessarily complicated, and we try to make Construct straightforward to use but flexible enough to be powerful.

    If you want to get back in to coding, perhaps try out JavaScript or TypeScript coding - I still think that's an underrated part of Construct, as you can use industry-standard languages and tooling and it integrates with event sheets too.

  • Will SDK V2 be a superset of SDK V1 (all SDK V1 functions + additional V2)

    Yes, the goal is for SDK v2 to be a superset of SDK v1 in terms of the officially documented and supported capabilities. We promise to ensure any addon using only the documented and supported features in the SDK v1 can be ported to SDK v2. In some cases we may change how the API works, so code is written differently rather than porting exactly the same set of methods, but in this case it will still be capable of the same feature the addon was previously using.

    Undocumented unsupported internal details of the engine are not supported, never were, and may be fully removed and become permanently inaccessible in SDK v2 as we always warned they might. This does not mean SDK v2 is not fully compatible with SDK v1 or that it is a subset: as is standard in the software industry the only concern is what happens with supported and documented APIs, and in that regard, SDK v2 will be a superset.

  • Construct will keep working offline so long as the browser keeps its data saved. It's not in Construct's control. Perhaps check your browser settings - if you have privacy settings or browser extensions that do something like clear storage (possibly referred to as "cookies", a term I think is a bit misleading) periodically, then that will possibly also clear the saved data for Construct to work offline.

  • I realise this thread is about 3 weeks old now, but I note that the methods of the YandexSDK class do not return anything, so they cannot be awaited. Async methods need to either return a Promise, or use the async keyword. Otherwise what happens is awaiting them will complete immediately, but the work is really still continuing in the background.

  • If you think you've run in to a problem with Construct please file an issue following all the guidelines, as otherwise it's generally impossible to help.

  • I will take a look at the integration points raised in skymen's thread. Perhaps we can do some work towards that over the next year.

    However making Construct in to a capable 3D engine is a huge amount of work - and likely endless work, regardless of whatever anyone claims about "we just need this one last thing". Providing APIs to integrate a 3D engine is also a lot of work, but probably not endless work, so while it seems a more feasible path, it's a lot of work either way. This will all take a lot of time and work no matter which path we choose, and that will require patience. Meanwhile there are other tools on the market that are already capable 3D engines, and if people really need a capable 3D engine to develop their game, then it may be wise to choose a different tool anyway, as it's not currently a goal of ours to develop Construct in to a fully capable 3D engine ourselves.

    Accessing the engine internals against our advice is not a sustainable or responsible way to develop software, no matter what results it can achieve. Our SDK documentation clearly stated that undocumented features may be removed at any time. Presumably you had a plan for what to do if the features you were using were removed, as the warning stated may happen. If the addon SDK v2 removes those features, then you should implement your plan for what to do in that case. If you didn't have a plan, or assumed it wouldn't happen, then what can I say? We tried to warn you about this very situation happening. In the other thread the gist of what I was saying is that we will make a best effort to try to make sure addons can be ported where feasible, but that is not a guarantee, and we reserve the right to say "sorry, we warned you". In this case it looks like there's a lot of work whichever way we go, we do not currently intend to make Construct in to a capable 3D engine ourselves, and integrating a separate 3D engine looks like it might be a better way forwards in the long term, and that will inform our priorities when considering what to add to the SDK v2.

  • You can set a timeline's result mode to either absolute or relative, so you can have it both ways.

  • These are requests for SDK V2 for existing C3 addons, so they can be compliant SDK V2 instead of using engine internals.

    This means you ignored a warning in the SDK documentation specifically saying you should not do that. We will make a best effort to support all existing SDK v1 addons with additions to SDK v2, where feasible and where in our judgement we deem it important, but we still reserve the right to say "sorry, you shouldn't have done that, and that won't be supported any more - we tried to warn you".

    I would still rather you tried to use the approach of importing a 3D engine than getting us to continue adding bits and pieces of a 3D engine to Construct's own renderer, which will never be enough.

  • Are you sure that there are not other approaches that could make an integrated 3D engine work, or new APIs that would smooth integration? It seems to me that it ought to be possible to basically import existing Construct objects in to a 3D engine, so you can get the same result as using a 3D layer in Construct, but with that layer rendered in a 3D engine. Therefore the workflow would be the same as it is with addons now - using the Layout View to compose levels, perhaps using placeholders for 3D models and so on - but the runtime renders using a 3D engine instead of Construct's engine. It may be complicated, but I suspect it is possible to do something like that. If it is not possible, I'd be interested to identify why and what APIs could potentially be added to solve those problems.

    3D engines are vast and complex pieces of software with a wide array of tools and features. I'm afraid I am skeptical that the requests for 3D features will ever be limited to just a last few. We've done a lot of 3D features now, often with people saying that's the last thing they need, but the requests keep coming. For example more recently, we did implement 3D direct rendering for effects. It was a pretty complicated change and resulted in a few difficult bugs along the way that needed to be figured out, including a regression that made its way to a stable release. But straight away, it turns out that's not enough and there are more features necessary. I'm afraid I am of the view that even if we did what you ask, people would go a little bit further, get stuck again, and then file a feature request saying "the last thing I need is XYZ..."; then if we did that, people would go a little bit further, get stuck again, file another request... and on and on, until we've reimplemented a full 3D engine. We've already gone a fair way down that path and I am getting increasingly reluctant to go further down it. This is why I am instead trying to explore alternative options: if you integrate a full 3D engine, you get all those features you'd ever have requested all out of the box. Then instead you work on ways to improve integration, rather than reinventing a full 3D engine in Construct itself.