Jump to content
  • Advertisement
  • entries
    150
  • comments
    8
  • views
    6650

About this blog

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

Entries in this blog

 

Understanding Content Scaling in Corona

Content scaling can be a mystery even for some seasoned developers. Let’s try to demystify it. First, forget pixels. You are going to create a virtual content area that is measured in values that make sense for you to use. Your content area could be 1 x 1 if you want. Of course to position something on the screen you would need to use fractional values, which is probably pretty inconvenient. You could match your content area to some device standards like a width of 1080 and a height of 1920. This would provide a 1 to 1 mapping to the typical HDTV screen or computer monitor which also happens to be a common device resolution for many modern phones. This is all defined in the config.lua file. config.lua is always written assuming a portrait orientation That is, your width should always be the smaller value and the height the larger value that you specify, even if your game/app is going to run in landscape mode. Aspect ratios You shouldn’t care about pixels. Corona converts your “content area points” to pixels for you. You only need to care about what number of points you want to work with. However, aspect ratio matters. If you set your width and height to both be 1000, then you have a 1:1 aspect ratio, the width and height are the same. If you set your width to 1000 and height to 1500 then you have a 1:1.5 aspect ratio. There are many standard aspect ratios that are common among displays: 1:1.5 – Common to the iPhone 3 and 4 family, cameras produce 4×6 photos (which is 2:3 or 1:1.5), some laptop screens are 1:1.5 as well. 3:4 – Common to Standard def TV and computer monitors such as 1024×768, the Apple iPad and several Android tablets. This is also 1:1.33. 16:9 – This is the HDTV standard or 720p (1280×720) or 1080p (1920×1080). This is very common to many modern phones too. This works out to 1:1.777778 if you want to measure it based on a 1 point scale. Which aspect ratio should you use? Corona Labs recommends that you use the 2:3 or 1:1.5 aspect ratio. While this is common on older phones, using 16:9 may make more sense, however if you want to build apps that work both on more square iPads/tablets as well as more rectangular 16:9 or more extreme devices, the 1:1.5 aspect ratio fits nicely on all devices. Of course this means that you’re going to have extra screen space to use that is outside of your defined content area. It’s important to point out there is no “perfect” or “right” way to define the content area. You need to use what works for you and it may vary from app to app. This is recommended because it fits on all screens. In the graphic below, green is your defined content area in config.lua (based on a 1:1.5 aspect ratio). Blue is the typical 16:9 device, pink is the typical iPad/tablet. Does width and height matter? You should use what works best for you. But you will see that many Corona-produced samples seem to be stuck on an archaic 320 width and 480 height setting. This has not been a pixel match to any device since the iPhone 3 which makes it very old indeed. However, Apple still measures everything in points and they are using a 320 point base system. Android devices are based off of a 160dpi system so a 2″ widescreen, common to phones would be 320 as well. Finally Corona’s widget library is based on a 320 point system and many of the widgets are not designed to work with arbitrary sizes, so we continue to use 320×480. You should use what’s right for you, but 320×480 is a pretty good standard to base your app on. Aligning the content area By default, Corona will center your content area on the screen for you. This is the common use case for most games. You can use the xAlign and yAlign properties to change the default. For instance, if you’re making a portrait business app, it might make more sense for the very left, top spot on the screen be 0, 0 and you fill content down the page. These apps don’t do a lot of centering and having left, top be 0, 0 and right, bottom be display.actualContentWidth, display.actualContentHeight makes that simple. Games come in two basic configurations: Objects have to be the same distance apart regardless of the screen. Think about Angry Birds. The distance from the sling shot to the structure has to be the same on every device for the gameplay to be consistent. Space to the left of the sling shot or to the right of the structure is just filler. In this scenario having a centered content area makes sense. Objects should fill the screen and spacing isn’t critical. Think of a card game. The stacks of cards look best when they are spread out to fill the screen. In this case, you may want to left-align the content area and use display.actualContentWidth to determine how to balance your card stacks out. Corona’s display attributes There are several important values you can get in your Corona app based on your settings in config.lua: display.contentWidth = the value you set for “width” in config.lua display.contentHeight = the value you set for “height” in config.lua display.actualContentHeight = a computed value based on your width/height but adjusted for your screen’s aspect ratio. For instance if your portrait app has a height of 480, but you’re on a 16:9 device, display.actualContentHeight would be 568 (16/9 * 320) display.actualContentWidth = a computed value based on your width/height but adjusted for the screen’s aspect ratio. For instance an iPad would return 360 for a portrait app (3 / 4 * 480) display.screenOriginX, display.screenOriginY = for a centered content area and a bigger screen, some of the extra area will be to the left or to the top of the content area. These values provide you that offset These values are important for positioning their objects around the edges of your screen or to fill your screen. Consider this image: Given this config.lua: application = { content = { width = 320, height = 480, scale = "letterbox", fps = 60, }, } You are creating a centered content area (the green block). The blue area would be the typical 16:9 phone such as an iPhone 5 family. We will discuss the yellow block in a little bit. 0, 0 is the left, top corner of your defined content area. Your right, bottom corner is display.contentWidth, display.contentHeight. Both of these are exactly what you specified in config.lua. Corona will fill the screen either vertically or horizontally depending on the aspect ratio of the device. For phones, the 320 will fill the narrow width of the device. For tablets, the 480 will fill the device. The other value is computed based on the actual device. These values then become display.actualContentWidth and display.actualContentHeight. Corona also automatically adjusts these values based on your device’s orientation. The config.lua is always written for portrait, so on a portrait app, 320 width will be 320 (or 360 for iPads). If you rotate the device, the narrow edge of the phone is now the height instead of the width. Corona adjusts these attributes to match the orientation automatically. Back to the graphic above, you will notice that there are blue areas on the left and right of the display. That’s because the content area is 480 points, but the actual screen is 568 points, an 88 point difference. Since the area is centered, that means there are 44 points left of 0, 0 and 44 points of screen to the right of your defined height. Corona makes getting the left edge in this case very easy. The display.screenOriginX will in this case be -44 and display.screenOriginY will be 0. Flip the device to portrait and display.screenOriginY would be -44 and display.screenOriginX would be 0. If you want to position a button in the left, top of the display 25 points from the edge, you could do: button.x = 25 + display.screenOriginX button.y = 25 + display.screenOriginY Getting to the right side in this example is a little bit tricker. While display.actualContentWidth will return 568, which is the actual width of the content area, with the content area being centered, it will be 44 pixels too far to the right. To position a button at the right, bottom, you still have to use the display.screenOrigin* values: button.x = display.actualContentWidth - 25 + display.screenOriginX button.y = display.actualContentHeight - 25 + display.screenOriginY For your game critical items that need to be at predictable distances for each other, keep them inside the 0, 0 and display.contentWidth, display.contentHeight area and it will work on all devices. Then you can fill the background to fill the full screen and edge position scores, lives, User Interface (UI) buttons and such so they also fill the screen. iPhone X weirdness Apple introduced some features with the iPhone X that makes laying out your app a bit of a challenge. Corona has some alternate versions of display.screenOriginX, display.screenOriginY, display.actualContentWidth, display.actualContentHeight that takes these changes into account. If you plan on supporting the iPhone X, you should use display.safeScreenOriginX, display.safeScreenOriginY, display.safeActualContentWidth, and display.safeActualContentHeight for positioning UI elements into the safe zone. But you should still use the non-safe versions for filling the background. Filling the background Consider this game’s UI: This simple interface has a health indicator, lives indicator, score indicator and some other buttons along the bottom edge. The red ship is inside the config.lua's defined content area. When making your background, you want to try and use graphics that can extend beyond the screen edges. Then for the UI elements, don’t build them into the background, but have them be their own graphics so they can be edge positioned to fill the visible screen. Then you can draw your hearts, bars and score values inside those graphics. Before Samsung came out with the S8 and S9 and Apple the iPhone X, the most extreme screen was the 16:9 screens and the iPads (in the other direction). This made it a very easy formula for filling the background. Based on a 320×480 content area, you would want your backgrounds to be 360×570 for portrait or 570×360 for landscape. Center it on the screen and you would have no black “letterbox” bars to contend with. The S8 and S8 are a 1:2 aspect ratio which means your backgrounds need to be 640×360 to fully fill the screen. Then Apple went even more extreme with the iPhone X and its 19.5:9 aspect ratio (a 1:2.1666667 screen). You will need a 694 pixel wide image to fill the background on this device. Hopefully this will help you understand the config.lua a little better and propel you to success in your next #madewithcorona app!
View the full article

