Time for another weekly update!

I’ve cherry-picked several highlights on Corona. Two of them are highly-sought after features for your cross-platform development pleasure.

fitc

FITC Toronto

Starting this weekend I’ll be at FITC in Toronto, Canada. FITC stands for Flash in the Can. It used to be a big Flash conference. Now it’s more focused on the intersection of Design and Technology. I’ll be speaking on building graphically-rich native apps.

If you’re in the neighborhood, drop me a line at walter at coronalabs dot com!

Android Expansion Files

Last Friday, in Daily Build 1082, you may have noticed the following check-in message:

Android: Expansion file support

It’s a little succinct, but basically it’s a big deal. If you are trying to ship an Android app on Google Play, your APK is limited to 50 MB unless you use expansion files, which let you create files up to 2 GB.

Expansion files require Google’s Play Licensing Service (formerly known as Google’s License Verification Library), so we’ve taken care of that so your app can download the files dynamically.

We’ve done a couple of extra special things for SDK developers that takes care of a lot of details so you don’t have to.

Corona-android-expansion-file-download-screenFirst, when you do a device build, the Simulator will auto-magically generates the expansion file for you when you do a device build. If you were a native Android developer, you’d have to go to the trouble of creating one manually.

Second, everyone who’s dealt with expansion files in the native Android SDK knows that you have to create your own interface to prompt the user to download the expansion file. It’s a big pain, so we decided we’d create one for you and save you all a bunch of time.

So what do you have to do? Just a couple of additions to build.settings and config.lua.

An in-depth blog post is coming out this week to explain this in more detail.

Physics Raycasting

We’ve also added support for ray casting in physics. Ray casting is useful when you need to find the objects that collide with a line, and the collision points along that line. This is useful if you want to figure out what is in the line of sight of a character, determine a path for a character, just to name a few.

We have a new sample called “Raycasting.” It simply drops 2 crates through a ray. The following 3 pictures shows what happens:

corona-physics-ray-cast

Normally, the ray (indicated by the white line) casts all the way through, starting from the left and casting down to the right. When the crates fall and obstruct obstruct the ray, you can see the ray turns red which means it was obstructed; here, the red just shows you how far the ray would normally cast if there were no obstruction.

Plugins

Here’s where we are at with plugins. We are very close to seeding this out. If we’re lucky, possibly this week.

We’ve been doing many checkins to add some polish before we begin beta testing this. We’ve got iOS and Android builds working and are testing out various corner cases.

The way this works is you will specify the plugins you are using in your build.settings file, something along the lines of the following:

plugins = { ["CoronaProvider.ads.admob"] = { publisherId = "com.coronalabs" } }

Then when you do a build, our build server will do a bunch of stuff to integrate the plugin with the app. Big thing to notice is you don’t have to do any clumsy installs.

We’re also doing something similar in the Corona Simulator so that desktop versions of the plugins can be downloaded. These plugins could be just stubs so your project can run, or if there’s a desktop build of the plugin, they’ll actually do the same thing they do on device.

* * *

The expansion file support and physics raycasting features are available to subscribers today via Daily Build 1082.

They’ll become available to Starter folks in the next public release. If you can’t wait until then, upgrade today and take advantage of our $349/year pricing before it goes up on May 1, 2013.

  1. Whats the difference between plugins and include files ?

    Or can plugins be written in other languages, like obj-c ?

    If they can be written in other languages, what is the point of Enterprise ?

    Dave

    • Yes, the plugins are written in native languages like Obj-C or Java.

      The plugins that are available to the SDK will be ones hosted on our server. Because of that we will be curating them. Initially, these will be plugins from companies offering 3rd party services. Later, we would like to open this up so that individuals could sell their plugins in a marketplace.

      With Enterprise, you’re free to write your own plugins or use someone else’s, so it gives you complete flexibility.

      • Ah right I get it.

        I was thinking we could add our own plugins, make sense to keep it locked down.

        So if anyone is writing plugins, can I request –

        FaceBook – Being able to do everything that is possible in the graph API
        Parse – Cover all the stuff you can do in the API

        Dave

  2. @Michael: Ray casting is like sweeping a point thru space.

    The inputs are a start point (“A”) and an end point (“B”). The result, if any, are the collision points along the path from “A” to “B”.

    In other words, you provide a line, and the physics system gives you back a list of objects that the line collided with.

    The input is always a line, but the output, if any, can be any type of objects.

  3. Raycasting – Awesome!

    Thank you so very much. This is a feature that I’ve wanted for some time. Having it integrated in the SDK will save me lots of CPU cycles (over doing it in Lua.)

    Expansion Files – Very cool too.

    I’m sure a lot of folks are excited to see this come out, especially folks with lots of content and those who make business Apps.

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>