Approach to making C2 development more modular

Show us your works in progress and request feedback

Post » Tue Mar 25, 2014 11:27 am

Hi,

I have been agonizing some time already that C2 isn't supporting "precompiled" C2 Layout/Event components and modularity -- what i believe to be a prerequisite to developing clean, reusable and scalable source code.

But, I believe that I found a way to achieve it using adaptations of currently existing plugins. I would like to find someone with plugin development experience with whom I could jointly develop this to be shared in the C2 community.

Here is the overall approach that seems to work:

1. C2 would could be complied and then embedded in a C2 Project layout using @Pode iFrames.
2. Communication between the C2 project and project included in the IFrame would occur using HTML5 messaging such as implemented in the @Pode's PostMessage plugin, which can send and receive message in event sheets using iFrame IDs.

The C2Embedding plugin would offer additional features:
1. the C2 project that embeds another project would provide the project a unique ID, which is then used in subsequent messaging to direct messages to the correct embedded iFrame C2 project . This could be provided as a parameter in the URL that links to the IFrame of the embedded C2 project would.
2. a Dictionary could be used to specify the data interface between the main project and the embedded project. The Variable Dictionary would include "global" variable names in the embedded project that could be set or changed, which would then be reflected in the embedded C2 project.
3. An Event trigger Dictionary could be used to indicate the events triggerable in the embedded C2 project -- or, in case of a lighter approach: an event with tag could be used to trigger events within the C2 project.
4. the embedded C2 project could trigger events in the main project. A tags could indicate the event kind triggered.

this is it, in essence.

Having such a capability, would allow compiling C2 projects into "components" and have those components embedded and integrted in other C2 projects.

i feel this could be very useful in better managing projects.

Dan

p.s. more thinking needs to be done to support special platforms such as node web-kit, how these access, load and run pre-compiled components in iframes.
B
9
S
4
G
1
Posts: 207
Reputation: 1,385

Post » Tue Mar 25, 2014 5:47 pm

The problem is that you can't share the canvas use by C2 across the various iframes.
B
33
S
9
G
6
Posts: 708
Reputation: 6,704

Post » Tue Mar 25, 2014 5:53 pm

Hi Pode,

Thank you for your prompt response. Can can you further explain the problem?

What if each Canvas included in an iFrame is self contained and the only sharing with the "outer" canvas are events and messages.

For example, I created a "virtual" keyboard and Entry Field to enter text. I'd like to reuse this functionality across several games/quizzes. So, I envision the keyboard to "live" within an I frame, and the linkage to the outer application is only via messages sent -- i.e. the complete text entered.

EDIT: i.e. the application within the IFrame is treated as one object type in the "outer" application.

Dan
B
9
S
4
G
1
Posts: 207
Reputation: 1,385

Post » Tue Mar 25, 2014 8:08 pm

You can share data and messages across iframes. You can also display graphics inside C2's canvas for each iframe.
However the various iframes can't be composited one on another. The other thing is that C2 is optimised while being alone running in the browser. I don't know if you won't have some performance problems with several instances of C2 running concurrently.
B
33
S
9
G
6
Posts: 708
Reputation: 6,704

Post » Tue Mar 25, 2014 8:13 pm

OK. thanks.

re: iframe composites

So, Iframe within IFrame is not supported -- only one level of iFrame per C2 project.

re: optimization

Indeed something I haven't thought about: a C2 app running inside an iFrame imports all of the C2 runtime code again. I wonder whether browser optimize such things, since it appears to me that iFrame is in the end of the day a browser DOM construct, not an independent browser running in a browser -- at least according to my intuitive understanding of how iFrames might work.

Dan
B
9
S
4
G
1
Posts: 207
Reputation: 1,385


Return to Works in Progress/Feedback Requests

Who is online

Users browsing this forum: No registered users and 3 guests