CoronaRob

CoronaRob

 

The Corona 2D game engine is going open source in 2019

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, www.coronalabs.com, 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:
devrel@coronlabs.com
View the full article

CoronaRob

CoronaRob

 

Great game design tips: the art of color

Color — or even a lack of color — impacts every game ever created. Color is one of the primary emotional cues a designer can use to set the mood of a game and thus the player. In fact, understanding how to use color properly could be the difference between a hit app or one that gets almost no downloads. In this roundup, let’s look at several resources which discuss the topic of color in game design. Screenshots from BotHeads. Screenshot from Limbo. 1. The Most Important Color In UI Design In this post by Nick Babich, a software developer with a passion for UI/UX design, he discusses why the color blue is so popular in UI design and why it’s used in many mobile apps. From emotional reasons to technical reasons, he outlines several reasons why you should use blue. 2. Color in games: An in-depth look at one of game design’s most useful tools In this article from Gamasutra, Herman Tulleken and Jonathan Bailey take a deep dive into the purpose color serves in games. Not only do they show how games use color to brand themselves, they get into discussions about the emotion of color and how it’s used as signifiers and identifiers. This article will certainly make you think about color and its impact! 3. Picking a Color Palette for Your Game’s Artwork In this article, Tyler Seitz discusses color palettes and how to create them, along with some basic color theory that every game developer should understand.
View the full article

