GDevelop 5.6 Adds Real-Time 3D Editor

Not favoritedFavorited Favorited 5 favourites
From the Asset Store
Kids Game
$49 USD
New Sounds Added Update: 115 new sound effects added for no additional cost!
  • 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.

    RE: Editor tools

    I think this eventually deserves to be its own thread but Ashley 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:

    construct.net/en/make-games/addons/1534/editor-window-manager

    This addon can't be added to projects but exposes an editor SDK for any other addon to create and manage new editor windows. It handles its own thing on top of C3 and of course I had to handle minor quirks but I was able to handle most things just fine.

    This manages an extra layer above C3's UI and doesnt properly integrate with the Undo Redo system but at least this is completely off of your shoulders.

    I think it's best to focus on making better APIs that allow us to do real things in the editor rather than expose the UI system if that proves to be too painful.

    The ONLY thing that would be nice I suppose would be if we could get a proper URL for when I pop out the window for security things as browsers otherwise block some common actions, but it's not too bad.

    I used it in this other addon that lets users make custom tools using JS scripts directly from within the project files, and with a default minimalist UI component library

    construct.net/en/make-games/addons/1535/editor-tools

    And I used it in this other experiment I made that allows people to make themes directly from within the editor.

    construct.net/en/make-games/addons/1533/caw-theme-creator

    Check these out and let me know if you're ok with it.

    I tried my best to integrate best I could with the editor and the theme but its hard to do without messing with engine internals. Exposing info about the currently loaded theme, or having classes for external editor tools would be nice but not necessarily needed.

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

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

    Just take a look at the addon's code and let me know if something in it would cause an actual issue instead of reaching for the nuclear option.

    What would you even do, add Mutation observers and nuke the editor if you detect any unauthorised HTML? That would actually cause the editor crashout you're talking about rather than anything I might do.

    The editor SDK is already in an SDK v2 encapsulated state in case you're unaware. The whole point of making my own layer is to decorrelate it completely with the editor, the system would actually keep running just fine even if the editor underneath stopped existing.

    Also, I tried to make it as foolproof as I can. If the things any of these addons need stop existing the way they do, the addons just do nothing instead of crashing.

    There is really nothing to worry about, and if you want I am more than happy to spend any amount of time explaining everything I did so you do know if anything might cause an issue so I can take steps to changing them right now.

    The whole purpose of this addon is to provide a single common interface for implementing editor UI rather than have each addon handle its own interface which would actually be super scary. That way there is only one thing to worry about rather than a dozen addons all managing their own thing.

    If this still does not satisfy you, I don't know what to tell you. I'm not planning on deprecating this system so if you'd rather cut your leg off than tell me not to step on your toes be my guest, I'm not the one dealing with the consequences.

  • What an exciting thread!

    I really appreciate the ethos of Construct 3, where things are tied together. Sometimes things have to happen (like HTML layers), other times it's a logical situation (expecting 2 behaviours to not conflict with each other), but beyond that, very rarely will you encounter a feature in C3 that doesn't work with another feature.

    My ignorance is probably going to be shown with what Three.JS offers, but, I feel confident that Scirra can tackle their own 3D implementation - Three.JS is excellent from what I've seen/read, but at the end of the day, Scirra have figured out extremely effective and optimal design choices for 2D game design, from cheap collisions to optimised rendering, all without the user barely needing to configure anything. Maybe it's bad for me to say this as it makes third-party addon devs, or those familiar with Three.JS, have less use for their skillset or become restricted in some ways, but I stand by my point as of now.

    With 3D, I thought I'd share what I feel would be the most-categorically-important starting point, and also share a list of the features I feel are more deserving of a voting-based system.

    In order, starting with most important, here is what I feel is most needed:

    1. Full rotation of a 3D shape.
    2. Upgraded Layout view for 3D objects.
    3. Loading in gltf model files.
    4. 3D Bounding box collision.
    5. Basic 3D lighting (New Object: 3D Light).
    6. Basic 3D animation (from gltf files).

    Then the features I feel should be a voting case:

    • Enhanced 3D Collision (Raycasts, esp for FPS games with shooting, but also for allowing users to design effective movements for their platformer games and such. Hopefully the ability to get useful information such as X Y Z, reflection angle, or perhaps even the name of the part of the model (assuming you can separate, e.g. a Person model's head and body, then it's much easier for someone to make a "headshot" system). If these types of info are expensive to generate, then allowing to disable/enable would be great.
    • Enhanced 3D Lighting (Whether a different form of lighting, shadows, etc).
    • 3D Physics
    • Further usage from the gltf file format (unsure on what could be gained from this, but bones, leaf tree visibility hierarchy, etc).
    • Multiple 3D Cameras (Placeable even within a layout, e.g. a TV effect, or a car's rear-view mirrors, without relying on Drawing Canvas (which may not even be possible!)).

    With all 5 important points added, it feels like a beginner could easily step into C3 and get cracking on many types of 3D games, from First Person Shooters to Platformers - Whereas right now, every point listed becomes an issue for someone trying to get started.

    1. Full rotation - A requirement that does not need an explanation!
    2. Upgraded Layout view - Needed for ease of designing a 3D game - Free cam and such.
    3. Loading in gltf models - IMO This is a critical barrier and is high on the priority list - Being limited to just a few shapes is not what someone expects, there must be some way for someone to load their own objects in.
    4. 3D Bounding Box collision - A great starting point for simple collisions; whilst alone is not capable for wacky 3D projects, it's still extremely powerful to get started. I am unsure on the appropriate way for Scirra to handle this, whether the bounding box should expand/shrink depending on object rotation, or if its size shoudl remain static, or if the bounding box should also rotate (imo I think not, to keep collisions cheap and efficient - Although choice is always good to have!).
    5. Basic 3D Lighting - I am noob with 3D overall, but I understand gltf models come with normal data to help with lighting, I presume "vertex lighting", so a new plugin for "3D Light" would be amazing to see, allowing beginners to throw together a scene and make a nice atmosphere.
    6. Basic 3D Animation - Again, I am noob, but I presume there's a variety of animation types, from a likely-simple "move vertices" to "bone animations". As long as there's some form of animation, even if one must adapt their model file to utilise this, then this is the last feature to make a valid game - Rotations, collisions, lighting, sound, animation - All good!
  • Three.JS is excellent from what I've seen/read, but at the end of the day, Scirra have figured out extremely effective and optimal design choices for 2D game design, from cheap collisions to optimised rendering, all without the user barely needing to configure anything. Maybe it's bad for me to say this as it makes third-party addon devs, or those familiar with Three.JS, have less use for their skillset or become restricted in some ways, but I stand by my point as of now.

    I think we can all agree that a Scirra developed 3D engine would be the best. However, Three.JS is being discussed as an alternative. Alternative to what? To Scirra not being capable of making a 3D Engine.

    In an ideal world, all the points you mention would be developed, but Construct 3 has been out for ~8 years. 3D features have been available for ~4 years. Those 3D features are just a cube with not even rotation.

    So Three.JS is mentioned as an alternative. If Scirra is not capable of doing a whole 3D engine (which is completely understandable!), just use an already existing 3D engine and give the Addon Developers the ability to create all the ecosystem for them.

    Three.JS is an excellent alternative, if Scirra were to abandon any 3D intentions, something that just not long ago many of us thought. However, it's refreshing to see Ashley still have intentions to continue his 3D work and being open-minded about it.

    But on the other side, if Scirra will continue its 3D work, how much more time it will take? It's definitely not their priority and even if it were, with the time it has taken to get other features you could say they're "basic" on the engine, there's no telling how many years we have in front of us to have something most users will be happy with.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • In order, starting with most important, here is what I feel is most needed:

    1. Full rotation of a 3D shape.
    2. Upgraded Layout view for 3D objects.
    3. Loading in gltf model files.
    4. 3D Bounding box collision.
    5. Basic 3D lighting (New Object: 3D Light).
    6. Basic 3D animation (from gltf files).

    - Jase00

    I agree with these 6 points. I think this is everybody's expectation when it comes to 3D in Construct.

    I want to emphasize that these features alone would already create a significant divide between 2D and 3D (exceeding the difference we see with HTML layers). For instance, implementing 3D bounding box collision with rotation would break compatibility with all the 2D principles that Construct is based on (an example is collision cells, which must be 3D and support various rotation angles, as detailed at construct.net/en/blogs/ashleys-blog-2/collision-cell-optimisation-914).

    Additionally, Scirra would need to manage features that only function within a 3D layer/context, such as lighting, glTF support, bone animations, 3D bounding boxes, and rotation.

    My ignorance is probably going to be shown with what Three.JS offers, but, I feel confident that Scirra can tackle their own 3D implementation [...] Maybe it's bad for me to say this as it makes third-party addon devs, or those familiar with Three.JS, have less use for their skillset or become restricted in some ways, but I stand by my point as of now.

    I, too, feel confident they can tackle their own 3D implementation with everything you asked... but it will take 10 years.

    Implementing these 3D features is orders of magnitude more costly (in time, effort, maintenance, and bug-proneness) than 2D. I'm concerned that attempting to reinvent the wheel will result in two years passing with only a few new 3D shapes added to Construct, rather than the six features you mentioned.

    Realistically, tackling 3D will inevitably involve dependencies. For example, I doubt Ashley is thinking about creating (and maintaining) a fully fledged gltf loader from scratch.

    BTW: I'm not an addon developer and I don't have a skillset in ThreeJS. I actually dislike it. The proof of concept I posted before was made with a different 3D library (BabylonJS). Since ThreeJS is a more stable, tested, and widely used library, I believe Ashley will see it as a more prudent option.

    MasterPose is right. Of course, a fully featured 3D engine developed by Scirra would be the best, but let's be realistic!

    My take is that Scirra should focus on creating a clean API/UI/wrapper around a mature 3D library/engine... I'm sure it will involve significant effort, challenges, and a lot of "pain", but at least this approach would address the increasing feature gap in a feasible way.

  • Probably an unpopular opinion, but I think the current 3D implementation is a pretty good fit for C3.

    It's a bit heavy handed, but at the same time rather elegant how it makes 3D as easy as 2D, by introducing well thought out limitations.

    No other engine would have even thought of the idea to implement 3D objects with only 1 axes of rotation, but it makes working in 3D feel just as fast, and easy, as working in 2D in Construct.

    Even advanced developers still run into issues with 3D rotation sometimes, so taking that complexity out feels like a great fit for C3.

    Another area that is solved elegantly is texturing, another area that even advanced developers struggle with.

    Yes the 3D object selection is limited, but it also completely eliminates the need for UV mapping in C3, and making the default texture a 6 sided dice was also really smart. It's like a tutorial without any words.

    With that said, there are some things I think could be improved to make everything a bit more flexible and more useful.

    After using the 3D features for a while now, I do have to agree that a locked top down camera in the editor feels very limiting and awkward. If we could have a better 3D camera view in the editor that would make level design much easier.

    There should be a couple more 3D shapes, sphere is an obvious one, maybe the texturing for it could be done via triplanar mapping.

    There should also be a billboard 3D object, a 2D plane that's always facing the camera. With an option to only rotate on the 1 axes that C3 already supports, but also one where the plane is always facing the camera.

    The "Corner (in)" 3D shape is wrong IMO, the edge of the (in) part should be switched (since it should be a counterpart to corner (out)), so that the crease actually goes IN. Right now it makes a triangle on top and slopes down from there. (Might actually be a bug that slipped through)

    This is how it is currently

    This is how it should be

    Corner (in) and (out) shape should be rotated so that their highest point is in the top left corner. (so there doesn't need to be any extra conversion if you rotate it with an origin in the top left corner (to be consistent with other 0,0 origins))

    And I would also argue that the Wedge shape should be rotated 180° by default, since the default 0° direction is to the right in C3.

    There should be a triangle shape (if you look from top down).

    (The triangles Catheti should face up and left, so that the 90° angle is in the top left corner. (again so there doesn't need to be any extra conversion if you rotate it with an origin in the top left corner.))

    Something I kept making feature requests for is an expression to get the x,y,z coordinates of mesh points.

    And if we could switch the triangulation of individual grid cells in a mesh that would make modelling things with the mesh less problematic. (See the "Corner (in)" shape as an example of the problem.)

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

  • RIP to this thread being productive :/

  • Ashley, wouldn't it be a lot more productive to work with Skymen on properly integrating and safeguarding his API, rather than spending time and effort opposing it?

  • 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

    To be clear I'm more than happy to take a step back. If you're willing to work with me to make it as safe as possible while still having it work somewhat even if it includes only managing popups and not including any CSS inside the editor, I'm also happy to do that.

    I am reaching out to you with the express purpose of working with you to make it work sustainably, but when you react this way by immediately categorizing any experiment as an existential threat what you're doing is telling other addon devs that if they don't want to trigger a cataclysmic event they should hide their work from your eyes, which in turn will cause far more headaches for you.

    I'm doing this because I know the need exists and I think I can do it in a way that minimises harm and I can communicate transparently about it. You also understand why the need exists and you know how useful it could actually be to have some form of custom tooling for advanced users.

    To be honest, it is a bit terrifying to me that you would rather reach for extreme options that combats and destroys the work of dozens of devs who give so much time for your engine rather than first see how you can work with said devs and assume none of them have nefarious intents.

    It looks like you have over 2000 lines of code making similar kinds of changes.

    My code manages its own DOM element and has everything in its own bubble. Same for the CSS, it is scoped to only affect my elements. If you think it's still reaching too far, I'm happy to make any adjustments to make it reach less far. If having any amount of me messing with DOM is still too much, I can just open a popup window and handle custom editors exclusively in that popup window, that way it's in a completely different context and can't risk messing with your editor's DOM or CSS.

    Even better, you could add a special div in the editor meant for any kind of custom content that would need to contain any of these edits that you can accept leaving alone, without having to do any of the extra work of maintaining anything.

  • From 3D to V3 in 3 pages :D Good going lol.

  • 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

    So if this is how things will be, then OK.

    I just posted a tutorial on how to use my plugin JailBreak which let's you break SDKv2's encapsulation and use SDKv1 directly in Scripting, and thus can be used to port add-ons which are impossible to port to SDKv2.

    Check the tutorial here: construct.net/en/tutorials/break-sdkv2-encapsulation-3256

    If Ashley will create wrappers of wrappers of wrappers of wrappers, the only realistic way to keep using Construct is by breaking those. And I here and now pledge to do it and share it with the community so everyone else can do it also.

  • Sorry for causing all this drama guys...

    This used to be a quite productive thread about 3D features in the engine, I really didn't think this would happen when I posted my first message.

    I think it's best if we move this brand new discussion to a new forum thread as I really don't wanna clog the interesting discussion that was happening up to that point.

    construct.net/en/forum/construct-3/general-discussion-7/editor-sdk-editor-tools-sdk-v3-187521

    Everyone can go back to discussing cool 3D features and anyone interested in talking about the SDK stuff please move to the new thread.

  • Im one of those "normal" users people keep mentioning, I don't quite get the drama, but it's clear to me that yah bois are quite passionate about Construct 3. I love to see it.

    Since we are going back to the 3D thing, I will be honest, I even spent some time looking at Godot (because i wanted more 3D stuff), bleh.... it was real coding, I got homesick real quick and came back here. lol.

    I would like some more 3d things, that would be cool, but if anything (and sorry if it was mentioned) I just want the free camera thing to look at stuff as i'm working on it, if everything else stayed the same for years, that'd be fine with me, I just want to look at what we have already in a better way.

    Sorry if I covered something already said, I don't post much. (chronic lurker).

Jump to:
Active Users
There are 0 visitors browsing this topic (0 users and 0 guests)