Corona LabsLast week, we seeded access to plugins to our beta testers. The overall feedback has been positive, which means plugins are just around the corner for daily builds!

This is going to be a major change in how you’ll be doing cross-platform development with Corona. We also plan to make some plugins available to Starter in the next public release — more on that in a moment.

So it’s high time I walked you through how plugins will work!

Plugin Categories

First, what sort of plugins? We’ve broken them up into several categories:

  • Ad Providers
  • Analytics Providers
  • Bluetooth accessories (e.g. joysticks)
  • Business
  • Cross-promotion
  • Gaming
  • Monetization
  • Security
  • Utilities

The initial test set we gave to beta testers included the following plugins: AdMob (iOS and Android), Inneractive (iOS), OpenUDID (iOS), and Green Throttle (Android).

We’ve also got several more coming from 3rd party partners. And we’re also working on several utility plugins ourselves, such as OpenSSL, Zip, and Ouya, just to name a few.

Plugins and Developer Experience

Second, we spent a lot of time — a lot — trying to ‘coronify’ how plugins would work in Corona SDK.

We’ve seen a lot of plugin architectures and seen how much can go wrong, so we wanted to make sure we did this with an eye towards the longer term. We thought through a lot of questions like:

  • How do you find all the plugins that are available? Usually, you have to get lucky with a Google search.
  • How do you ensure the right version of the plugin is being used?
  • What if a plugin requires special build flags?
  • What if the plugin is only available for device? What do we do when we want to run a project in the Corona Simulator?
  • How do we install the plugins so that we can use them?

Plugins and SDK

In answering these questions, it turns out this was an area ripe for innovation.

Previously, I mentioned that the way you tell Corona that you are using plugins is through some minor modifications to build.settings. What I didn’t really cover was all the machinery that’s happening so that you can use it just like any normal library. In other words, when you use plugins, you just ‘require’ them like any other library — and it just works!

This has to work at two levels. It has to work on the device. And it has to work in the Corona Simulator:

When you do a device build, our build server will auto-magically package your plugin so that it all works. There’s actually a lot of trickery happening so I’ll just highlight one on each platform. On iOS, some plugins require additional OS frameworks that Corona does not normally link against, while on Android, some plugins wrap an Android library that requires special changes to the AndroidManifest. Thanks to our new devices build servers, we’re able to take care of all of these intricate details, so you don’t have to deal with them!

What about the Corona Simulator? Well, when you open a project, we’ll download plugins as needed. That way, your project will run normally. There’s one caveat to keep in mind about plugins that run in the Corona Simulator. Just like certain libraries, like ‘facebook’, will only run on device, some plugins will offer features that will only function on the device. In those cases the plugin will simply be a stub, just like the ‘facebook’ library is when you try to access it on Mac and Win. The functions exist, but they do not do anything.

Further out: Plugin Marketplace

Several folks have asked whether we plan to create a marketplace where they could make or sell plugins to other community members. The answer is yes, except we see that as something further out.

In order to provide that, we need to have certain billing/store infrastructure in place. Now as a team we have to make choices, and right now that means we’re prioritizing engine features over writing annoying business logic. So that’s my long winded way of saying, yes we are working on it, but no, it’s not our top priority.

With that said, I wanted to bring it up because there will eventually be some plugins that are sold either by us or perhaps from one of you!

On top of that, we plan to make plugins available to Starter devs in the next public release. Some of these plugins we think should come free, but others we think are enough effort to build/maintain that they shouldn’t be free.

Finally, we think we have found a way to square the circle in terms of making IAP/store affordable to Starter devs, so I want to share that with you. When we get this marketplace up, one of the things I’d like to see is an IAP plugin that a Starter dev could buy — one for each app store. Honestly, we don’t know what is a fair price per plugin, but intuitively, I know it would be less than what the old Indie tier cost.

Okay, that’s it for now. I know many of you want to hear more about graphics soon, so that’s on my short list for things to talk about next!

  1. So, ur selling PRO and Enterprise licences for 600$+, but not only that, additional features will actually be plugins that you will charge us as well ?

    • Not at all. Our focus is on delivering lots of plugins that come free for Pro/Enterprise. Some of these we will be free to Starter, and some may be offered as paid (à la carte) options for Starter devs.

      As I said, the marketplace isn’t our top priority. When we have that, then maybe there are a few plugins we’ll charge for in our marketplace, much like how Apple sells its iWork apps on its own app store. But right now, our focus is on more plugins that come with your Pro/Enterprise subscription.

      • Hi, please could you say more information about this price/features transformation, because you want to scubcribers to buy a new licence (that will cost more…), with all you have is promisses..

        All you information is vague (not only for the plugins but also for new Corona builds) .. “Our focus is on delivering lots of plugins that come free for Pro/Enterprise. Some of these we will be free to Starter, and some may be offered as paid (à la carte) options for Starter devs.” – so not all are free for Pro subcritions, so what is the new features.. what are the plugins you gonna develop, that gonna be free, the paid ones..

        I my opinion think you could extend the end of month promotion, and give more information, what are the features that you gonna develop for the new corona version, and what about the plugins…. and then ask for money, so we can evalute properly.

        And thanks for all your hard work
        José

    • A Pro user can create a pure Lua module, but you’d need Enterprise if you want to do any native plugin development. We’re exploring how we could open this up, but still in the research phase.

      In terms of distribution, we plan to open this up with a marketplace as I talk about above.

      • That’s a great news [that you are looking into opening up the native plugin development].
        To be honest, for a single developer, the enterprise price is too high… then again, having a lot of experience in java/c it would be awesome to write my own plugins for things I would like to use.

        Thanks and keep up the good work!

  2. I know theres been a lot of talk about people being unhappy about having to pay for a Pro account in order to get IAP.

    I think its a great move if you let the Starter accounts buy this as a seperate addon to their free account.

    This hopfully will keep a lot of people happy!

    Me for one :)

  3. I would like to see corona concentrate more on business style apps. I am sick of widget candy broken input validation and reverse input on android, corona lack of business type controls (numeric keypad on its (text or numbers but no text with decimal places). corona seems to be for 2d games and less about business apps. I’ve been stung by less 60 global variable up reference limit on business apps with loads of input fields).

    widget 2.0 (1) seems broken and is not very skincare :(

  4. Good idea to give free plugins to Starter Dev (waiting for AdMob to experiment). I just started building apps via Corona and so far enjoying. Hope one day I upgrade myself from Starter to next level.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>