Advertisement Jump to content
  • Advertisement


  • Content Count

  • Joined

  • Last visited

Community Reputation

113 Neutral

About CoronaRob

  • Rank

Personal Information

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Sphere Game Studios has another hit on their hands with their new title: Merge City which is currently on Google Play’s “Indie Corner” in the “Our Indie Picks” section. Merge City is a blend of city building and merge gaming, similar to the game Merge Planes. The game play is simple: You merge two level 1 buildings to unlock a level 2 building. There are 30 different buildings to unlock in two neon-inspired worlds. You can visit other players from the leaderboard and compare your cities to theirs. Merge City is free to play with in-app purchases and is available on both the Apple App Store and Google Play. Check it out! View the full article
  2. After more than nine years of developing and evolving the Corona game engine, Corona Labs is releasing its technology to open source. It’s a move we’ve been planning for a few years now, with the goal of making the engine development process more transparent, and to empower the community to directly impact future growth and potential. As part of a series of steps on a longer evolution journey, entrusting Corona to the community is the surest way to quickly respond to market shifts and changes, ensuring Corona stays relevant and valuable to all mobile app developers. “The transition of Corona to the open source model of development has been our long-term vision since Corona Labs was acquired by Appodeal in 2017. We believe that this move will bring transparency to the development process, and will allow users to contribute features or bug fixes to make the project better for everyone,” said Vlad Sherban, product manager for Corona Labs. The open source model will bring more visibility and flexibility to the development process by allowing visibility into exactly what the engine team is working on and where the project is going, and by contributing valuable new features that will help spearhead Corona to the next level. Additional benefits for businesses include the potential to acquire a commercial license for source code and customize the engine for specific commercial projects. “Corona Labs will continue to have a dedicated team and infrastructure to support our flourishing plugin ecosystem and infrastructure, as well as to keep up to date with the ever-changing requirements and updates coming from applications stores. Powered by the new open source model and supported by the development of new features and bug fixes will make Corona more community driven — but not without our help and guidance. Ultimately, going open source will provide confidence in the future of the engine and an opportunity to grow community involvement in engine development,” said Vlad Sherban, product manager for Corona Labs. Details Most parts of Corona’s code will be open sourced except for some plugins, the Corona Marketplace,, and the build infrastructure. This is not a final or exhaustive list as the team may open source even more as we move forward. More about Corona open source can be found on the FAQ page. Licenses Corona will be dual-licensed under both commercial and open source licenses. The open source license is the GNU GPLv3 license, and commercial license will be available upon agreement with Corona Labs. You can download the Corona source code under the GPLv3 license and build your games and apps, however, those games have to be distributed under the GPLv3 license, i.e you have to make your source available. Games and apps based on the open source distribution of Corona have to be distributed using the same license (GPLv3). You can download the Corona source code, negotiate a commercial license agreement with Corona Labs, and build a version of Corona that has a custom feature. You can then distribute your games and apps without opening your own source. About Corona Corona is a free, cross-platform framework ideal for creating 2D games and apps for mobile devices, desktop systems, TV platforms and the web. It is driven by the easy-to-learn Lua language, over 1,000 built-in APIs and plugins, and Corona Native extensions (C/C++/Obj-C/Java). The Corona engine has been updated with HTML5 and Linux (alpha-version) building during 2018 and celebrated our 9th anniversary from the date of the first release. You can find the full source code on GitHub. Contacts: View the full article
  3. CoronaRob

    Corona is now 100% analytics free!

    Corona Labs will no longer be collecting any statistics from apps built with daily build 2018.3454 or later. Many developers have asked for this feature and we are happy to do this for the community. As a closed source product, Corona Labs needed to collect basic app usage such as the number of sessions, daily average users, etc. As we transition to an open source product, we no longer need to collect this data. Simply download the latest daily build to take advantage of this new feature! We are looking forward to bring more good news and features soon! View the full article
  4. Ten years ago, two guys got together with a goal to change the mobile development world. A year later, Corona SDK was born. My, how time has flown! Since those first days, we’ve frequently seen developers reach the #1 spot in various app stores. We’ve seen apps that have received millions of downloads, and app developers who have made a full time career out of mobile app development. But for many, it’s also a challenging time. The mobile app market has become over saturated. There has been a race-to-the-bottom in app pricing. New challenges extend up the development toolchain and impact the quality of top app engines. In this evolving industry landscape and these emerging challenges, change is good and necessary. With that in mind, we would like to introduce a big change for Corona. We have decided to get you — the developer community — more involved in Corona’s development, and open-source most of the engine. There are features you want, updates you need, and it’s simply time to get you more involved in Corona’s future. Corona Labs will continue to support the engine and going open source means more transparency to the process. We are certain you will have a lot of questions about how this will work, and as we have more to share, we will be continuously sharing new details with you. Also, feel free to discuss this in our community forums and in the CDN Slack. We’d like to assure you that our goal is to increase transparency by enabling access to the source, and allowing each and every one of you to add your unique contributions to Corona’s future. Any media questions should be directed to the Corona Labs Developer Relations team at View the full article
  5. Corona Labs is pleased to announce the immediate availability of a new plugin: Animations. This plugin was originally planned to be an extension to the existing transition.* library. During the design, there were sufficient changes that warranted it being a new library. We also decided to make this a plugin instead of a core feature to help keep the core lightweight. The plugin is broken into two main categories: tweens and timelines. Tweens are your standard transitions like moving an object over time, fading an object in and out, etc. Tweens have new features including scalable speeds and additional events. Timelines allow you to have more control over what happens to a tween over time. You can set timeline markers that you can advance or return to. You can have events fire when the timeline passes a marker. Since it’s a plugin, you will need to go to the Corona Marketplace and activate it. Next you will need to include it in your build.settings: plugins = { ["plugin.animation"] = { publisherId = "com.coronalabs" }, }, And require the plugin in modules where you will use it: local animation = require("plugins.animation") For normal transitions, the call is now: local myAnimation = object, { x = 200, alpha = 0 }, { time = 1000, onComplete = whenDoneFunction } ) Notice there are two tables involved, the first table is for object parameters, the second one for transition parameters. For timelines, you can now program animations that can contain multiple sequential and/or overlapping tweens, each performing unique tweens on one or multiple objects. Additionally, you can set time markers anywhere across the span of the timeline as jump-to points. For example, you could: local function timelineListener( obj ) print( "Timeline completed; ID: " .. ) end -- Create a timeline object local timelineParams = { tweens = { { startTime=0, tween={ object1, { x=display.contentWidth-50 }, { time=4000, iterations=5, reflect=true } } }, { startTime=1000, tween={ object1, { y=400 }, { time=4000, easing=easing.outQuad } } } }, markers = { { name="marker_start", time=0 }, { name="marker_2000", time=2000 } }, id = "timeline1", onComplete = timelineListener } local newTimeline = animation.newTimeline( timelineParams ) Which will do a transition that moves an object back and forth on the X axis five times over four seconds. Then starting one second in, move the object down the screen over four seconds and setting markers to allow you to go back to the beginning of the timeline or jump to two seconds in. The animation plugin is free to use. You can learn more about the plugin and its new features by reading the documentation for the plugin. Like many of our other Lua based libraries, we are going to go ahead and make this open source so you can download the source code and make your own changes to the library. Let us know what you think about this new great addition to Corona in our Community Forums. View the full article
  6. CoronaRob

    Update on the new GPGS v2 plugin

    Corona Labs would like to update you about our recent plugin for Google Play Games Services. This plugin is known as GPGS v2 and there is a breaking change to be aware of. We’ve worked hard to make it call compatible with the older GPGS v1 plugin, however Google has changed their initialization and login process significantly. We had to make a change that you will need to adapt to so that you can successfully login and know if your app is connected. Simply remove any calls to the gpgs.init() API and instead call gpgs.login() directly: gpgs.login( { userInitiated=true, listener=gpgsLoginListener } ) Where gpgsLoginListener is the name of your function to handle a successful login. If you have questions about the plugin, please joins us in our community forums. View the full article
  7. CoronaRob

    #madewithcorona: Mission Me!

    Periodically a game comes along that breaks out and does something different. Corona Labs would like to introduce you to Mission Me by Sillysoft Games. Mission Me is a lifestyle game. In this game, you get missions that you frequently have to do in real life and may require you to get off of your device for a while to accomplish. As you complete missions, you gain experience and move up to more missions. Example missions include things like “Clean up your desk and add a decoration” or “Say something nice to a cashier”. You start with “Self” missions and move to “Family” missions and so on. This game is engaging and helps you with your own self-esteem. The game is available as a free app on Apple’s App Store and Google Play. Check it out! If you want you can leave feedback to the developer in our Community Forums! View the full article
  8. The concept of game difficulty is always a challenge for developers. Games that are too easy won’t get played. Games that are too hard will frustrate the users and they will quit. You have to find that right balance of difficulty where the player feels challenged yet feels as if they are progressing. To compound matters, no two players are the same. Some need an easier game, others need a lot more challenge. How do you strike that balance? Alex Vu, pixel artist and game designer working for Fine Monkeys, LLC has contemplated the problem, and discusses some solutions in his blog post A Different Approach to Difficulty. In this post, he talks about the problems with simple difficulty modes as well as Dynamic Difficulty Adjustment (DDA) and offers a deep dive into Organic Difficulty and Effectiveness-Ludoaesthetics Spectrum. This advice might just make your game more interesting to your players. Read: A Different Approach to Difficulty View the full article
  9. Corona Labs is pleased to announce that the Steamworks plugin is now open-source. The Steamworks plugin is used by PC and macOS games published to Valve’s Steam service that allows support for leaderboards, achievements, user profile data, and microtransaction support. Now you can download the repository for the plugin and add your own features and extensions to it. You will have to have a Steam developer account to be able to test the plugin. Follow Steamworks documentation (available on Steam’s developer portal) to learn how to enable Steamworks debugging and development for your game. You can get the plugin source at our GitHub repository. You can learn more about the Steamworks plugin in our previous announcement. View the full article
  10. Corona Labs is pleased to announce the immediate availability of a new, updated Google Play Games Services plugin. This plugin in a complete rewrite of the version one of the plugin using the latest GPGS core libraries and dependencies. One of the key reasons for the GPGS v2 plugin, besides staying with modern underlying SDK’s is support for preventing Google rejections for using invalid login scopes. The previous version of the underlying GPGS SDK contained Google Plus login scope which has been deprecated. The new version has this removed. The GPGS v2 plugin should be a drop in replacement for the GPGS v1 plugin. First, visit the Marketplace and activate the plugin, then simply update your build.settings to include the plugin using: settings = { plugins = { ["plugin.gpgs.v2"] = { publisherId = "com.coronalabs", supportedPlatforms = { ["android"] = true, } } } } And where you require the plugin in your lua code: local gpgs = require( "plugin.gpgs.v2" ) This is a completely new version of the plugin and you should fully test your app against the code. If you have questions about the new plugin, please check out our documentation. Join us in the community forums to discuss this new plugin. View the full article
  11. New tutorial! First, we would like to take this opportunity to let you know about a new tutorial on implementing advertising in your Corona apps. The tutorial covers code and common code to implement an ad plugin in your app. You can view it here! Read the Implementing Ads tutorial Monetization best practices A great question was asked in our Community Forums about using in-app purchases (IAP) to turn off advertising. It may seem like a simple idea but there is more to it. When you sell your app for a fixed price, that person pays you once, ever. When you use ads, you get a continuous stream of income as long as your app or game is being used. If someone uses IAP to turn off ads, you get continuous income until they pay for the IAP, then you get the one-time fee and that’s it. For some apps, IAP subscriptions can provide ongoing income, but an app has to be pretty special, with lots of new content to convince users to continuously pay for it. Let’s look at the financial considerations in answering this question. Let’s say that you end up setting the IAP fee to turn off ads at $0.99 (or an initial purchase price with no ads). Because the app stores take 30% of your sales, that means you will make $0.69 from that user when they make the purchase. But the question is: Will you make more from advertising? Using Appodeal as an example and information from Appodeal’s E-Book “Monetizing Casual Games”, banner ads typically pay about $0.43 per thousand banner ads shown. To earn that same $0.69 from app sales, you need to display over 1,600 banner ads to your app user. Assuming your banner ads rotate every 45 seconds, it will take over 1,200 minutes or about 20 hours of view time to earn that same amount of money from the user. Note: eCPM values for the United States and Europe were averaged together from numbers in the e-Book. Banner ads may not be the best way to implement ads. If you’re using other ad forms, like interstitials which pay an average of $4.59 per thousand ads, you need to show about 150 interstitial ads to earn the equivalent purchase income. Note, video interstitials pay more than static interstitial ads. Let’s say you can show 2 interstitial ads per session on average, the user only has to play about 75 times to make up that income. You don’t want to over-show ads to keep it from becoming an annoyance causing your user to just quit your app. Rewarded video pays about $10 per 1000 rewarded videos. That means the user only needs to view 7 rewarded videos to earn you that same $0.69. How do you get to that many ad displays? Most users tend to play a game a lot at first, then over time, they play less and less. All games have a usage “tail”. If you view this generic usage graph, it looks like a dinosaur: Picture by Hay Kranen / PD The left side is your initial usage spike (the head) and then as time passes it gets used less and less (the tail). Some games will have a long tail, but many will have a short tail. No one can really predict in advance how long your game’s tail will be. Successful apps will have a longer tail and a taller tail. It indicates that you are retaining users longer. Games and apps with a long tail will make more money from advertising. If your game doesn’t have any longevity to it, you want to convert them to paid as soon as possible. This combination of retention and revenue is your game’s LTV or Lifetime Value. If your game is too short, offering an option to disable ads won’t be effective because you won’t have any retention to motivate them to disable ads. If your ads are too annoying, people may get turned off to your app and give up on it early. You have to strike a proper balance between advertising and entertainment or utility value of your app. Even short-lived apps can monetize successfully by … Using Rewarded Video Rewarded video is clearly the winner in the eCPM value for you, but you have to use them wisely. Rewarded video is the user volunteering their time in exchange for some in-game reward. You can’t just throw a rewarded video in front of a user automatically. That’s the job of an interstitial ad. If you force the user to watch an ad, even if you reward them, it’s still forcing them to watch the ad. Consider they have played your level and lost. Your game logic shows them an ad and resets back to the beginning. That is an Interstitial ad placement. If you prompt them “Would you like to view an ad to continue to the next level?” and if they agree, you should show them the video and let them move on to the next level. If they choose no, simply take them back to the beginning, but don’t force them to watch the ad. Rewarded ads encourage players to continue playing, either by not losing progress or by gaining some in-game feature which can extend your app’s LTV. Using these techniques, even games with shorter tails can be quite successful. Conclusion Every app is different. You should make the most entertaining game you can or the most useful business or utility app that brings real value to the user, then balance your advertising, in-app purchases and in-app currency to maximize your income. View the full article
  12. 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. Qiso Isometric Tilemap Engine Qiso is an isometric tilemap engine for Corona SDK. It handles the complexity of converting between screen, Cartesian and isometric co-ordinates, allows you to programmatically add or remove tile layers at any time, and add player or machine controlled characters. It takes care of map rendering, camera movement/zoom, and has built-in A* pathfinding algorithms. Check it out! Wild West assets from Beatheart Artist Beatheart has created a series of “Wild West” assets for you to use in a cowboy themed game. Each character has multiple animations available. DataViz With the DataViz plugin, you can create Arcs, Polygons, Stars and Circle segments that are popular in many types of business and utility apps. You can manipulate colors, set palettes and named colors and more. Check it out! View the full article
  13. CoronaRob

    Linux builds for Corona

    Corona Labs is pleased to announce early beta testing for Linux builds. With this feature you can use the Corona Simulator either on Windows or macOS to produce a Corona build that should run on Debian and generic x86-64 Linux platforms. This feature is currently in a limited beta test. You will need to enable building before the option appears in the simulator. Information on enabling the Corona Simulator to make Linux builds can be found in pinned posts either on: Our community forums ( ) or Our community Slack’s #linux channel ( ) We request that any observations, comments and issues be reported at those two locations. Note: This is using Windows and macOS to make apps that run on Linux. This feature is not running the Corona Simulator on Linux to make Android builds. View the full article
  14. 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. Lama Chef This is a new “tap to play” exclusive arcade game template made with Corona. It is easy to re-skin and modify to your needs and has Appodeal ads integrated. Check it out! Old Movie Effects Combine the Old Movie Effects with Corona’s image effects to create an amazing retro feeling for your app. In the demo video, the old movie effects are used together with Corona’s duotone image effect. Cartoon & Comedy Sounds ‘Cartoon & Comedy Sounds‘ by Cinematic Sound Design features a collection of more than 250 hand-crafted , 100% royalty-free cartoon and comedy sound effects. View the full article
  15. One of the struggles with building simple “casual” free-to-play (F2P) games is how to keep the player engaged and playing for the long term. Having a lot of initial downloads is great, but you need the app users to keep playing your game so they engage with your advertising and take advantage of your in-app purchases. In this blog post by Josh Bycer, he discusses the problems with short game-play loop games and how late game play turns into a painful grind to keep income coming in and how more complex games address additional content. Factoring these issues into your game design can go a long way to helping you build more sustainable games. Click here to read: How Free to Play Design Runs out of Steam View the full article
  • Advertisement

Important Information

By using, you agree to our community Guidelines, Terms of Use, and Privacy Policy. is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!