• Advertisement
Sign in to follow this  
  • entries
    97
  • comments
    6
  • views
    2289

About this blog

Announcements, stories and industry interest posts for users of Corona, the 2D game engine from Corona Labs.

Entries in this blog

Welcome to this week’s From the Forum. In this post, we highlight a few Corona Community Forums posts that cover important topics.

HTML5 server awesomeness

Corona mega-developer @develephant has gone full overdrive creating some great tools to go along with HTML5 builds. In his latest creation, he’s created a plugin to let HTML5 builds work with his Coronium Core server product. In addition he’s created some command line tools to speed up your HTML5 development. Check out the goodness here!

Converting numbers in Lua

Most people work in Lua with base 10 or decimal numbers, i.e. everything you do is with digits between 0 and 9. But there are other times where you might want to display numbers in different formats, such as hexadecimal or base 16 numbers where digits range from 0 to F. In this thread, @roaminggamer addressed an easy way to convert Lua numbers to other representations other than normal numbers.

Things that go “Bleep”

In this post, a Corona user was getting odd sounds every time Corona generated a run-time error. After a little investigating, the sounds were being generated by the operating system. On Windows, it’s standard for apps with errors to play a system sound. On macOS a notification is generated. Both of these sounds are controlled by the operating system. The solution? This forum post has you covered!


Do you have a particular forum thread that was helpful for you? Let us know about it! Email support@coronalabs.com, put FTF: and the forum title in the subject, and include the URL in the email. We will consider adding it to an upcoming edition of From the Forum.


View the full article

HTML5_Badge_512-150x150.pngOur HTML5 team has been quite busy and HTML5 builds are progressing nicely. There is a recent change that we hope you will find exciting. We’ve found a way to get HTML5 builds down to around 1 megabyte. Of course the more art and audio assets you add, the more your app will grow in size.

We’ve accomplished this by temporarily removing the SQLite3 and socket modules and compressing the engine code. Starting with daily build 2018.3055, these modules have been removed for HTML5 builds. We will bring them back in a future build as optional modules.

If you haven’t given HTML5 a try, now’s a good time to start experimenting with it. We have even simplified testing. Instead of starting up your own local web server, we do that for you with the use of our Live Server. Simply build your HTML5 app and it will open in your default web browser automatically.

As always, while it’s in open beta, please report any issues you run into in our HTML5 forum.


View the full article

Welcome to this week’s From the Forum. In this post, we highlight a few Corona Community Forums posts that cover important topics.

Spamming buttons

Sometimes repeated button presses are okay, but frequently they’re not. How do you defend against them? In this thread, our developer community chimed in with some different ways to prevent rapid button presses.

Wow, that was fast!

We just announced HTML5 builds in open beta this week and our ever-diligent community developer @develephant has already started creating useful plugins. Check out this thread to get an easy to use Cookie Set/Get/Delete plugin.

Daily quests?

Many games offer players daily tasks to complete. That’s a great way to get players to engage with your app daily and keep them involved with your app. But how do you implement them? Learn a couple of ways of approaching the task in this thread.


Do you have a particular forum thread that was helpful for you? Let us know about it! Email support@coronalabs.com, put FTF: and the forum title in the subject, and include the URL in the email. We will consider adding it to an upcoming edition of From the Forum.


View the full article

HTML5_Badge_512-150x150.pngHTML5 opens up some great opportunities for developers and one of those is plugin development using JavaScript.

While most Corona developers will only use Lua in a cross-platform manner like they are currently using, it’s super easy to add JavaScript features to extend your app.

You need two things: a .lua file that tests to see if your platform is HTML5 or some other platform and the actual JavaScript .js file. If you detect you are an HTML5 build, then you require the JavaScript plugin, else provide default functions that prevent those calls from creating errors for the non-HTML5 builds. Consider this code:

--
-- myplugin.lua
-- Copyright (c) 2018 Corona Labs Inc. All rights reserved.
--

local lib
local platform = system.getInfo("platform")
if platform == 'html5' then

    
    -- use native JS plugin

    lib = require("myplugin_js")