CoronaRob

CoronaRob

 

Featured Game: Zombie Guard

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. 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.  
View the full article

CoronaRob

CoronaRob

 

There’s BIG open source news on our 9th birthday

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 devrel@coronalabs.com.
View the full article

CoronaRob

CoronaRob

 

Social media assets guide

Image by Milky – Digital Innovation, from The Noun Project [CC BY 3.0 us], via Wikimedia Commons Every app and game developer needs an online presence if they expect to have success. Aside from a website, social media is a huge area for helping market your app. Getting started is simple enough, create a Twitter account, create a Facebook page and other sites as well. One daunting challenge is artwork. Each social media site has their own requirements. It can take hours to figure out just what you need in addition to creating the work. But never fear, Laura Bularca has created a guide to the art assets needed for a social media presence. Click on over to her website for her handy list of sites and what you need to set up that presence.    
View the full article

CoronaRob

CoronaRob

 

From the Forum – Issue #170

Welcome to this week’s From the Forum. In this post, we highlight a few Corona Community Forums posts that cover important topics. All I want for Christmas… Or Winter holiday of your choosing… In this thread, several users come up with various wish lists they have for the holidays. Maybe you can help make someone’s wish come true even if it’s just voting for a feature at http://feedback.coronalabs.com. Dynamic database tables The original poster needed to name and create SQL table names on the fly. Community developer hero @develephant comes to the rescue with an easy-to-use line of code to create the SQL to make these dynamically named tables. Letters to numbers The original poster needed to convert letters to numbers. Several Corona community developers jumped in with different techniques to make this happen. 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

CoronaRob

CoronaRob

 

HTML5 for Corona update

Our 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

CoronaRob

CoronaRob

 

From the Forum – Issue #186

