Ashley's Recent Forum Activity

    • Post link icon

    Your tutorial has been deleted due to being abusive towards staff members. See the Forum & Community guidelines. This thread is now closed.

  • The addon does not run any code on startup that relies on anything C3 does if that makes you happier

    I'm afraid it does not. Any CSS style, DOM change, or event handler could cause problems. Already a constant support headache for us is browser extensions making unexpected changes to the editor and causing crashes and bugs, even when they only tweak the DOM or CSS styles. Presumably the developer thought "this is a small, safe change that won't break anything", but they were wrong. It looks like you have over 2000 lines of code making similar kinds of changes. We can use encapsulation in JavaScript now, but HTML and CSS still lack robust encapsulation. With browser extensions we simply must suffer the consequences, but ideally we would not have to suffer that with third-party addons.

    What would you even do

    Sandbox editor scripts in ShadowRealms, when browsers support that. If editor DOM modifications are used widely and cause compatibility disasters, which I suspect would happen as this is analogous to the SDKv1 situation, then you should expect to see an SDKv3 which does editor script sandboxing. So my advice is: do not do this or anything like this at all - find some other way to solve the problem that does not involve that. Please: take a step back, look at the ways the industry has come up with over decades to ensure reliable software development, look at everything we already just went through with SDKv2 which was just re-learning those same lessons - let's not risk anything that might repeat that. Unfortunately from the SDKv1 situation I'm aware that such warnings are not always heeded, and I fear we're going to end up suffering the consequences anyway. So I guess I should start planning for editor script sandboxing...

  • Does it work when uploading with the Steam Devkit client? Last I tried that was working fine. If the problem was with code on Construct's side, that wouldn't work, but it was working for me. If it works with the Steam Devkit client but doesn't work after a web upload to Steam, then that would suggest the problem is with the Steam web upload process. (My best guess would be it's still the file permissions getting reset.) So that would mean you either did something wrong modifying the zip, or Valve need to look in to it.

  • I don't know if you are aware of this but I recently implemented my own editor UI API to fix this exact problem you're mentionning:

    I'm afraid this makes me quite nervous. This is not something we officially support and the editor is not at all designed to accommodate this type of thing. It risks repeating the issues of SDK v1. If we change Construct and suddenly thousands of people's editors are crashing on startup because we accidentally broke your editor UI API - something I'd say is likely, because we don't support it, don't know what it does, we don't have an officially supported API for it and so we don't know how to not break it - then we face disaster, and everyone will be contacting our support, and blaming us for releasing a broken update. I think that outcome is ultimately inevitable and there is no acceptable way to properly support it for commercial software that is meant to work in the long term.

    Editors crashing on startup is a worst-case scenario and prevents users even being able to update or uninstall the addon causing it. That is a nightmare scenario worse than we faced with SDK v1. It is such a serious outcome that we may well take steps specifically to prevent it, much like moving to SDK v2.

  • I believe you need to set the NSLocationWhenInUseUsageDescription string in Xcode, and possibly some others depending on the type of location permission needed. You can add this in Xcode by editing Info.plist (which might appear as just "Info"), adding a row, and then for the key there should be a dropdown where you can select "Privacy - Location When In Use usage description". Then you can put your description as the value on the right. As I mentioned there's a few other strings under "Privacy - Location..." so you might want to review those as well.

  • That's why I've been thinking of this as a special/dedicated layer (like the HTML one) with restrictions that don't clash with the existing high-performance 2D/basic3D engine.

    I'm not sure that would work well in practice. Suppose someone wants to drop a 9-patch object or Text object on to a 3D layer powered by a third-party library like ThreeJS. That probably involves two sets of rendering code depending on what they are rendering in, which is a pain for maintenance. Alternatively you just give up and say it's not supported, but now you have zones with different feature sets that aren't compatible, and you can't do something like decide to make an existing 2D layer in to a 3D one.

    Users using this "beta" layer would understand that they are in a "third-party" territory (as with HTML layers).

    In my experience users do not understand such things. Instead - not unreasonably - they expect things in a commercial product that they paid for to just work.

    I think this type of approach would be better explored via third-party addons, so it's not in the core product and can more easily be treated as an "beta" type technology that we don't support. So perhaps that's another direction we could explore, via exposing APIs in the addon/scripting system.

  • Integrating an existing 3D engine like ThreeJS is not a straightforward choice and has some tricky trade-offs. For starters, we've already gone quite far down the road of having our own engine, and it's probably a major project to switch to another engine wholesale. Making a high-performance 2D engine also has specific requirements that 3D engines don't usually need or care about, so it may be that it cannot be done without a major performance degradation.

    Taking on board a third-party dependency for such an important component is also fairly risky in the long-term. The intentions of the ThreeJS maintainers may not align with our needs. This is illustrated by the fact a while back when putting together that 3D engine integration example, I submitted a code change for ThreeJS - but the ThreeJS maintainers rejected it. We could maintain our own fork, but long-term that can easily end up being a nightmare. So the end result is we just live without it. In the long term that means the limitations of ThreeJS become the limitations of Construct. It may mean there is really interesting stuff that is basically infeasible to do due to depending on a third-party library for that. It's the kind of thing that in the short term speeds you up, but in the long term can become a hindrance.

    I'd compare that to Construct's user interface: with Construct 2 we used a third-party library. It saved time, but frequently people would request things, or run in to bugs, that we could not do ourselves, and sometimes the library developers wouldn't do either. For Construct 3 we could have saved time and moved quicker if we used some other off-the-shelf UI library - but we actually spend considerable time and effort implementing our own UI library. Over the years we've been able to adapt it to specifically what Construct needs. In the end I think Construct is a much better product for it.

    Libraries like ThreeJS are open source though, so we are allowed to use bits of it, or copy-paste chunks of their own code in to ours as we see fit, providing we comply with the license requirements (which for the MIT license is basically just including their copyright notice). I suspect a hybrid approach like that might be the way to go. As the 3D engine example illustrates there are also already ways you can include third-party 3D engines wholesale, so that's something you can explore as well, and perhaps there are also ways we can tweak the engine to better support that.

  • Does it work if you disable WebGPU? If so it might be a graphics driver bug - check for updated drivers and install any available system software updates.

  • Without knowing more and relying only on guesswork, I'd speculate that this is a browser bug then - presumably the browser has got stuck since if Construct actually started loading and then encountered some kind of error, something should have been logged to the console.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Maybe it is worth considering to make the C3 editor extendable by 3rd party developers instead.

    The problem is, stated like this, and to do a good job of it, is an absolutely huge, open-ended project with some pretty nightmarish maintenance considerations. For example in my view to do this properly, we'd need to expose to addons the entire editor UI library, such as tree controls, list views, data tables etc. so editor addons can make use of the same look-and-feel of the rest of the editor and not have to reinvent the wheel for things like a custom editor window with a tree view in it. Every API that addons can use then obligates us to effectively support it forever to avoid breaking backwards compatibility - especially as breaking something that causes the editor to crash on startup has a far higher impact than something that crashes the runtime on startup. In the long-term that can then become a drag on our ability to upgrade the core editor features.

    We could bypass that by just giving addons a window to put any old HTML in, but then you likely end up with a bunch of ugly addons with janky looking UI. Implementing quality user interfaces is actually extremely difficult and a great deal of work, and I don't think it's realistic to expect addons to do that for each and every addon. There are also likely going to be complicated compatibility problems anyway - the editor is designed to support only the built-in UI, and is not designed to handle arbitrary HTML injected by addons. There may well be glitches and bugs that happen because an addon inserts some HTML or CSS that does not integrate with the editor. People then assume it's our responsibility to fix such things, which ends up being a nightmare. HTML and CSS also don't have much in the way of encapsulation - although it's better now than it was a few years ago - and so we risk ending up in an SDKv1 type situation with regular breakages as future Construct updates change things.

    Then if you want to go in to further specifics, like customizing the Layout View, integrating with the undo system, etc. then you open further cans of worms with compatibility, API design and so on.

    So on that basis I would say rather than making an editor system to allow others to implement a 3D editor view, it is actually significantly less work and much easier to support for us to just implement the 3D editor view ourselves.

    Other than that, a better approach is to figure out what the smallest possible set of editor features you'd need to have fairly good flexibility for some useful editor features, and request that. For example to address the specific problem of being able to import complex content to the editor, like Spriter animations, we built the Custom Importer API with methods like AddDragDropFileHandler (see the customImporterPlugin sample for a demo). It is far more feasible to support specific cases like that than go for a whole open-ended editor addon system.

  • You do not have permission to view this post

  • Just choose the Android or iOS export options. Cloud building the entire app is only supported for Android at the moment - with iOS you'll get an Xcode project that you need to build yourself.

Ashley's avatar

Ashley

Early Adopter

Member since 21 May, 2007

Twitter
Ashley has 1,788,611 followers

Connect with Ashley

Trophy Case

  • Jupiter Mission Supports Gordon's mission to Jupiter
  • Forum Contributor Made 100 posts in the forums
  • Forum Patron Made 500 posts in the forums
  • Forum Hero Made 1,000 posts in the forums
  • Forum Wizard Made 5,000 posts in the forums
  • Forum Unicorn Made 10,000 posts in the forums
  • Forum Mega Brain Made 20,000 posts in the forums
  • x126
    Coach One of your tutorials has over 1,000 readers
  • x74
    Educator One of your tutorials has over 10,000 readers
  • x5
    Teacher One of your tutorials has over 100,000 readers
  • Sensei One of your tutorials has over 1,000,000 readers
  • Regular Visitor Visited Construct.net 7 days in a row
  • Steady Visitor Visited Construct.net 30 days in a row
  • RTFM Read the fabulous manual
  • x43
    Great Comment One of your comments gets 3 upvotes
  • Email Verified

Progress

32/44
How to earn trophies

Blogs