else

    -- wrapper for non web platforms

    local CoronaLibrary = require "CoronaLibrary"

    -- Create stub library for simulator
    lib = CoronaLibrary:new{ name='myplugin', publisherId='com.mydomainname' }

    -- Default implementations
    local function defaultFunction()
        print( "WARNING: The '" .. lib.name .. "' library is not available on this platform." )
    end

    lib.set = defaultFunction
    lib.get = defaultFunction
    lib.addEventListener = defaultFunction
end

-- Return an instance
return lib

If you’re on HTML5, it includes the JavaScript plugin. If not, it simply lets the app know the function isn’t available.

Plugins have to have a unique namespace and that’s accomplished by this line in the .lua file:

lib = CoronaLibrary:new{ name='myplugin', publisherId='com.mydomainname' }

Obviously if you intended to publish this to the Corona Marketplace, or if you want to use multiple plugins in your code, the name needs to be unique. Change “myplugin” to a proper name. Then set publisherId to the reverse domain name you use to publish with. For instance, Corona Labs made plugins would have a publisherId of “com.coronalabs“.

Then you create a plugin with the same name except with an _js as part of the name. For instance if your plugin is “awesometimer.lua“, you would create “awesometimer_js.js“. This file will contain your JavaScript code. Here is an example:

//
// myplugin_js.js
// Copyright (c) 2018 Corona Labs Inc. All rights reserved.
//

// JS plugin is an child object of 'window'
window.myplugin_js =
{
    // all the 1st-level functions are available to call from Lua
    // so 'get' and 'set' functions are available to call from Lua
    data:{},

    // function may use up to 10 args; use Object or Array if you want to pass more than 10 args
    // arg maybe a Number, String, Boolean, Array or Object
    set: function(bool_arg, number_arg, string_arg, table_arg, array_arg)
    {
        console.log('js set() is called');
      
        var data = window.myplugin_js.data;
        data.bool_arg = bool_arg;
        data.number_arg = number_arg;
        data.string_arg = string_arg;
        data.table_arg = table_arg;
        data.array_arg = array_arg;

        // Lua callback
        // you can pass to Lua a Number, String, Boolean, Array or Object args
        this.dispatchEvent({ name: 'onData', data: {
          arg1: bool_arg, arg2: number_arg, arg3: string_arg, arg4: table_arg, arg5: array_arg
        }})

        console.log(typeof(bool_arg));    
        console.log(typeof(number_arg));    
        console.log(typeof(string_arg));    
        console.log(typeof(table_arg));    
        console.log(typeof(array_arg), array_arg.length);    
    },

    get: function()
    {
        var data = window.myplugin_js.data;
        console.log('js get() is called', data);
        return data;
    }

};
console.log('myplugin_js is loaded');

We of course can’t teach you JavaScript in this tutorial and there are plenty of examples on the Internet to see. The main point is that you add your plugin to the JavaScript window object, provide your functions as part of the plugin namespace and add your methods to your plugin object.

Then in your .lua modules, i.e. main.lua, you can require the plugin and call the functions as necessary.

--
-- main.lua
-- Copyright (c) 2018 Corona Labs Inc. All rights reserved.
--
-- A sample of using JS native plugin for Corona

local widget = require( "widget" )
local json = require( "json" )
local myplugin = require("myplugin")

local label = display.newText( "output", 50, 220, native.systemFont, 16 )
label.x = display.contentCenterX
local data = native.newTextBox(160, 360, 320, 250)
data.isEditable = false

-- JS event listener.
local function pluginListener( event )
    local str = json.prettify(event)
    str = 'got event from JS plugin:\n' .. str
    print(str)
    data.text = str
end

local setData = function()
    -- call JS native plugin
    -- arg value maybe boolean, number, string, table
    --
    local bool_arg = true
    local number_arg = 123
    local string_arg = 'abc'
    local table_arg = {key1='key1value', key2={1,2,3}}
    local array_arg = {1,2,3,4,5,6,7}
    myplugin.set(bool_arg, number_arg, string_arg, table_arg, array_arg)
end

local getData = function()
    -- call JS native plugin
    local tbl = myplugin.get()
    if tbl then
        local str = json.prettify(tbl)

-- Important: use index-debug.html if you want to see print output
        print('Data: ', str)

        data.text = str
    end