Welcome to this week’s From the Forum. In this post, we highlight a few Corona Community Forums posts that cover important topics. Going Indie? Many Corona developers start out as solo developers. Some may start as artists, others as programmers and some with skills in both. But when is it time to partner up with someone or work on a team? Should you use a publisher to help with marketing? In this thread, a developer asks these questions and got great responses. Into the Shadows Many 2D games don’t need dynamic shadows, but when you do, how do you go about it? Corona developer @XeduR has come up with a pretty unique approach. Learn more about what he’s doing in this thread. Old Game Dev vs. Modern Game Dev Corona community rock star @roaminggamer has posed a very thoughtful question: What modern dev tools make your life easier today that would have required a lot of code in the golden day of game development? Jump into this thread and add your opinion on the things that have impacted you the most. 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

CoronaRob

CoronaRob

 

Happy Holidays from Corona Labs

Corona 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

CoronaRob

CoronaRob

 

From the Forum – Issue #165

Welcome to this week’s From the Forum. In this post, we highlight a few Corona Community Forums posts that cover important topics. Checkmarks In this thread, our original poster was looking for various ways to animate a checkmark. Our enterprising developers chimed in with several ways to create checkmarks on the fly. Puggle Long-time Corona developer Graham Ransom, mastermind behind Glitch Games and their amazing adventures, has created a new code library for you. Many of you have used his various “GG” libraries over the years, so check out this new awesomeness! In-game currency “Where do you get started?” was what the original poster asked. Check out the advice in this thread about some considerations when implementing an in-game economy. 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

CoronaRob

CoronaRob

 

Featured #CoronaDefoldJam entry: Heavy Vertical

Entries for the #CoronaDefoldJam are starting to show up! Today we preview one #MadeWithCorona candidate that’s still in development but looks amazing so far, Heavy Vertical. The theme of the jam is “Running out of power” and, in this case, Corona developer Santi is translating the theme literally. In Heavy Vertical, you have to land your cargo before running out of power!
#CoronaDefoldJam runs until October 1, 2017 and it’s not too late to enter. See the original announcement for more details. If you have an entry in progress, please set up your itch.io page and let us know about it in the community section of the game jam. Maybe we’ll feature your entry here!
View the full article

CoronaRob

CoronaRob

 

Featured Game – Code Adventures

Code Adventures: Coding Puzzles For Kids by Daniel Ivanov is a great educational game where children can solve brain-challenging puzzles to learn basic programming techniques. The goal is to help Aurora, a cute little fuzzball that is lost, find a way to get home. The game consists of 30 levels, some with single goals, others with multiple, that will require children to use logic and creative skills to complete. It also includes plenty of hints to keep players from becoming stuck. Code Adventures: Coding Puzzles For Kids has been featured in over 150 countries in the Educational and Puzzle Games category and it made it to the feature banner on the home page in Russia. It’s available on the Apple App Store, Google Play, and Amazon Appstore for $3.99.   
View the full article

CoronaRob

CoronaRob

 

Corona Marketplace – Recent featured products

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. Image Slider Image sliders are useful in countless types of apps and games, and this Image Slider plugin offers a robust set of features and customization options to meet your needs. eBook Template Perhaps you dream of making a beautiful eBook in Corona, but you’re not sure where to begin. This wonderful eBook Template handles a lot of the back-end work for you, letting you focus on your story and art! Animated Boys / Animated Girls DionArtworks has generously created a series of Animated Boys and Animated Girls, all featuring multiple animation sequences. They may be cute but they still carry guns!
View the full article

CoronaRob

CoronaRob

 

Cool things in the Marketplace 8/17/18

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. High Climb 2018 – Cool Corona Template High Climb 2018 is a challenging tap-to-play template for Corona. You swing your gorilla back and forth as you climb the rock wall picking up goodies along the way. Check it out! TVShader TVShader is a shader from Dave Bollinger for Corona SDK that implements old-school retro-style full-screen CRT effects. The shader supports many different settings to give you a variety of different effects. WebSockets The WebSockets plugin from Develephant provides a WebSocket client for your Corona projects with a simple-to-use API. Supports both secure and standard connections using the RFC6455 WebSocket protocol.  
View the full article

