Proposal for Community-Developed SDK V2 compliant 3D Add-on Suite

4 favourites
From the Asset Store
Add SubRip (SRT) subtitles to your videos in Construct 3
  • I want to express my sincere appreciation for Scirra's dedication and innovation in developing Construct 3 (C3). The continued improvements, driven by both Scirra's creativity and the valuable suggestions from the community, have made C3 an amazing game development tool. I see that SDK V2 is aligned with this direction.

    However, as user demand for 3D functionalities grows, I believe a collaborative approach can further enhance C3's capabilities. This proposal outlines a community-developed 3D add-on suite that would not only empower users with 3D features but also remove the 3d feature pressure from Scirra's valuable resources, to allow more focus on other areas of C3 development.

    This proposal outlines a suite of three FOSS (Free and Open Source Software) projects:

    1. 3D Object: Handles 3D models and animations (already FOSS).
    2. 3D Effects: Manages 3D lighting, height fog, and other visual effects.
    3. 3D Physics Behavior: Provides realistic physics simulations for 3D games, including kinematic character controller

    These projects leverage C3's unique visual scripting and event interfaces, allowing for rapid development without coding. They are currently functional but require changes to comply with SDK V2 and completely eliminate any engine hacks.

    To enable this suite with V2, I propose the following limited and prioritized SDK V2 requests:

    1. World coordinates for effects (Git #236): Essential for 3D lighting and effects.
    2. GPU 3D rotation (Git #230): Improves 3D object and shape rotation performance.
    3. SDK V1 functionality support in V2: Ensures backward compatibility with existing add-ons, without any internal engine access.
    4. Mesh data access (Git #283): Allows for features like 3D text and physics tri-mesh terrain support.

    I have prepared examples showcasing C3's 3D capabilities with these addons and without any addons. It shows the viability of C3 doing a nice level of 3D in commercial and educational projects. The intent is that this collaboration would benefit Scirra, the product, and the entire community. The examples follow this post.

    I am open to discussing this further through any available channel (forum, Discord, email, etc.). Thank you to the community for their feedback on this post. Looking forward to feedback, alternate approaches, etc.

  • 3D Showcase, 3d models, effects, physics (PixelMetal samples)

    Subscribe to Construct videos now
  • 3d models, ssao effect and lighting effects

    Subscribe to Construct videos now
  • 3d shape, some 3d model, ssao

    Subscribe to Construct videos now
  • Smaads Escalation - 3D Shape, Mesh and effects

    Subscribe to Construct videos now
  • Zero Protocol Demo - 3DShapes + effects

    Subscribe to Construct videos now
  • Dokse's example with 3DObject and 3D Effects (frag light)

    Subscribe to Construct videos now
    Subscribe to Construct videos now
  • Crazy that some of these examples are pure vanilla C3. So impressive.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Ashley, can you please could provide your thoughts on this. I created a limited set of SDK V2 requests to enable community 3d addon development. What do you think of implementing the functionality of the SDK V2 requests in light of this?

  • We have been using this plugin for more than year. Here are some of our 3d games made in Construct 3 game engine using Mikal’s 3d object plugin. This plugin is the of one of reason for us to stay with Construct 3 Game Engine.

    youtu.be/BbwlQI3KA7U

    youtu.be/syYjsXTbMJU

    youtu.be/-zz7u6BNTP4

  • Ashley, can you please could provide your thoughts on this. I created a limited set of SDK V2 requests to enable community 3d addon development. What do you think of implementing the functionality of the SDK V2 requests in light of this?

    Have you prototyped building addons using a real 3D engine like three.js using HTML layers? You'll get everything you could ever dream of for a 3D engine that way. I would say that is a preferable direction, as we do not want to turn Construct in to a 3D engine, and I am sure that these feature requests for more 3D stuff will continue indefinitely until we've reinvented an entire 3D engine in Construct.

  • Ashley yes I have tried (using babylon.js engine). It is not a good experience with C3. Rendering to one 2d plane does not allow for 3d to be mixed in front and behind c3 elements.

    Another large downside is that you cannot compose a 3d scene n the editor. It can only be seen at runtime. No level design in editor, no placement of characters or props where you can see them.

    None of the other C3 features can be used with the 3d objects rendered via js.

    My point is that this is the limited list of requests that will enable the community to do the work of adding 3d in an sdk v2 compliant way to C3, Scirra does not need to create a 3d physics engine or 3d model/animation system or 3d lighting and effects - these will be done by and supported the community, not Scirra.

    Our point in showing all of these examples is that we are already where we need to be to create great c3 3d games and edu apps, we don't need additional requests beyond making the current state of addons SDK v2 compliant.

    Please review the limited list above, if you have alternatives to these limited requests, please consider discussing them or if some are more possible to implement than others, the addons can be changed to adapt.

    This the SDK V2 work you mentioned before, working between you and addon devs on what is needed for already existing C3 addons to become SDK V2 compliant, so we can transition away from touching engine internals and make C3 addons forward compatible with future C3 changes. Lowering support requests for Scirra and offering other great features in C3 that Scirra does have the resources to do.

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

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

    Realistically, anyone wanting to do modern 3D with all the bells & whistles would be better served switching engines to something built to handle that task. This is a fine stance to have. But that full feature set isn't something everyone needs, and for many games built with C3 - indie games, with small teams - would not provide benefits outweighed by the events system, the one truly unique selling point C3 has. If users have to resort to entirely separate rendering pipelines and shoehorn them into C3, then C3 has lost all benefits and users may as well use those other more 3D-focused, javascript/web tech-based engines directly, because at that point, doing it in C3 is more of an impediment than a benefit, and WYSIWYG-style editors already exist for those other gamedev tools.

    A majority of the efforts needed to have working - if a little retro, which is in and selling games these days - USEFUL 3D in C3 is already done. There are multiple examples above, including of projects that have already been commercially released, or will be shortly. Some of it required engine hacks to get working. The idea is that, moving forward, those hacks would no longer be necessary with SDK v2. That's the whole point of this discussion and has been since long before the announcement of a revised SDK to, ostensibly, deal with the current situation of engine hacks being required to do things developers need to do for their C3 projects that feature some amount of 3D content - even in mostly 2D projects with small 3D elements, or in project with more 3D visuals but still strictly 2D gameplay - the kind of thing (currently, with a few hacks) C3 already excels at.

    What exists here, in this thread, is an "out" for Scirra. 3D can be done by those interested, capable, and dedicated to doing so, with comparatively little - much less than implementing full 3D yourselves - effort on Scirra's part. It has already happened. That door is not closing again. This is unlikely to change unless Scirra goes out of its way to actively - and maliciously - prevent end users from doing so. The remaining question is whether Scirra would like to make that easier or harder for some of its paying end users - power users - who will do it regardless.

  • Ashley

    Here's another way to look at this, don't focus on the 3D aspect. These are requests for SDK V2 for existing C3 addons, so they can be compliant SDK V2 instead of using engine internals. Which you have stated in the past is a big goal for SDK V2 and justifies why you are requiring 3rd party addon devs to do so much work moving to SDK V2.

    It is not an ask to add new features. it is exposing to the SDK V2 functionality that already exists in C3, but we would to use it in a SDK V2 compliant way.

    How do we get to SDK V2 and port SDK V1 addons so that we no longer need to touch engine internals, if we don't have the discussion of what is needed.

    In terms of priority and not being able to do workarounds that do not use engine internals with existing SDK V2, we can review the list.

    The first one is most important, it can't be functionally done in SDK V2 yet, instead of using internal engine without the change.

    The second one on rotation would be very helpful, but is more of a performance focus.

    The third one is I hope is already in your plans, support SDK V1 functionality.

    The fourth one allowing access to mesh points rounds out the existing mesh SDK, but if needed they are work arounds like having a separate object like JSON shadow the points in C3, but seems to be a unnecessary complication.

    Can we reset and look at this from the standpoint of SDK V2 compliance and working towards that goal with this specific list of requests.

    Can you please comment on what is possible for future SDK V2 in this regard to help with SDK V2 porting of existing addons to make them compliant.

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