end

-- event listener, it's an option
myplugin.addEventListener(pluginListener)

widget.newButton { onRelease = setData, left=60, top=60, width=200, height=50, label = "Save Data in JS", labelColor = { default={ 1, 1, 1 }, over={ 0.6, 0.6, 0.6 } } }
widget.newButton { onRelease = getData, left=60, top=120, width=200, height=50, label = "Read Saved Data", labelColor = { default={ 1, 1, 1 }, over={ 0.6, 0.6, 0.6 } } }

--

This example shows you how to call functions to get data, set data as well as dispatch events from JavaScript back to your Lua code.

You can download the complete sample project from our GitHub repository. If you have questions please reach out on our HTML5 forum!


View the full article

HTML5_Badge_512-150x150.pngGood news! Today Corona is pleased to announce that HTML5 builds are in “Open Beta”. That means starting with daily build 2018.3238, you can now have Corona output a folder with the various HTML files and content necessary to run your Corona game or app in a web browser.

Simply upload the entire folder to your web server and access that folder through your HTML5 compatible browser. Due to JavaScript security restrictions, HTML5 builds only work if they are served from a web server.

If you have Python installed you can test locally by starting a web browser on your computer and accessing your HTML5 build folder in your browser. The easiest way to get it served on macOS is to drag your build folder on to Terminal.app then paste python -m SimpleHTTPServer into the terminal window. Then open http://localhost:8000/index.html in you web browser. For Windows, with Python installed, run cmd.exe and then use the cd command to change directories to your build folder and run the same Python command and then open your browser to the above URL. If you need to see the console log, please open http://localhost:8000/index-debug.html instead.

If your app makes calls to web servers, using API’s like network.request(), because of JavaScript cross-domain scripting rules, you can’t directly call REST type APIs. Instead you will need to write a local web script on the same domain that will make your REST API calls and then echo the returned data back to network.request().

We have opened a forum to discuss HTML5 builds. Please discuss your observations in the HTML5 forum.

Because this is still a beta product, we don’t recommend releasing your game the public yet. If you do, you should heavily test your game or app before releasing it. HTML5 build behavior is subject to change as we continue to work to bring it to a release status.

Most all current Corona-made and third-party plugins are not HTML5 compatible at this time. Many of our ad providers do not offer HTML5 SDK’s for us to build plugins against. Other plugins will take time for us to build HTML5 compatible versions where possible. For plugins in our Marketplace built by our community developers, it will be up to them to offer HTML5 plugins where possible or update existing plugins with HTML5 stubs where not possible. A tutorial on creating HTML5 plugins is coming soon.

This is a huge milestone for Corona. It will open the door for you to reach more consumers. It will make it easier to show your work off to early testers, prospective clients and more. Even game jams will rock even more. Our goal is to get this out of beta by the next public release where we will be including some other great features.

Please let us know your thoughts in our HTML5 forum.


View the full article

Welcome to this week’s From the Forum. In this post, we highlight a few Corona Community Forums posts that cover important topics.

Physics and groups

Groups are a wonderful way to organize your display objects but sometimes this can create issues for developers using physics. @roaminggamer and @horacebury contributed to a thread that explains the problem and offered up some solutions.

Loading large scenes

Doing tasks in Corona can take time. When you do many tasks in a row, your user interface will block. This can make loading large scenes appear as if your app has frozen. A standard tactic would be to show a progress bar. However, Lua is a single-threaded language that can make it difficult to avoid blocking and allow your progress bar to update. In this thread, several Corona developers jumped in and offered suggestions on how to manage loading a large number of assets.

Making an accordion widget

There are many different ways to present data to users. A popular web technique is an accordion style display where you click on an item and it expands to show more information. Building this in Corona can be a bit tricky since you need to know the height of other objects to move them around to open space for the added info. In this thread, our wonderful community of developers joined to solve the problem.


Do you have a particular forum thread that was helpful for you? Let us know about it! Email support@coronalabs.com, put FTF: and the forum title in the subject, and include the URL in the email. We will consider adding it to an upcoming edition of From the Forum.


View the full article

We have made a change to our feedback site where feature requests are made.

