Construct 3 suggestions & ideas

Suggest and vote on ideas for Construct 3! Please note this is only one aspect of planning. We do not guarantee any features here will be implemented, even if they are top-voted ideas. The aim is just to collect feedback. Remember to search for existing submissions before adding an idea, describe your ideas as comprehensively as possible, and vote for plausibleĀ ideas that are well thought out. Please seeĀ our full guidelines on suggesting features.

19 Vote

New exports addons

It would be cool to be able to add new export options to C3 via plugins.
The simple idea would be to be able to write an addon that creates a new export options in the export pannel.

In the addon SDK, I'd be able to either attach myself at the end of an already existing export option, and be able to write some aditional code to make the option compatible with a new platform.

This would also make custom build servers for C3 much easier as we'd be able to have the addon do any processing needed before automatically pushing the game to a store or a website.

Having tools to automate all of that would be a godsend for a lot of people, especially in professional industries like mobile games or web marketing.

  • skymen
  • Jan 9 2021
  • No status
  • Attach files
  • skymen commented
    19 Jan 04:07pm

    Well, the reason I can't share the specific project publicly (or even more granular details about our process) is for NDA reasons.

    "IIRC nothing in Construct currently depends on the specific features used by an addon, only the presence of the addon."
    Well tbh, I can 100% make do with only the presence. It already goes a long way.

    I will send you a more detailed reasoning in private

  • Admin
    Ashley Gullen commented
    19 Jan 10:41am

    IIRC nothing in Construct currently depends on the specific features used by an addon, only the presence of the addon. So that would be further new behavior to implement, which could prove tricky and time consuming. Why do you need such specific feature detection? Why isn't the presence of the addon enough? As ever, a high-level overview of what you're trying to achieve overall would be much more useful for evaluating this. Preferably this could be shared publicly so we can establish if there is common cause amongst other developers, since it's difficult to justify features that only one or two Construct users need - we have thousands of users all asking for different things so we want to try to prioritise the things most people need.

  • skymen commented
    16 Jan 10:58pm

    Well, the biggest issue right now is that I can't have something that can both process the exported JS file AND the project data.

    Let's say I have a single global addon in my project and I want to create a new export that throws an error if the addon isn't in the project, and if it is, it exports some additional JS, JSON or XML files that are based on this addon's properties and used actions in the project.

    To do that currently, I need to run a node script in the root of the project, then manually copy paste the data in the addon's properties, then export, and when exported I need to run a node script again that runs the exported project in an Iframe, and parses the content of the runtime, tries to detect the addon, and if it exists get the JS/JSON/XML from the exported data file by finding where the addon's data is located.

    Anyway, right now it relies on a TON of very hacky stuff to work atm. If you want exact details, I can slide in your emails/DMs and send you an exact project with concrete needs that i'd rather not share here.

  • Armaldio commented
    16 Jan 04:16pm

    Maybe with the new File access you could save the zip at a location on the computer and run a local script (idk if you can run exe on the host system)
    And an export consist of a [zip destination, local script] ?

  • Admin
    Ashley Gullen commented
    16 Jan 12:37pm

    What kinds of changes would you want to make on export? Can't those changes be made using the same approach, of writing your own automation that modifies the exported files?

    The export process is complex with lots of per-platform details and specific alterations made in various circumstances. I wouldn't want to spend several weeks on this only for it to not actually cover what you need. So it would be useful to know in more detail precisely what you would want this feature to cover and the reasons for it.

  • skymen commented
    15 Jan 03:29pm

    Well, what I meant basically is that where I work we have a Mac server running, and we wrote a Node script that opens C3 using puppeteer, opens the project and exports it using the C3 UI, and then we take the export zip, unzip it somewhere, do some more processing and prepare the build for publishing on mobile.

    This is what I meant, and it's already possible with no input on your end.
    So what I meant is that being able to write custom exports would 100% help in that process we have. (It's a very common process for a lot of other engines and dev teams as well as far as I know)

  • Admin
    Ashley Gullen commented
    15 Jan 12:33pm

    Oh, I thought you meant running C3 on a build server meant automated exports.

  • skymen commented
    13 Jan 11:04am

    Uh, I'm not sure I understand what you count as either one
    As far as I know, i'm only talking about custom exports, so please tell me what you understood as being automated exports?

    Unless you mean the puppeteer part, and if that's the case, i am not asking you to do any work towards automated exports, I'm just saying that custom exports would help in the context of automated exports.

  • Admin
    Ashley Gullen commented
    13 Jan 10:56am

    Yeah, those are two pretty different ideas (automated export & custom exporters) - you should post two suggestions otherwise it's not clear which are being voted for.

  • skymen commented
    12 Jan 11:05am

    @Ashley I'm thinking about extending the playable ad export to automatically support specific playable ad platforms, and especially a custom platform we'd use to then translate the export into all the ad networks.

    Also, when I say "build server", I don't mean asking C3 to connect to one, I mean running C3 on a build server (using puppeteer), and having said export code do a lot of the common work that the server would do right after downloading the export from C3 anyway.

    Overall, just being able to run some JS code while having access to both the project data (events, objects, object properties) AND the exported JS code would be a godsend.

    Let's say I want to write a new addon to support a given platform (like Kongregate, or Poki, or whatever) but I absolutely need the end zip file to use data written in my addon's properties to generate a config.json for me and it'd also display an error if the addon isn't in the project.

    Let's say instead of using Node, I want to write a very quick export to then package it as an Electron app instead, or as a Tauri app instead, or as literally anything else that is not currently provided by C3, may it be for personal use or to widely support a new platform without having to ask you guys to add yet another export type.

    Or maybe, I want to be able to build for Steam on top of the Nw.js export and that'd fetch data from https://greenworks-prebuilds.armaldio.xyz/ based on the selected Nw.js version I selected and would update the prebuilds accordingly, so the build can now immediately be sent to Steam instead of having to process it again afterwards.

    Anyway, there are tons of use cases, for personal use on a specific project, or for community wide use, for when asking you guys to write a whole new export isn't worth your time, but is worth ours.

  • Admin
    Ashley Gullen commented
    12 Jan 10:00am

    What kinds of platforms do you imagine this would be used for?

    Also currently for security reasons the editor cannot communicate with any third-party servers at all - so your custom build server idea would require weakening this security measure, which I'd be reluctant to do.

  • Mighty Mango commented
    10 Jan 09:59pm

    Yes.

  • +12