skymen's Forum Posts

  • I've already started working on them.

    As I make more examples and little tutorials, I add new features that I need in the process.

    I added a bunch of SDF nodes (for shapes) and more UV transform nodes, and I ended up remaking the kaleidoscope example in the process.

    Subscribe to Construct videos now

    I also added preview scripts that allows creating interaction in the preview window. I used it in the first short to preview the light position moving around.

  • Subscribe to Construct videos now

    Tried making a short breaking down how I made the 3D holographic card effect.

    I might make more in the future :)

  • Did some more work on the shader graph to fix a bunch of issues and improve the UX

    I have organised the remaining work under a few major updates:

    The Changelog Update
    An update focused on implementing proper versioning on the editor and the shader files. This will allow me to make changes to the data structures used while keeping them backwards compatible, and it will allow me to notify users of the changes that I push
    The Big Preview Update
    An update focused on the preview window to fix a few of its shortcomings and add many more features
    Sub Graphs And Routines
    An update focused on adding the sub graph feature. I want to try and design it so Sub Graphs can also be reused as routines, so I can implement functions, loops and proper if else statements

    Right now I'm really happy with the tool and I will take my time adding these features because they represent a lot of work and I don't think they are vital for the time being.

    I'm curious to hear what kind of features you guys would see and which one you feel the tool is most lacking.

  • Thanks :)

    This is much appreciated.

    You're right, I'll add a link to the Open Collective in the app

  • Made this holographic card shader using the shader graph.

    Subscribe to Construct videos now

    I also went ahead and fixed a few of the bugs that were reported on github and most importantly fixed 2 issues that were causing the tool to lag a lot.

    It's now a lot smoother, even with hundreds of nodes in the file.

    Addons exported should now have the language file exported correctly :)

    If you find any issue or want to make a request, please make sure to create a new issue on the github repo, and I will try to fix them as soon as I can.

  • Yes :)

    You can donate on the Open Collective page:

    opencollective.com/construct-community/projects/shader-graph

    Feel free to request examples and I'll try to make more.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • For now the best thing I could do was provide a bunch of examples, and add more specific explanations to the nodes I deemed most confusing.

    Giving a full manual page for all 187 nodes by hand would be too long so I decided to give a reference and only explain the ones I would get complaints about.

    I want to make a video going over the tool and all of its nodes at some point, but for now the best way to learn is to just mess around with it. Of course, some shader knowledge is required, but there are many lessons made for the Unity, Unreal or Blender shader/material graphs that should give you learnings that transfer over quite well to this tool.

    My hope is to catch the eye of more and more people and to eventually work with people in the community to make the tool more accessible as I can't do all of it on my own :)

  • If you are not aware I recently developed a shader graph tool for Construct 3.

    This makes it very accessible for anyone from artists to experimented shader devs to create their own effects for Construct 3.

    The tool is available as a web app here:

    skymen.github.io/construct-shader-graph

    It comes with:

    • A dozen examples
    • 187 built in nodes
    • A fully featured manual
    • An advanced preview system
    • Support for all shader languages
    • Custom nodes
    • Comments and auto node arranging
    • Exported code is commented for easy debugging
    • Full source code available for free

    I am extremely proud of this tool. It has already been used by a few folks to create shaders and I can't wait to see more people use this for custom shader creation.

  • After almost exactly a year of development, I can finally announce Construct Addon Wizard 1.0

    This consists of an addon development framework coupled with a VSCode extension. The framework is really solid and was used to develop many of my addons this past year.

    For people who were already aware of this framework, this release finally brings the wizards system to the VS Code extension. Wizards are forms that the VS Code extension can create to help automate some of the work of creating the addon.

    For now the wizards are used for creating a new addon and publishing a new release, but they could be used for more in the future.

    The framework was also updated with many fixes and new features such as:

    • AI Agents support out of the box with an AGENTS.md and CLAUDE.md files
    • Auto publishing on Itch.io and the Construct Addon Exchange
    • Support for every feature in the SDK (file dependencies, domside, C++ wrapper extensions, Cordova, etc)
    • Auto translation in as many languages as you want
    • Automatic support for the scripting interface for actions, conditions, triggers and expressions
    • Automatic generation of the documentation and the github readme
    • Changelog system that is also used when automatically publishing the addon

    Typescript definition files support is also on the way.

    The Construct Addon Wizard family has also recently expanded to include the CAW Shader Graph and the CAW Theme Creator.

    LINKS

    Construct Addon Wizard

    Scaffold repo: github.com/ConstructFund/construct-addon-wizard-scaffold

    Extension source code: github.com/ConstructFund/construct-addon-wizard

    VSCode Marketplace: marketplace.visualstudio.com/items

    OpenVSX Marketplace: open-vsx.org/extension/skymen/caw

    CAW Shader Graph

    Tool: skymen.github.io/construct-shader-graph

    Source code: github.com/skymen/construct-shader-graph

    CAW Theme Creator

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

    Source: github.com/skymen/caw-theme-creator

    (While the Theme Creator is fully functional, it has been made private after a request from Ashley as we figure out how to better handle in-editor tools, the links are valid and will be available as soon as it is figured out)

    There is still some work left to do, and many things could be made even easier, but I believe that these frameworks are now good enough to be used by the general public for all sorts of addon development.

    How to use

    In your favorite code editor (as long as it supports the Visual Studio Code Extensions system) look for the Construct Addon Wizard extension and install it.

    From that point, you will see the CAW logo appear on your sidebar with a few new actions. You can use them to create a new addon and it will automatically scaffold everything for you and initialize the github repository.

    Once you are done building your addon, hit publish and the addon gets built and sent on github where a github action will run and publish the addon for you.

    By default it only publishes to Github Releases, but you can also enable publishing on the Construct Addon Exchange and Itch.io by setting up the following secrets:

    # for Construct Addon Exchange publishing
    C3_AUTH_USER=construct_account_username
    C3_AUTH_PASSWORD=construct_account_password
    
    # for itchio publishing
    BUTLER_API_KEY=itchio_butler_api_key
    

    You will still need to create both pages manually but once that is set up, you can just set the appropriate information in the buildconfig file and the system will take care of the rest.

  • Hi, if you want to crowdfund work done around the Construct engine, may I suggest donating to the Open Collective that was designed to do just that :)?

    opencollective.com/construct-community

    This goes to open source addon and tools developers in the community that probably need the extra funding, and you can already monitor how these projects evolve and you can also vote for your favourite projects:

    construct-community-voting.dedragames.com

    (To be clear this is unrelated to Scirra, and the funds go to people in the community making things for free otherwise)

  • Yeah that's fair.

    In my version I was running it in about:blank and I used postmessage to execute any code that would have been blocked.

    Let me know when you eventually start looking into it then :)

  • Just to get back on the topic of Editor tools,

    Ashley should I spend any time doing this?

    Alternatively I can also remove all of the code that handles the new dialog UI layer (which is most of the code) and only keep the code that opens a popup if you think that is safer in the meantime

    If you want I can make a prototype and email it to you, or give you access to the private repo. The window manager addon is designed to be easily swappable in the future with any official API you might make, so if you think it's safe, I can make the window manager addon only manage popups and the message communication layer.

    If you still think it's not worth working on until you sit down and decide what to do about it, I'm also happy to leave it be.

    Of course in any case, I won't release it until you tell me it's fine.

  • Well, up until you mentioned it, I was not aware that using the basic JS DOM manipulation API was considered undocumented and unsupported by the editor SDK, and I genuinely thought this addon was supposed to be fair game since I really tried to make everything as self contained as I could. I wouldn't have made it open source and so thoroughly documented had I thought it actually posed the risk you are describing.

    As a show of good faith I have privated and removed all 3 addons and their repositories. I will release them again once the new and supported equivalent feature exists and I can make them work in a safer way.

    Alternatively I can also remove all of the code that handles the new dialog UI layer (which is most of the code) and only keep the code that opens a popup if you think that is safer in the meantime (this would only require changing the window manager addon as the other 2 addons don't handle any DOM outside of their own window).

    Frankly the editor SDK is already pretty much unused by most addons I've seen and completely unused by all addons I've made so if a potential "SDK V3" keeps it backwards compatible then by all means feel free to plan for this move as it wouldn't affect me in any way at all.

    I've looked into Shadow Realms, and I can't find any planned release date for them. Are you planning sdk v3 for when they eventually get standardized, or do you have another temporary solution in the meantime?

  • What we want to do is develop reliable software that doesn't constantly break. Hopefully we can all agree that is a reasonable goal.

    It is, and I don't think anyone would argue against that.

    I suspect perhaps some developers got interested in the ability to access internal details, and thought it was cool or useful. However that was only possible due to the historic weakness of JavaScript encapsulation, and if you do that, you will end up with unreliable software that constantly breaks.

    I understand your reasoning on that front, but I disagree with calling it exclusively a weakness. On one end yes it makes it very hard to build something completely closed off, but on the other hand, having constant access to the internals (even if all you can do is read them) allows for a lot of good things. Javascript I believe is a beautiful tool for rapid iteration, analysing other people's good ideas and learning how to build on other people's work.

    In the case of Addon development, it's kind of a historical way developers around here were raised (including me) by messing around with other people's code and finding ways to iterate on things you were given access to. Of course having access to internal details is cool and useful if only for the fact that it allows us to imagine what things could even exist.

    I could point at the long list of features that are now part of Construct that were initially developed by addon developers, often using knowledge of internal details.

    I would even go as far as to say that "addons", "mods", "hacks" or any other kind of software that builds on top of other software naturally attracts the kind of developer that would find that useful and cool to know the internals of the thing they're working with. Sometimes it feels like you don't have an understanding of this and then get surprised when you meet developers that actually do this.

    If you wish to develop quality software and build addons that are reliable and work in the long term

    This is another misconception. Not all software is built exclusively with the intent of it being up to your standard of reliability. For game developers, most of their tools are meant to work for them and nothing more. If it's unreliable but they can deal with it, it's ok. If it breaks in 5 years after the project is long finished, it's also ok.

    Now I will absolutely agree that in the case of addons that will be used by other users, there is a need for them to reliable and work without active maintenance.

    SDK V2 has value in that it does make things work with less hassle, but that was never the critique of it. The biggest critique was the loss of a lot of things that have just as much worth as stability, like performance, and freedom to mess with things in private (for all the addons that are never shared with anyone else).

    Still, yes I try to make all of my addons as reliable as I can make them and I deprecate them when I feel they aren't reliable anymore or when I feel I can keep maintaining them for free.

    Also, another perk of Construct in this very specific case is that even if something breaks in a new update, users can always use a previous version as they are all permanently accessible. This is also standard in the industry where addons are designed for specific versions of the engines they are built for, and it is fairly commonly assumed that some addons will break over time and if you want to keep using them you should stick to older versions of the engine.

    In the case of an engine such as Unity for example, it's actually even stricter as user made scripts can also break randomly from version to version. This idea that things made on top of an engine should never ever break is very unique to Construct in the game engines industry. Maybe in regular softwares this isn't the case; Perhaps extensions made for Audacity back in 1967 still work with Audacity 3 but that's not something I have seen commonly accepted in other game engines.

    Anyway, I understand your point of view, I understand that you are the one in a position of dealing with the pesky users, and I understand why you would do these things. The only thing I ask is to not be thrown under the bus more than once every few years. The move to SDK V2 was a very painful time for me, I basically had to rebuild everything I had from scratch, and I still deal with the consequences of it to this day. I assume it is the same for other addon devs, so reading you wave around threats of an SDK v3 (because this is how it feels for us) is not something we take lightly either.

    I am going through the work of porting all of my addons to SDK V2, I have rebuilt my addon framework from scratch, I have submitted countless feature requests, bug reports, and I have spent a lot of time reading the internals of V2 to debug issues I have found for you to make it as easy as possible for you to keep improving V2. I have also opened an open collective to try and help crowdfund development on addons and tools to try and get all of this done a bit faster.

    I am not going through all of this again. I am not even saying this to be mean or threatening, but I have a business too. I have done all of this work for free out of passion for the engine you are building, but it has taken a significant toll on me the past few years to do this + manage my own business at the same time, so I am quite definitely never doing this again.

    The editor is not designed to have UI extensions.

    Sure. When I said "what are you even going to do" I was not talking about the fact that the editor's UI is not exposing an API. I was mostly thinking about the fact that browsers come with their own UI extension API and that it already allows things like events, DOM and Javascript to be completely isolated from one another. What I meant to say is that for as long as Construct runs in a browser I don't think it's ever likely that it will be impossible for Javascript running in the main thread from acting on the DOM.

    Anyway, this is not me saying you can't stop what's happening. This is me saying I think it is quite absurd to want to fight the browser so much.

    So I have to ask: do you intend to build reliable software that keeps working?

    In the case of this editor tools addon, my intent was to experiment with what's even possible. Eventually, yes I would love for it to be reliable and this is why we are talking today. I came up to you saying "here is a solution I am experimenting with, what do you think about it, and what can I improve to make it work better long term?" not "Here is a finished addon that I have shipped to half of the Construct userbase and that I will never work on ever again"

    If you do, you won't do this, because you can't guarantee to your users that it will keep working!

    If I thought no amount of compromising or talking to you and asking for improvements in the SDK would ever guarantee reliability eventually I wouldnt be doing this indeed.

    I've seen some experiments with making a 3D editor that operate on that principle, and it is a good approach.

    Not sure which editor you are referring to. Are you talking about this? I don't think I've seen any external editor for Construct that actually provides a fully functional 3D editor.

    I have actually experimented with this a lot this year and made this level editor for one of my games:

    youtube.com/watch

    This could turn into a generic 3D editor tool with some work but for now it's neither here nor there.

    I agree that external tools are better when possible but so far Construct still has a lot of limitations. For one, if you want to do anything at all that affects anything in the project that isnt a project file or a script, you have to build something that can read and write project data. I started working on that a while ago with this project:

    github.com/skymen/construct-crawler

    There is also scope to extend the supported editor APIs to better allow integrating with external tools, such as the existing Custom Importer API

    Yes, in fact the whole point of my initial message was: "Please just focus on extending the supported editor API as we try and figure out a proper way to make editors ourselves". If that ends up taking a different form than what I made in my initial experiment, it's fine.

    Perhaps one less-bad option would be a supported option to open a popup window which can then show custom HTML and CSS content, and communicates with the editor via postMessage() - at least then the custom stuff is sandboxed within a separate window, it's still relatively flexible, and it's still a long way short of full editor DOM modification.

    Yes! I proposed this as a solution as I genuinely can't imagine anything going wrong with this possibility.

    Another possibility is having the editor tools run in an Iframe within a built in dialog, like the dialog popup that appears when previewing the game.

    In fact, it could use a similar system of choosing between external tab, popup and iframe in a dialog and it would be perfect. From what I can tell, such a system already exists and works perfectly fine for Construct's preview which is also running arbitrary code.

    Anyhow, my whole point was not "look I am actively destroying your beautiful editor UI, I am an evil addon developer", but rather "Do not worry about giving access to the UI system, literally give us the simplest possible form of it and we will build our own UI libraries and systems"

    I want to finish with an appeal for co-operation. Please consider everything I've written, and do what you can to work with us. If you co-operate and work with us on supported features, such as perhaps a popup window API that is significantly more reliable long-term, perhaps we can end up achieving both some degree of the features you want, while maintaining our goal of making reliable software.

    I would love to cooperate, as I always try to make clear. I don't think I've ever gone out of my way to go against your judgment and I have always been transparent about wanting to improve on anything I've made to see how we can make Construct a better engine.

    Just let me know how I can better cooperate than what I'm already doing.

    My goal (and I assume every other addon dev) is not to create headaches but to create new possibilities.

  • Would the worst-case crash always be Construct reaching at least anything - The start page, or the loading page at the start?

    Yes because as I stated in the original thread, the addon does not make any changes to or depend on the editor on startup.

    It actually waits for an addon to use it and only then does it create the necessary div, css etc. Before that, the addon essentially does nothing.

    Also, since addons are not loaded until the editor itself is fully loaded, there is actually no way for any addon using my SDK to crash the editor in safe mode, and there is no way for it to crash the editor by using my API before everything is loaded (assuming normal use and the addon does not go out of its way to cause trouble)