Before, you had 15 votes that you could spread among the items you felt were the most important to you. Now, vote limits are gone. When you click the “Vote” button, you will cast a single vote for the feature request. Clicking again will undo your vote. With this change, you can vote on any number of items.

http://feedback.coronalabs.com


View the full article

Biohazard-2-150x150.pngSome of our Microsoft Windows customers who run a couple of virus/malware checking software have noticed that our installer was testing positive for a Other:Malware-gen [Trj] alert. Avast and AVG were flagging this. ESET and Fortinet reported a PUP or “potentially unwanted program” for a web-bar they detected. The other 51 virus tools reporting to virustotal.com gave Corona a clean bill of health.

What was the cause of these? Corona’s installer included a file named dma.dll. This file was part of the DeskMetrics library, an analytics service we used to help collect crash reports. The dma.dll file is actually harmless, but to remove any doubt, we have removed this file from our Windows installer. This change goes live with daily build 2018.3226.

If you’re concerned about the presence of this file in our installer, please update to 2018.3226 or later.


View the full article

Welcome to this week’s From the Forum. In this post, we highlight a few Corona Community Forums posts that cover important topics.

Glitches in Physics

The original poster wanted to move an object around another like a moon orbiting a planet but the pivot joints were creating glitches in movement. Corona super programmer @davebollinger jumped in and provided some really great advice using various joint types to solve the problem in this thread.

Cleaning up display objects

Everyone wants to avoid memory leaks and make sure their app cleans up after itself. But how memory is released can be confusing. When are you required to nil an object? When does the system do it for you? What if it’s in a table? Multiple Corona developers jumped into this thread to clean up some misconceptions about cleaning up memory.

More Rotation

Another thread about orbiting: in this case, the poster was asking how to manage mass with the rotation and have potential escape velocity. @roaminggamer came to the rescue with some great examples including videos to help explain the process.


Do you have a particular forum thread that was helpful for you? Let us know about it! Email support@coronalabs.com, put FTF: and the forum title in the subject, and include the URL in the email. We will consider adding it to an upcoming edition of From the Forum.


View the full article

After a lot of hard work, Corona is happy to announce the release of the StartApp plugin!

Now, app publishers who use the Corona framework to build their mobile applications will now be able
to easily integrate StartApp’s SDK to monetize their Corona apps.

730x300_2.jpg

StartApp is an insight-driven mobile technology company that enables partners to turn data into fulfilling mobile moments. By creating innovative ways of exploring mobile users’ intents and behaviors, and of being smarter about responding to these factors, we help our partners optimize and better execute their strategies.

Corona is excited to now enable its developers to monetize using StartApp SDK, ranked as the 3rd most popular monetization SDK behind only AdMob and Facebook Audience Network, according to SDK analytics firm Mobbo with over 1 Billion MAUs, over 400,000 app partners.

Not yet a using StartApp monetization plugin? Start using it now!


View the full article

GameEdition512-150x150.pngThere are some great resources available on the Internet for just about everything. Making computer games is no exception. Sometimes we come across a great resource that we think you might benefit from.

The site IT Hare offers up their Programming Guide For Video-Gamers. This guide contains links/bookmarks to many other resources for game making, broken into development topics and career topics.

Thanks to Sarah A. from San Diego, CA, an aspiring game developer, for finding this resource for us. It’s a great example of the community helping each other. If you come across great resources that would benefit our community just drop an email to support AT coronalabs.com.


View the full article

If you haven’t peeked into the Corona Marketplace recently, it now offers dozens of plugins and assets, from art packs to audio tracks to useful utility plugins. Periodically, we will highlight a few exciting products which can help you develop your dream app using Corona.

Halloween Skeleton Game 2D Character Sprite

halloween-sprite-icon-125x71.jpgHalloween may seem like it’s a long time off, but now is a good time to start planning your fall games out. This collection of animated sprites for a pumpkin hero can get you started. Check it out!

Synthwave Vol.2

synthwave-logo-125x125.jpgSynthwave Vol.2 is a collection of sci-fi sounds from Nocturnal Animals, including music and sound effects that can be used in a variety of games. The pack contains 4 music tracks and 20 sound effects.

Progress Ring