CoronaRob

CoronaRob

 

iOS 11 update: icons and safe area APIs

Now that iOS 11 has been officially released, there are several things you must do to prepare iOS apps for submission to Apple. Also, the upcoming iPhone X creates some unique challenges when creating a user interface, so we’ve added some useful new APIs to help you adjust your UI. Icons Starting with iOS 11, Apple now requires that you include an Icon-1024.png file in your app package. However, current Corona-built apps cannot find that file correctly using the CFBundleIconFiles table. Thus, to make this work today and going forward, you must switch from using static icons to using the modern Images.xcassets package. Starting with daily build 2017.3144, you can easily implement the Images.xcassets method — simply consult our Managing Xcode Assets guide for instructions. Safe areas The iPhone X creates a unique challenge for app developers. Between rounded corners and the sensor housing protruding into the screen, developers need a way to know where they can safely place critical UI elements so that they are fully visible and accessible to users. Toward this end, Apple has provided this helpful guide outlining what you need to do. In short, you need to fill the entire screen, including areas outside the “safe area” (the darker region bounded with the red line in the illustration). Also note that the iPhone X has an extra-tall aspect ratio of 2.165:1 — surpassing even the 2:1 aspect ratio of the Samsung S8 — so for a Corona content area size of 320×480, you will need to fill a total area of 360×693 for the iPhone X screen and iPad screens. Even more importantly, your app should not place important UI elements like buttons, scores, navigation elements, etc. outside of the “safe area” on the screen. In truth, the “safe area” is not a new concept with the iPhone X — for instance, TVs have overscan areas and some mobile devices utilize status bars and soft button rows where you shouldn’t be placing UI elements. To address this, starting with daily build 2017.3135, we added several new properties and a new function which you can use to determine the safe zone on the screen. These additions to the display library include: display.getSafeAreaInsets() display.safeScreenOriginX display.safeScreenOriginY display.safeActualContentWidth display.safeActualContentHeight Please click through to the documentation for examples on how to use these. Conclusion In addition to the above features, we are preparing a new iPhone X skin for the Corona Simulator, to be released soon. In the meantime, you can start preparing your apps for the iPhone X, test them in the Xcode Simulator, and submit them to Apple using the iOS 11 SDK.
View the full article

CoronaRob

CoronaRob

 

Android 64-bit is here…

Whew! That was a challenging update… But our engineering team has been working very hard and with much fanfare, we would like to introduce to you a publicly available Android 64-bit build of Corona. If you check the daily builds, you will find a new daily build: 2019.3504. This build should be stable enough for a public beta and for you to release apps to Google Play that meets all of their current new requirements. This includes: The August 1 deadline for 64-bit support for new apps (updated apps have a year to implement). The August 1 deadline to support Android SDK 28/Android 9/Pie (updated apps have to be using them by November 1, 2019) The recently changed AdMob requirements that require the AppId be included in the AndroidManifest.xml (build.settings file.) All Corona controlled plugins, updated to 64-bit, and many have been updated to the most recent SDK for those app plugins. Support for Android responsive icons Faster builds that are less dependent on network connections. Support for Android App Bundles (.aab files) While we are certain that there may still be edge-cases that need addressed, the only way to find them is to open this up to a wider audience. If you run into any edge case, please start a new thread in our Community Forums Android 64-bit testing channel (please don’t add it to an existing thread.) There are a few things to be aware of. .aab files require you to use Google’s new App Signing procedure. While we have discouraged this in the past over your standard keystores, you have to use this now and once you convert your app to use Google’s new App Signing, you have to use it going forward, but the gains by having your app size reduced is worth it. Your first Android 64-bit build may take some time as we need to download additional content (about 250 Mb total) to support the more local-natured building. Future builds should run noticeably faster. Android’s new responsive icons require a completely different file/folder structure than putting a few Icon-*dpi.png files alongside main.lua. The best thing you can do is to use the Corona “Welcome” window, create a new project and copy the AndroidResources folder to your project. Look at how the files in each of the various folders are named and sized, and create your new app icons using those names and sizes and overwrite our template icons. We are working on the guide explaining the topic. If you’re using AdMob or Appodeal, you must add some new content to your build.settings. See yesterday’s post for details. If you’re still using the legacy AdMob plugin [plugin.google.play.services], you must remove it.
Several plugins still doesn’t have full 64-bit support. It is recommended that anyone building for Google Play, using ad or other plugins, update to this build as soon as possible. Remember to report issues regarding this update to the Forums!
View the full article

