Who plans to write a C2 runtime with the EDK?

0 favourites
From the Asset Store
Game with complete Source-Code (Construct 3 / .c3p) + HTML5 Exported.
  • In the "Why HTML5?" thread in the C2 forums, the EDK was mentioned a few times. For those that don't already know, the EDK is the Exporter Development Kit that Ashley has mentioned eventually wanting to create for C2. I have no idea of the timeframe for it, I imagine it's quite a while away -

    but out of curiosity how many out there actually plan on using the EDK when it's released? I personally want to try to make an Android runtime. I dabbled with Android development(java) for a short time, and I enjoyed it. It was very straightforward, and easy to find example code online for anything you needed to learn how to do.

    At one point, I had made some android functional equivalents to some basic construct classic system and sprite actions, so you could export a very basic cap to text(simple sprite actions like changing angle, position, and dimensions) do a few find and replaces in a text editor, and it was working android code. It was rewarding work, and I imagine working with the EDK would involve alot of the same things. Once I had time to start on a runtime though, I'd definitely want to at least try to assemble a team.

    How many other developers out there plan on trying to do something with the EDK? alone or in a team? open-source? commercial? what platform? etc

  • Just FYI, releasing the EDK is not in our plans for the time being yet. It's quite complicated to organise, because if we pull it off wrong, we will end up with a *big* mess of incompatible features, plugins and behaviors and unportable projects. It's a tricky one to do and at the moment it's not clear how much it would benefit us, especially considering making a new platform requires writing an exporter, plugin/behavior SDK, runtime, a complete suite of compatible plugins and behaviors, and so on. I estimate it's about 6 months work to make a mature exporter and it will require constant maintenance after that as well. So I'm also doubtful it's practical at the hobbyist level, and I don't think many people would take on the risk of that much work at the commercial level. I don't mean to doubt anyone's abilities, I'm just saying it's a huge amount of work!

  • Yeah it would be a huge work. Six months at the very minimum..... Sooo, let's hope that WebGL get's supported everywhere at max performance. The problem is that if WebGL fails, C2 will need another runtime...

  • Sooo basically it's an insane amount of work that few people are interested in/capable of doing, and each exporter will have to be maintained for as long as C2's lifespan, and there is unbounded room for bugs and inconsistency.

    Sounds great! When do we start?

  • Maybe it's better to port existed engine (ex:cocos2d) into C2 by EDK without making a whole new one, since the most important feature of C2 is event sheet. C2 could be a code generator to translate code from event sheet to source code in text format.

  • right, exactly, even without an edk, I imagine you could just make a translator from event sheet xml to equivalent functions in the target language. You could even limit the workload by establishing a set of bare bones ACE like Start of Layout, Always, sprite object with movement, resizing, touch commands, and text object with the same commands plus set text. and it could still be useful in many contexts. you could even ignore the edittime, and use the current one (which wouldn't give you any of the benefits of the target platform). Just using the xml and either a parser, or a find replace script, possibly several steps, but doing something like I did with CC and android, I'd imagine you could get much further given how well structured the c2 capfiles are. if/when my schedule eventually opens up, I'd like to try it, at least as an experiment.

  • Hmm... interesting idea. What about exporting to something like allegro or SDL? Could then C2 hit Windows, Mac, Linux, iOS and Android with one exporter? Or are there too many differences between the platforms even using a framework like those?

  • And what about the plugins ?

    If you want to use plugins, you have to have a runtime for them in the destination language.

    And you don't translate XML event sheet from C2, it's a full engine/logic by itself, which gets "interprated" on runtime.

    To make an heretic parralel with a compiled language, consider that for runtime, plugins get linked "on compilation" (preview/export).

    Check again the blog article about C2's architecture.

    Such a translation would be cool, but is unlikely to be manageable/functional imo.

    Sorry to appear as an excitement breaker.

  • yes, you'd have to make a runtime for the plugins, but what I'm saying is even just sprite with only position actions and expressions and box collision, text, and touch, 2 or 3 basic system actions, and no behaviors would be useful. that was about what I made in android last time, so I definitely know it's possible and of a manageable workload. I don't mean to make an exporter that gives you complete ready to use files, but gives you files you can load and have ready to compile in the target language, like a cap translator.

    the programmer would be required to write a Drawing function for the runtime, and for each plugin, and set up the main loop where the bulk of this copy pasting finding replacing would occur.

    you would also specify how something included in the cap file would have to be included in the target language. You would have to create equivalent functions for any ace you will use in your cap. If you didn't care about time delta, you could ignore it. if you needed platform really badly, then you could include only the functions you needed.

    I could do alot with just sprite, and no behaviors, and I'd love to have a basic tool like that for android or iphone running natively. I have a few ideas of how the most of the translation process could be generalized for use with different languages, and automated with an app.

    Also, it was reading that blog post that gave me the idea. and then after having a look through C2's files, I think it's doable. obviously Ashley knows what he's talking about, and making a complete runtime is infeasible for pretty much anyone but scirra and html5 right now, but a very limited runtime could still be useful, just like c2 was in it's infancy.

    it could also be opensourced for people to do what they wanted/could, and if there were even half as many devs trying their hand at it as there are making plugins with js, but just adding features from c2 or specific behaviors, or objects new or old. maybe with some time, a specific platform could even get a respectable feature set.

    Edit:

    Hmm... interesting idea. What about exporting to something like allegro or SDL? Could then C2 hit Windows, Mac, Linux, iOS and Android with one exporter? Or are there too many differences between the platforms even using a framework like those?I don't know about those specifically, but I would guess most languages, aside from scripting languages, would need at least some platform specific code,

  • Arima You read my mind. By using those libraries only one exporter would be needed. They minimize cross platform differences very significantly. However, the creator of the exporter would need excellent knowledge of C (not C++). You can use C++ with them, but to do cross mobile platform, C99 is still the ticket.

  • What about programs that convert html5 apps into other "run-times".. does not Phone-gap convert html5 code into native Android or IOS programs? (or is it more like a "packaged" html5?)

    Could someone not right a converter that turns html5 into PC .exe files, Xbox apps, etc?

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • that's possible, but I suspect the native c2 xml would be the most simple, rather than exporting first to html5, given that xml is made to be a markup language that focuses solely on documents and arbitrary data structures, and in the c2 caps that's how it looks, just the information you'd need for a runtime to interpret, and a little info about the editor settings, whereas the html5 will have alot of implementation specific commands to contend with.

  • Reading through this, I honestly think an EXE runtime will never come for C2. At this point, I believe if it's done, it won't be done by Scirra, HTML5 is the way they want to go and that's it.

    The only real possibility I see, it's a complete new engine, like a native version of C2 ( Whether from Scirra or not ). ?_?

  • Yeah it's native vs web hell. I wonder how this will end. Web is great but how it is now it's just now suitable for all cases. Hell, 99,9% (100% trully) games that i play are native games.

    I too think that native c2 would have to be a new engine. The runtimes are just too different. An EDK to support this would be like a new Construct being coded from the ground up. The best chance right now is using a web runtime inside a desktop shell. I don't think that's the right way though. Anyway, my hopes are still on NaCL. I feel like i'm the only one that think that way :(. It's the most promising technology right now i think. And if PNaCL(Portable NaCL) becomes a reality it would solve all our problems (i hope). These are times of uncertainty. So it's better to not dive too deep on this just yet... Damn i better go learn some Unity

  • well, just as a proof of concept I made a superlimited eventsheet xml to ConstructClassic plugin c++ code converter.

    It's too limited to be useful, but I did it in about 3 hours, part of which was making an xml reader from TinyXML++ library. It's completely plausible that someone could write a more complete one to convert limited caps with a greater number of ACE entries, that can include the needed objects, etc for any given target platform.

    for this example, we're assuming I've written code to include the objects, and they are stored in here:

    map<CString,CRunObject*> objs;

    this method would only store one of each type, but that's due to me rushing not to any limit of the parsing technique.

    so, the only supported ACE as of now are:

    Conditions:

    --Every Tick:

    Actions:

    --Set Position

    --Set Angle

    as an example, I took the eventsheet from this file here:

    http://dl.dropbox.com/u/1013446/forumhelp/exampleoftranslation.capx

    and it creates the following c++ cc plugin code:

    objs["rar"]->info.angle=360;

    objs["rar"]->UpdateBoundingBox();

    objs["rar"]->info.x=0;

    objs["rar"]->info.y=0;

    objs["rar"]->UpdateBoundingBox();

    objs["rar"]->info.x=65;

    objs["rar"]->info.y=80;

    objs["rar"]->UpdateBoundingBox();

    objs["rar"]->info.x=45;

    objs["rar"]->info.y=80;

    objs["rar"]->UpdateBoundingBox();

    objs["rar"]->info.x=44;

    objs["rar"]->info.y=55;

    objs["rar"]->UpdateBoundingBox();

    objs["twi"]->info.angle=45;

    objs["twi"]->UpdateBoundingBox();

    objs["twi"]->info.x=14;

    objs["twi"]->info.y=255;

    objs["twi"]->UpdateBoundingBox();

    you'll notice it skipped the start of layout, which also proves it is reading and interpreting the conditions.

    As I stated previously, with a little time, someone could make a barebones runtime, with system conditions, and sprite objects, and text objects. An android or iphone native runtime with even those limited features would be a godsend with c2's awesomeness. if it was developed correctly, it could be extended by community members, by having all objects derived from a base type. It's a perfectly viable alternative to waiting for an EDK for anyone who wants to do something like this.

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