progressRinglogo-125x125.pngThe Progress Ring plugin from Jason Schroeder allows you to add customizable circular progress rings to your projects. They can be used for anything from health bars to timers to business apps. They can be added to your project in as little as one line of code.

 


View the full article

Beasts Battle 2 is the follow up to Beasts Battle from Greenolor Studio, primarily by Sergey Pomorin in Kaliningrad, Russia. Inspired by classics like Heroes of Might and Magic and the King’s Bounty series, Beasts Battle 2 is a turn-based strategy game that operates in one of two game modes: map mode where the player explores the world and battlegrounds mode in which each battle occurs.

During game play you will visit 10 original locations with colorful and diverse battlefields where you will encounter over 40 enemies that will challenge you with special abilities. You will collect unique artifacts, spells and build up your player’s skills while completing the main quests and additional side quests as you explore the world.

 

bb2_1920x1080_3-1024x576.jpg
bb2_1920x1080_4-1024x576.jpg

Beasts Battle 2 is available for Windows desktop through Steam for $9.99.

share_steam_logo-300x300.png

 

 


View the full article

Welcome to this week’s From the Forum. In this post, we highlight a few Corona Community Forums posts that cover important topics.

Building a Reversi-like game

Board games like Reversi (or as it’s trademarked Othello) are a common target for computer games, but how do you go about making one? The original poster was curious how to implement it in Corona. Long time Corona developer xnailbender jumped in and provided some board game handling code in the thread.

Going pixel-perfect

There are too many different devices to make pixel-perfect games but that didn’t stop Corona mega-developer Dave Bollinger from trying. He’s been publishing a developer blog and sharing it with the community in this forum thread.

Pseudo-global trick or not?

Code organization is important and breaking your code up into modules is a way to do so; however, it can become cumbersome to include a bunch of modules in each other. In this thread, several developers jumped in to offer suggestions on how to make this process more manageable.


Do you have a particular forum thread that was helpful for you? Let us know about it! Email support@coronalabs.com, put FTF: and the forum title in the subject, and include the URL in the email. We will consider adding it to an upcoming edition of From the Forum.


View the full article

In 2015, Kansas City developer Kevin Bradford and art director Luke Lisi put out a beautiful puzzle game The Guides. The Guides received high accolades from many including Apple’s “15 Most Mind-Bending Puzzlers” and CNET’s “Best Mobile Games of 2015“.

The team has followed this hit up with a sequel The Guides Axiom.

It has over a million downloads and has been featured in Apple’s “New Games We Love” category and Google Play’s “New Indie Highlights” category just after its release in September, 2017.

It’s a beautiful, well-crafted game that provides the player various puzzles to solve and ciphers to decode, presented in unique and challenging ways. The game contains over 50 meticulously-designed challenges with more on the way. It also features nonlinear game play allowing you to explore the game at your pace and interest.

axiom1-169x300.jpgaxiom2-169x300.gifaxiom3-169x300.png

Luke and Kevin hate “pay to win” games, so they have set up a unique support system based on how much you like or love the game as well as being able to buy “hacks” to help when you get stuck. The Guides Axiom is available on Apple’s App Store, Google Play and Amazon as a free download.

App-Store-Icon_200x200_badge.png google-play-badge.png amazon-icon-badge-large-200.png


View the full article

appodeal-3.pngMany users love the Appodeal plugin. Having access to many ad providers in one place, getting high fill rates from the best advertisers is an awesome thing. However; that comes at a price. The plugin is large… It has to include the SDKs for every provider in the plugin.

Today we are announcing a new beta version of the plugin. This new version is modular. After you include the base plugin in your build.settings, you then include the adapters for the various ad types that are important to you in your build.settings allowing you to customize your Appodeal experience. Of course you can use every ad type but doing so will have the same size requirements as the legacy Appodeal plugin.

To use this new plugin, you would alter your build.settings to something like:

