DarkEDIF - Taking suggestions

Welcome to our brand new Clickteam Community Hub! We hope you will enjoy using the new features, which we will be further expanding in the coming months.

A few features including Passport are unavailable initially whilst we monitor stability of the new platform, we hope to bring these online very soon. Small issues will crop up following the import from our old system, including some message formatting, translation accuracy and other things.

Thank you for your patience whilst we've worked on this and we look forward to more exciting community developments soon!

Clickteam.
  • HTML

    Yo folks.
    I'm making a derivative of EDIF. It's strictly a derivative because it is not compatible with anything lower than Visual Studio 10, and uses a lot of C++11.

    This question is for both regular users and extension developers:
    What do you want to see in an extension SDK?

    What I am implementing now:

    • Multi-linguistic support
      The JSON supports multiple languages for all its settings. All the object properties (excluding identifier and dependencies) are contained within a language group. DarkEDIF reads the languages from top-to-bottom and chooses the top one by default.
      DarkEDIF otherwise loads a "DarkEDIF.ini" settings file, where it reads the languages, for example someone's whose first language is UK English might look like:
      Languages = UK English; US English; French; Spanish
      The first language in the edittime properties will be a combo box with the languages, unless MMF2 updates to support it in a function call.
    • Name it what it is name
      Call something described as a Level Object a LO? Why not call it a LevelObject instead?
      All names will be changed to something readable and instinctive. Not something 300 miles long obviously, but abbreviation is unnecessary in most of the current uses.
      If the SDK is confusing at any point, it will be commented.
    • Efficiency rather than readability
      Despite the last point, the focus of this SDK will be on efficiency more than being blatantly obvious. For example, C++ initialiser lists are faster than manual "=" in constructors, so the SDK will use as many of those as possible.
    • Object properties within the JSON
      Set up your list boxes, editboxes, checkboxes and etc right in the JSON. No more MMF2SDK way of handling it. [Requested by Villy]
    • Permits comments in the JSON
      Although this is not JSON standard, it is recognisable that many people would find this feature useful. Both single-line and /* multiline phrase */ are supported.
    • Minimalist files
      The current SDK has all kinds of structs and classes, carried over from Click 'n' Create and such. Well, you can't actually make CNC extensions any more, so those are getting scrapped. If you want them, go back to an older SDK, cause I just went through the SDK header files and my days they are pointlessly bloated.
    • Multi-threading support
      There is no support for multithreading in the MMF2 libraries. If two threads complete at the same time and you create an event, the expressions will only show the last thread's data. DarkEDIF has an optional memory model that will loop through triggered conditions and ensure the expressions are correctly obtained. By default, this is disabled.

    What else do you think would kick ass in an MMF2 extension SDK?

    Darkwire Software Lead Programmer (C++ & C#)
    Please login to see this link. | Please login to see this link. | Please login to see this link. | Please login to see this link.

    Edited once, last by Phi: Forgot multithreading :p (June 22, 2012 at 10:35 AM).

  • It would be cool if you could create Flash only extensions with this too. EDIF seems great but with little documentation and no examples I couldn't get it to work properly.

  • It's a C++ extension SDK man. You use EDIF to make menus and properties, and use the Flash SDK separately to put the ActionScript v3 code in.

    Darkwire Software Lead Programmer (C++ & C#)
    Please login to see this link. | Please login to see this link. | Please login to see this link. | Please login to see this link.

  • This sounds really great, it sounds like it will be able to easily create decent controls with JSON. If this allows custom window dialogs like XLUA or is expandable to allow some new controls etc then even better yet.

    Other than your list i would say maybe a good ready to build template extension and a few simple examples to go with it would be great as it's always good to be able to just download and compile. :D

  • Actually the 4th link in my signature points to a repository, where the solution file will compile all of the extensions in one go to an output folder, despite being from different SDKs. :)

    Darkwire Software Lead Programmer (C++ & C#)
    Please login to see this link. | Please login to see this link. | Please login to see this link. | Please login to see this link.

  • It would be cool if you could create Flash only extensions with this too. EDIF seems great but with little documentation and no examples I couldn't get it to work properly.

    EDIF is not a Flash SDK. You can use a dummy EDIF MFX file with your own JSON and be good to go.

    Phi: How do you plan on doing the properties? I understand the JSON part but the hard part is specializing the data for each and every property, serializing and deserializing it, bring it to and using it at runtime, etc.
    I'm rather good with the properties and such and am willing to help ;)

    Working as fast as I can on Fusion 3

  • Add a "Make extension for you" button... No, just kidding. Make it have great documentation, so that anyone can use it, even those who don't know C++/Actionscript. I know it may take a while, but it would really help new extension developers get started...

    My Please login to see this link. (which I actually use), my Please login to see this link. (which I mostly don't use), and my Please login to see this link. (which I don't use anymore pretty much at all really). If there are awards for "'highest number of long forum posts", then I'd have probably won at least 1 by now. XD

  • Make it [...] so that anyone can use it, even those who don't know C++/Actionscript. I know it may take a while, but it would really help new extension developers get started...

    That's what EDIF was for, though not the Actionscript and I don't think Phi will go as far as that either.

    Working as fast as I can on Fusion 3

  • EDIF was never intended to write Flash extensions. The only part it plays in non-MFX runtimes, i.e. iOS and Flash, is providing an easy way to create a dummy extension which does not nothing in windows (.mfx runtime). It contains all the actions, conditions, etc, in the JSON file, so your MFX counterpart of your Flash extension lets you view all the menus for development without actually having any ActionScript 3 code. You then write the Flash extension with the Flash SDK and create a .dat file, which has no menus (afaik), and use EDIF to provide the menus.

    Darkwire Software Lead Programmer (C++ & C#)
    Please login to see this link. | Please login to see this link. | Please login to see this link. | Please login to see this link.

  • Oh. So you still need the Flash SDK. Got it! Didn't know that. *Notices that there is no blush smiley, would use one here...* Though it still would be great if it had documentation, as it would allow a absolute newbie to C++ to make extensions. Even a simple example extension wrote with DarkEDIF being included with it (source code and built MFX ) would be good. A extension that actually does something (simple), but is simple enough for anyone to understand. That would still allow a absolute newbie to C++ to learn from the example extension and then make their own extension, it just might take them a little bit longer to understand what code they need to use to make the extension they want to make.

    My Please login to see this link. (which I actually use), my Please login to see this link. (which I mostly don't use), and my Please login to see this link. (which I don't use anymore pretty much at all really). If there are awards for "'highest number of long forum posts", then I'd have probably won at least 1 by now. XD

    Edited once, last by happygreenfrog: Removed the X) smiley (June 26, 2012 at 2:33 PM).

  • Ideas/Requests -

    A way to launch a exe (MMF2 made also hopefully), jar or webview containing a swf or javascript from the edittime side of things would be really useful. What i have in mind for a extension is a editor that you generate a string output with, so it doesn't need a return to work as you would just paste it into the extensions parameter input in a action etc.

    If you could launch local hosted apps and have returns back to propeties or if not directly through a string reader or something that would be even better though since i can make nice editors 100x faster with MMF2 than i can with C++ code.

    ---

    A way to have one control switch values within the JSON or by reading a local txt would be really cool. Basically i am thinking along the lines of presets for a objects properties, so if it was a particle maker extension then you could switch between the different effects simply by changing a dropdown lists item etc. Hopefully this would be possible also as it might be similar to the multi-language setup you describe.

    ---

    You could maybe have a automatic documentation generator which reads the JSON and outputs a HTML template etc ready to edit. I notice some developers don't make docs but if most of the process is automated and they just need to add descriptions manually it might change that.

  • Atom, not sure about your first point. Maybe an explanation on ClickConverse would be better.
    The second points looks good, "Load properties from files". This effect can be achieved with a MFA with those objects in, though :)
    I will add it though.
    The third point is also nice, although that's not really an SDK but more of an program beside it per se. That will be part of the SDK as well :D

    Darkwire Software Lead Programmer (C++ & C#)
    Please login to see this link. | Please login to see this link. | Please login to see this link. | Please login to see this link.

  • Though it still would be great if it had documentation, as it would allow a absolute newbie to C++ to make extensions. Even a simple example extension [...] would be good. A extension that actually does something (simple), but is simple enough for anyone to understand. That would still allow a absolute newbie to C++ to learn from the example extension and then make their own extension, it just might take them a little bit longer to understand what code they need to use to make the extension they want to make.

    That's what the EDIF Template extension is ;)

    Working as fast as I can on Fusion 3

  • Thanks Phi that sounds great :D

    For my first point i basically just mean in the JSON you would add some code to add a edittime button that appears in the properties (which sounds like the current plan), however when pressed it would then launch a EXE you had in a Data\Runtime extension folder or some other MMF2 folder which the SDK would be able to find.

    I am not sure how you will be doing the GUI controls in the JSON code but with a quick guess for the button to run a exe you could maybe have something like this -

    "Editor Properties":
    [
    [0, 'Value Input' , 'Name:Test 001', 'Min:0', 'Max:100', 'Default:0'] // Some other control
    [1, 'Value Input' , 'Name:Test 001', 'Min:0', 'Max:100', 'Default:0'] // Some other control
    [2, 'Button' , 'Name:Run Map Editor', 'OnClick: Load('Data\Runtime\ExtName\MapEditor.exe');'] // The button that loads the EXE you want
    ]

    Then with MapEditor.exe (or any other exe you wanted) you would just use it for whatever you needed like a helper tool, in this case to make a map file that could be saved and loaded with the extension actions etc.

    I guess my idea would just be a way of running helper apps that would normally be external tools but if you added in a way for extensions to load properties from files also they could get saved data back also and work together as if the EXE was a dialog from the extensions properties.

    With my second suggestion i mentioned a external TXT/INI file based preset system which would be great but another useful thing you could do with the EXE launching would be to directly manage those TXT/INI files to add.remove a preset etc. It sounds like you wanted Multi-linguistic INI's so i guess you could do basically the same thing same again with that and launch a EXE tool to directly manage them also. :D

    Edited 8 times, last by Atom (June 27, 2012 at 5:49 AM).

  • I can do one better; make it an action that you click in the action menu that runs the program and when the program finishes the action is already set up to load the map ;)

    Working as fast as I can on Fusion 3

  • Can you add a flag which adds conditions/actions/expressions for manipulating the object properties? Some extensions rely completely on these object properties. Automatically adding conditions/actions/expressions for object property manipulation (based on type) could save a lot of time.

    This allows for easily creating objects which solely contain properties, avoiding abuse of the alterable values or strings on an active (which don't facilitate floating point values in the editor for example).

    Edited once, last by MattEsch (June 27, 2012 at 12:59 PM).

  • In most cases, people run some setup code in CreateRunObject which needs that preset condition. For example, defining an editbox as a password must be done while creating it. Recreating the window control would lose all the properties the old one had. And you can't modify that is-password property for obvious security reasons.

    As far as forcing an override.... hmm. Not sure that's a good idea, or that it's even possible - when the object is created, the data set at edittime is given to the runtime for re-storage.
    An action doesn't change the property the same way that the edittime->runtime change does.
    Secondly, it would also be impossible to determine if there's already an action/etc that modifies that. For example, a "Set Default Path Enabled" action would modify a filename path, but take no parameters. I'd have to force the developers to reveal which variables they are setting with each a/c/e, which if they don't want properties to work would defeat the point of the feature.

    Otherwise, just have an override setting for all the variables, which could cause unexpected results plus would require the object to be recreated (if it's a window control like Editbox). I'm going to have to refuse this change.

    Darkwire Software Lead Programmer (C++ & C#)
    Please login to see this link. | Please login to see this link. | Please login to see this link. | Please login to see this link.

  • I can do one better; make it an action that you click in the action menu that runs the program and when the program finishes the action is already set up to load the map ;)

    That is a great idea, running exe's directly from the action menu will be really great also and that is the main part where this type of feature would be most useful but for some reason i had not even thought of doing that before. Being able to launch a exe from the object properties would still be useful also if you just wanted to quickly launch something for whatever reason. If you could give some quick SDK examples for doing both of these when you release the SDK that would be helpful.

    Thanks Phi, this SDK is going to be the best yet. :D

    Edited once, last by Atom (June 27, 2012 at 11:22 PM).

  • To be honest, still lost about your point Atom, I'd get it a lot better if we IM'd on ClickConverse. It's available in the subtopic of Open Topic Community Forum :)

    Darkwire Software Lead Programmer (C++ & C#)
    Please login to see this link. | Please login to see this link. | Please login to see this link. | Please login to see this link.

  • For a really simple idea of what i mean add the XLua object to the frame, go to the first page of it's Properties and there should be a button that says "Edit", click that and it will make a window appear where you can then code with LUA. Other objects to test that have custom windows which either after getting added, double clicked or pressing a "Edit" button in the About pages are Flame Object, Active Gradient object, Color Selector and the Blowfish Object but i am sure there are others also.

    Put simply my idea is rather than built in windows appearing it would be a .exe that loads instead.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!