CoronaRob

CoronaRob

 

Game Development: Going Solo

Many Corona developers head into their first project all alone. While working with a team can help in several ways, it’s simply not an option for many aspiring developers. In this digest, we highlight a few articles on the concept of “going it alone” as a solo game developer. Hopefully, these tips and suggestions can help make your game a success! Climbing an impossible mountain: the struggles of making a game alone In this post by Ed Key, he talks about many of the issues that face solo developers like managing choices, combatting loneliness, and staying motivated. As the article progresses, he continues on to topics like fear of failure, anxiety, and self-doubt. Mayhem above – The do’s and don’ts of a solo dev As a game developer, there are several things you should consider doing, and some which you should avoid. In this post by Eder Beldad, he covers topics like planning vs. lack of planning, scheduling your day, and limiting the scope of your project to something manageable. Top 10 tips for solo indie game developers In this post, discover ten tips that can help solo developers achieve success. These include topics from “keeping it simple” to “building up a fan base.”
View the full article

CoronaRob

CoronaRob

 

From the Forum – Issue #169

Welcome to this week’s From the Forum. In this post, we highlight a few Corona Community Forums posts that cover important topics. Migrating Enterprise Corona has been offering our native builds as part of the core for a while now. There has been considerable modernization of the App template that projects are based upon. Several Enterprise developers are wanting to move forward and this thread covers various ways to move from the legacy Enterprise template to the modern Native template. Pushing objects Trying to add linear impulse to objects should make them move straight, but you can also get your objects to move oddly too. This thread helps “straighten out” that movement. Looping or events? The original poster wanted to know the best way to move objects in a back-and-forth manner. Corona offers several ways to do this and our great development community stepped up in this thread to offer some suggestions. 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

CoronaRob

CoronaRob

 

From the Forum – Issue #168

Welcome to this week’s From the Forum. In this post, we highlight a few Corona Community Forums posts that cover important topics. Modules, modules, modules Developers love to build their own libraries. The bigger they get, the more important organization of the code becomes. In this thread, learn some strategies for maintaining modules in your code. Moving containers The original poster’s question was curious how to move a display object so that it only shows part of the object, depending on the position. Think of moving a character in front of an X-Ray machine. Enter containers. This thread goes into quite a bit of depth on how to use containers to partially reveal objects. Cool Lua syntax The original poster saw some Lua syntax that wasn’t familiar. Enter forum superstar @roaminggamer with a great explanation on single line conditionals to populate variables 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

CoronaRob

CoronaRob

 

From the Forum – Issue #173

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

CoronaRob

CoronaRob

 

From the Forum – Issue #166

Welcome to this week’s From the Forum. In this post, we highlight a few Corona Community Forums posts that cover important topics. Dynamic level modules In this forum post, the original poster was interested in how to best manage level data for a large number of levels. Using local .lua files was loading large amounts of unneeded data. Corona’s developer community came to the rescue and offered some great suggestions on using SQLite and tools to help manage it. iOS 11 and icons Apple changed the rules on app submissions with regards to icons. However, even with the new methods listed here, several developers still ran into a few additional issues with their Apple app submissions. This thread covers fixing many of them. Google Path Traversal vulnerability Every Corona developer with apps on Google Play were notified last week that Google would start enforcing take-downs of apps that continue to have this Google Path Traversal Vulnerability issue. Daily build 2017.3145 addresses the issue. See this thread for a full discussion on how to tell when Google is happy with your update. 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