settings =
{
    plugins =
    {
        -- Base
        ['plugin.appodeal.base'] = { publisherId = 'com.coronalabs' },
        ['plugin.appodeal.AmazonAds'] = { publisherId = 'com.coronalabs' },
        ['plugin.appodeal.GoogleAdMob'] = { publisherId = 'com.coronalabs' },
        ['plugin.appodeal.TwitterMoPub'] = { publisherId = 'com.coronalabs' },
        ['plugin.appodeal.StartApp'] = { publisherId = 'com.coronalabs' },

        -- Banner
        ['plugin.appodeal.AppLovin'] = { publisherId = 'com.coronalabs' },
        ['plugin.appodeal.FacebookAudience'] = { publisherId = 'com.coronalabs' },
        ['plugin.appodeal.Flurry'] = { publisherId = 'com.coronalabs' },
        ['plugin.appodeal.InMobi'] = { publisherId = 'com.coronalabs' },
        ['plugin.appodeal.MyTarget'] = { publisherId = 'com.coronalabs' },
        ['plugin.appodeal.MillenialMedia'] = { publisherId = 'com.coronalabs' },
        ['plugin.appodeal.Yandex'] = { publisherId = 'com.coronalabs' },

        -- Interstitial
        ['plugin.appodeal.AdColony'] = { publisherId = 'com.coronalabs' },
        ['plugin.appodeal.AppLovin'] = { publisherId = 'com.coronalabs' },
        ['plugin.appodeal.Chartboost'] = { publisherId = 'com.coronalabs' },
        ['plugin.appodeal.FacebookAudience'] = { publisherId = 'com.coronalabs' },
        ['plugin.appodeal.Flurry'] = { publisherId = 'com.coronalabs' },
        ['plugin.appodeal.InMobi'] = { publisherId = 'com.coronalabs' },
        ['plugin.appodeal.IronSource'] = { publisherId = 'com.coronalabs' },
        ['plugin.appodeal.Mobvista'] = { publisherId = 'com.coronalabs' },
        ['plugin.appodeal.MyTarget'] = { publisherId = 'com.coronalabs' },
        ['plugin.appodeal.StartApp'] = { publisherId = 'com.coronalabs' },
        ['plugin.appodeal.MillenialMedia'] = { publisherId = 'com.coronalabs' },
        ['plugin.appodeal.Ogury'] = { publisherId = 'com.coronalabs' },

        -- Rewarded Video
        ['plugin.appodeal.AdColony'] = { publisherId = 'com.coronalabs' },
        ['plugin.appodeal.AppLovin'] = { publisherId = 'com.coronalabs' },
        ['plugin.appodeal.Chartboost'] = { publisherId = 'com.coronalabs' },
        ['plugin.appodeal.FacebookAudience'] = { publisherId = 'com.coronalabs' },
        ['plugin.appodeal.Flurry'] = { publisherId = 'com.coronalabs' },
        ['plugin.appodeal.InMobi'] = { publisherId = 'com.coronalabs' },
        ['plugin.appodeal.IronSource'] = { publisherId = 'com.coronalabs' },
        ['plugin.appodeal.Mobvista'] = { publisherId = 'com.coronalabs' },
        ['plugin.appodeal.MyTarget'] = { publisherId = 'com.coronalabs' },
        ['plugin.appodeal.StartApp'] = { publisherId = 'com.coronalabs' },
        ['plugin.appodeal.Unity'] = { publisherId = 'com.coronalabs' },
        ['plugin.appodeal.Vungle'] = { publisherId = 'com.coronalabs' },
        ['plugin.appodeal.Tapjoy'] = { publisherId = 'com.coronalabs' },
    },
}

The example above includes all the entries you can use. If you want a lighter footprint, simply exclude the ad types you don’t need.

The legacy Appodeal plugin will stay in place for now, but eventually this model will become the primary use of the plugin. We will manage a two-plugin model going forward, a “release” model and a “beta” model. For now, the legacy plugin is the “release” version and modular version is the “beta” version.

We encourage people to try the modular version and provide us feedback on the plugin.


View the full article

Icon_Resources_Roadmap.pngOur engineering team would like to take this opportunity to share with the community our development goals for the year. Product roadmaps can be unpredictable. While items may be added, removed or postponed, the following roadmap should give you a general sense of what our plans are, with the understanding that they are subject to change without notice.