CoronaRob

CoronaRob

 

From the Forum – Issue #163

Welcome to this week’s From the Forum. In this post, we highlight a few Corona Community Forums posts that cover important topics. Optimizing your graphics Most Corona developers are happy with the performance of our engine and never give a thought to what’s going on under the hood, but there are some who are pushing really complex ideas through the graphics pipeline. In this post, discover how to optimize your art to be as efficient as possible. Functions vs. coroutines In this post, a developer wanted to understand the difference between functions and coroutines. Our wonderful developer community responded with a great description. Group coordinates Corona display groups have their own coordinate space when compared to the overall screen. This thread covers how to convert between these with ease. 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

CoronaRob

CoronaRob

 

Introducing new Facebook “v4a” plugin

Similar to the recent updates we made to the Google IAP plugin to help combat “App Not Responding” (ANR) reports in the Google Play console, we have released an updated Facebook v4a plugin to reduce the incidence of ANR errors. Here’s what you need to know… Why a new updated plugin? The last revision of the Facebook plugin begins initialization when you first require() it, and it does not return to the calling module until initialization is complete. On Android devices, this may appear (to Google) that the application isn’t responding, thus generating an ANR report. To solve this, we have made the new Facebook v4a plugin asynchronous. The new process involves starting the initialization when you require the plugin, plus a new facebook.init() API to register a listener to be called when the initialization process completes. Using the new plugin To use the new plugin version, you need to do four things: Change your build.settings code to use the new plugin. Simply change "plugin.facebook.v4" to "plugin.facebook.v4a". Change any Lua file that requires the plugin to use the new plugin. Simply change require("plugin.facebook.v4") to require("plugin.facebook.v4a"). Make sure you’re using Corona version 2017.3068 or later (2017.3068 is the most recent public release at the time of this writing). Following the first time you require() the plugin, likely within main.lua, add a call to facebook.init(). New initialization API Since the new Facebook v4a plugin is asynchronous, you need to know when initialization is actually complete. Calling the new facebook.init() API gives you a chance to define a specific function which will be called when initialization completes. Once that function receives the "fbinit" event, you can safely call other Facebook API calls like facebook.publishInstall() or facebook.login() (although you should probably defer asking the player to log in until a point in your game which makes sense). The listener function referenced in facebook.init() will also be used for other Facebook API calls to handle "fbconnect" events. Because of this, you only need to call facebook.setFBConnectListener() if you wish to use a different function to process your "fbconnect" events. See the integration documentation for more information and examples. Summary While this update only truly affects Android builds, you should follow similar behavior for iOS builds to maximize cross-platform compatibility. ANRs can be a silent error that you may never know about, so we strongly encourage you to update to the Facebook v4a plugin, especially if you have an active Android user base.
View the full article

CoronaRob

CoronaRob

 

From the Forum – Issue #164

Welcome to this week’s From the Forum. In this post, we highlight a few Corona Community Forums posts that cover important topics. Engage impulse engines Corona allows you many different ways to move things, but if you’re using physics you can give objects a push or an “impulse.” In this post, the original poster wanted to know how to add random impulses to objects to get them moving. Great balls of fire! In this thread, a developer wanted to know the best way to make fireballs bounce up and down with a natural gravity-like effect. Corona super-developer @roaminggamer comes to the rescue with ways to use linear damping to control the bounce better. File dialogs If you’re building desktop apps, you probably need to implement things like file pickers or other OS-type dialog boxes. Corona veteran @starcrunch recently provided the Tiny Dialog plugin and this post is a shout-out from a thankful fan! 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

CoronaRob

CoronaRob

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net 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!