These are estimated start dates. In most cases, we hope to start and complete the items during their listed quarter, but some items are large projects and will span multiple quarters. Also there is no implied order for each quarter — some items toward the end of each quarter list may be finished before items near the beginning are even started.

Q1 2018

  • Continue working on implementing HTML5 builds
  • Better support for emitters when added to display groups
  • Android API level 27 support
  • New Android sound subsystem based on modern APIs
  • Improve Appodeal plugin
  • Auto-click masks
  • Marketplace 2.0
  • Animation plugin
  • Rebuild internal statistics system
  • Open source Lua frameworks like timer.* and transition.*

Q2 2018

  • Improve Live Builds by adding console logging
  • HTML5 to public beta
  • Support arm64 architectures
  • Investigate Linux builds
  • Move the Android build system to Gradle based
  • Move the Plugin build system to Gradle based
  • Investigate wireless install for iOS, tvOS
  • Revenue-share version of the AdMob plugin

Q3 2018

  • Explore Windows Universal Builds
  • Amazon IAP improvements
  • Per-vertex meshes coloring
  • Optimize touch events.
  • Tile engine support
  • Text rendering plugin

Q4 2018

  • Open Source efforts
  • Explore the Nintendo Switch platform
  • iOS Offline builds from Corona Simulator

Corona is a tool for you and at Corona Labs we value your feedback. Feature requests are recorded and tracked at http://feedback.coronalabs.com and we look forward to you visiting that site and voting on features that are important to you. We will continue to evaluate features requested by Corona developers and we may alter the roadmap as we get more feedback.


View the full article

Welcome to this week’s From the Forum. In this post, we highlight a few Corona Community Forums posts that cover important topics.

A Diagonal Slider?

The original poster wanted to make a diagonal slider. Several community members came up with possible solutions, but @starcrunch came up with the math to make everything work in this thread.

Dropping FPS

FPS or Frames Per Second is how fast your app’s screen updates. The faster the FPS the smoother the game looks. In this thread, the original poster got a lot of advice on everything from good FPS monitoring code to managing objects.

Touch and hold

Corona touch events let you know when they begin and end or if the touch moved, but they don’t generate continuous events that the object is still being touched. Long time Corona developer @Glitch Games came to the rescue with an answer on how to manage knowing if a button was being held in this thread.


Do you have a particular forum thread that was helpful for you? Let us know about it! Email support@coronalabs.com, put FTF: and the forum title in the subject, and include the URL in the email. We will consider adding it to an upcoming edition of From the Forum.


View the full article

There have been several requests for a standalone self-hosted plugin plan. Self-hosted plugins are a method for studios who are making their own native plugins to create plugins, yet still use the simulator for building their apps. Normally if you need to use a custom plugin, you would have to use native builds to create and test each build.

Previously, the self-hosted plugin feature was part of the Unlimited Enterprise package.. Once we made native builds free, this feature was added to the Priority Plus Support plan. We have now made a standalone version of the self-hosted plugin plan. This feature is now available for $499/year and can be purchased in the Corona Marketplace.

Now studios can access this feature without the need for the additional support plan.


View the full article

Corona’s engineers have slipped a couple of really cool features into recent daily builds that may have not caught your attention.

Emitter Particles and Groups

Previously, the particles emitted from an emitter became part of the stage until they expired. This would create problems with the relative positioning of the particles if your app needed to move the emitter. If you moved the emitter as part of a parent group, it didn’t create a natural look. Emitters can now have their particles be part of the parent group the emitter is in. This was added to daily build 2018.3199.

emitter.gifTo use this feature, you can set emitter.absolutePosition to the parent group of the emitter. Previously you had the options of true or false to determine if the positioning was absolute or relative to the emitter. By passing a group, it’s now relative to the group. You can download a sample project to see the feature in action.

Controlling iOS system gestures

On iOS when you swipe down from the top, it shows the Notifications panel. When you swipe up, you get the control panel. If you have UI elements in your game that are near the top of bottom in areas that are likely to result in swipe gestures, it would be nice to be able to control that. Now you can! Starting with daily build 2018.3193, you can use native.setProperty( “preferredScreenEdgesDeferringSystemGestures”, true ) to have those swipes just show a swipe arrow and a second swipe to activate the panels.

We have more great things in the pipeline so watch this space for news and updates.


View the full article

Welcome to this week’s From the Forum. In this post, we highlight a few Corona Community Forums posts that cover important topics.

Deriving points

Math is important! In this thread, the poster knows two points on a line but wants to calculate points along a circle for which that line is a radius. Several of our brightest developers jumped in with multiple math, code and working examples.

Wavy movement

Curves have always challenged developers regardless of platforms. Moving your enemies in a straight line… easy peasy… Moving them in a wave takes a bit more math. This thread contains some great examples on moving objects along a wave.

Controlling body movement

The poster of this thread noticed that when two physics objects interact, one object that was expected to stay in place had some slight movement. The problem was analyzed and a solution offered.


Do you have a particular forum thread that was helpful for you? Let us know about it! Email support@coronalabs.com, put FTF: and the forum title in the subject, and include the URL in the email. We will consider adding it to an upcoming edition of From the Forum.


View the full article

Elliot Pace at Epace Games LLC can put a feather in his cap. His game Zombie Guard has broken the one million download mark, a dream for almost every app developer. The game also earned the Google Play Editor’s Choice selection!

In Zombie Guard, you defend your city from an onslaught of zombies. You pick up weapons, power ups and other equipment to boost your abilities. You can also get other allies to help and gain even more loot.

zombie_guard_ss.jpg

According to Pace, this is by far his most successful game. Between ads and in-app purchases, he’s able to travel the world as a digital nomad. Zombie Guard is free and available from both Google Play and Apple’s App Store.

App-Store-Icon_200x200_badge.png google-play-badge.png


View the full article

Welcome to this week’s From the Forum. In this post, we highlight a few Corona Community Forums posts that cover important topics.

Multiple variables for strings

The original poster was curious how to have multiple variables in a string. Our community developers came up with multiple solutions in this thread.

Aligning text in a text field

The question asked in this thread is how to cause a native.newTextField to show the beginning of the string if the text entered was too long. Learn how to force the string back to the beginning.

Creating Custom Rankings

Games need leaderboards, but sometimes developers need their own unique stats to rank more than score, time, etc. In this thread options are explored to cover various ways to manage one’s own rankings.


Do you have a particular forum thread that was helpful for you? Let us know about it! Email support@coronalabs.com, put FTF: and the forum title in the subject, and include the URL in the email. We will consider adding it to an upcoming edition of From the Forum.


View the full article

Triogical is a puzzle game from Jealogic, a two person studio located in France. The game is based on three wizards with different powers that can collect gems, move objects and destroy objects. You move from puzzle to puzzle solving each one using a combination of the wizards powers.

The game features several castles to explore, with about fifty levels each. Your goals is to try and clear each level in as few moves as possible to collect the most stars. Earn enough stars to unlock other castle islands. Each castle has even tougher objects and more ingenious puzzles to solve.

ss01-1024x607.png

Triogical is available on Apple’s App Store and Google Play for free and contains in-app purchases.

App-Store-Icon_200x200_badge.png   google-play-badge.png


View the full article

1280x720.-1024x576.jpgCorona Labs would like to take a brief moment to wish everyone worldwide a Happy Holidays. We have had a great year and have added many new features to the Corona suite of tools:

  • Make Corona Enterprise free by merging it with Corona SDK into one product (Corona)
  • Made Corona Native available for Windows developers
  • Paid Facebook Audience Network (FAN) plugin and AppLovin without revenue share, to complement the free FAN and AppLovin plugins
  • Make the Welcome Window more useful with better access to the Marketplace, documentation, and more
  • Update our website
  • Modernize Corona Simulator for Windows
  • Add support for CoronaBuilder to download plugins for native users
  • Calendar plugin
  • Begin working on Marketplace 2.0
  • Resume HTML5 development
  • Improve tvOS support (add missing features like IAP and Game Center support)

We are happy that you’ve chosen Corona as your favorite development tool, which makes us a worldwide company. Our team is located in various countries as well, and as such we will be taking some much needed time off to spend with family and friends. We may not be able to respond between December 25 and January 8.

We wish you the very best for the rest of 2018 and a very successful 2019!


View the full article

Sign in to follow this  
  • Advertisement