From Unity To Corona

In 2018 I released a mobile app named Tappy Easter. In 2019 I released an update. Well, not really an update, more of a complete rewrite. Version 1.0 of Tappy Easter was written in C# using Unity. Version 2.0 is written in Lua using CoronaSDK.

This article will document my experience writing the same app using two different languages in two different game engines, and will cover the great and not-so-great of each.

Background

I have been using CoronaSDK since 2012 and have written several apps currently on the iOS and Android play stores. Some time in 2016 I picked up Unity since I wanted to try my hand at a 3D game. I spent a lot of time learning Unity, developing games for game jams, but I wanted to release something to the app store. Even though it was a 2D game, I decided to create Tappy Easter using Unity as a good test case.

Design

The game’s layout is fairly simple: a title screen, a level select screen, and the game screen, and some additional pop-ups and menus to move between the game scenes.

The game scene consists of a series of Easter baskets that are tapped to move a colored egg. The controls are quite standard and very simple from a development perspective.

The level select screen is a bit more complex… it consists of 20 level buttons on two panels. The user can scroll between two panels and can only select levels that have been unlocked. In this scene, the 20 level buttons are built using either a locked or unlocked graphic and if the level is unlocked and previously played, the number of stars that were awarded are also displayed.

Unity Development

Development took approximately four months, and it went very well. The Unity interface makes it easy to lay out your game screens, and I like using C#. Unity UI development is awesome, and the text features of TextMesh Pro give the game extra polish.

In addition to some assets I previously purchased, I also decided to purchase a couple of assets to make development a bit easier for this game. The code I wrote for swiping and tapping screen items was not really working as well as I wanted, so I purchased an asset to handle the mobile gestures. I also purchased an asset to simplify other features found in mobile games such as game services, advertisements, and rating systems. Since these features are platform dependent, using an asset to mange this was a no-brainer.

Development was a breeze… no issues with coding or screen design. It was now time to test on my devices and upload to the app stores.

Time To Compile v1.0

It felt like I spent more time getting the app to compile than I did to develop it, and this was becoming more and more frustrating.

You would think that adding Google Play and Admob would be easy since they are both Google products, but this was an exercise I never want to go through again. These libraries seem to be incompatible with each other since each library includes older versions of files that the other library needs. This caused so many incompatibility issues. After several weeks of research into the issue, it seems trial and error is the only way to get this resolved. Finally, I could get the app to compile and run under Android, but I am not 100% sure how I did it or whether I can do it again.

Now on to the iOS version. I imported the Xcode project generated by Unity which resulted in several hundred “warning” messages and some errors. Reading through tons of support messages, it appears that 200+ warnings can be ignored, but I don’t feel ignoring that many warnings is a great solution. Admob errors were also fussy, and again, I am not sure how I overcame the errors, but I got to a point where it compiled and ads were being displayed.

After more days than I can remember, I now have a working Android and iOS build, so time to put them on the app store!

Working On The Update

A few weeks later, I wanted to tweak a few things and put out an update which seemed a bit more difficult than expected.

I updated all my plugins, including Admob and Google Play (I had to due to some required Google changes), and again there were errors caused by file incompatibilities. This time, no matter what I did, I could not get these 2 plugins to play nice together.

What I also found interesting with the iOS build is that the file size of the v1.0 build was 120mb! Looking at the Unity logs, a lot of unused files and asset demo folders were included during the build, and I could not understand why. Reading through some forum messagess (since my question on the forum went unanswered), it appears that iOS builds do not really exclude everything that is not needed.

At this point, I decided not to update the app, and let it ride in its current behemoth state. Early in 2019 I decided to revisit the update and had the same issues. The frustration level was off the charts, and I convinced myself it would be easier just to start again using Corona… which is exactly what I did.

Corona Time

My previous experience with Corona, and utilizing the sound and image assets created for the Unity version, allowed me to put an improved version of Tappy Easter on the iOS and Android app stores in under 1 month.

Corona is somewhat of an underrated 2D engine, but it is robust and established, and this made development quite easy. There is a lot of things that Corona does that require a bit of work in Unity:

  • I did not have to manage aspect ratios and screen sizes. Just place your images where you want them, and Corona will handle it appropriately, no matter what display.
  • Admob and Google Play actually work without hours of tweaking. Include the plug-ins and start coding.
  • XCode not required!!! Just choose File -> Build and Corona will compile an app to an IPA file without needing a Doctorate in Xcode, and will create an Android APK file without needing to install all the Android libraries.

In order to have really nice fonts in Corona, I had to create images of text. Since this app is English only (at this time), that’s not an issue, but I would have to create text image files for every language I want to support.

As a result, I am currently working on a Corona plugin that will manage fancy text and I am encouraged by my results so far. My free plugin (GBC Language Cabinet) simplifies the management of language support, so utilizing this library with a text library should provide a great solution to multi-language fancy text.

My Unity vs Corona Experience
 UnityCorona
Development Time4 months1 month
File SizeiOS - 120mb
Android - 33mb
iOS - 11mb
Android - 10mb
Additional AssetsFingers Touch Gestures
EasyMobile Pro
none
StrengthsVisual Editor
Text features
3D
"One Button" build
WeaknessesXCode frustrationNo visual editor... images must be coded to screen
Text features
Conclusion

I love working with both Unity and Corona, and it seems that each tool has its strengths and weaknesses. No one tool can do it all.

For 2D mobile development, Corona (to me) is the better choice… it’s a great way to release a game quickly and easily. Tappy Easter is one of those games where Corona was the perfect choice.

For desktop, 3D, or perhaps more complex mobile games, I would consider using Unity. There are some really complex games written with Corona, as well as some desktop games, so the Corona platform would still be a consideration when evaluating my game requirements.

I do wish Unity could build mobile apps more simply, like Corona does.
Building a desktop app with Unity is so simple, so it should be possible to improve building for mobile. Building the app seems more complicated than actually developing it, but maybe I’m just spoiled.

[divider]

My Year-End Game Development Review

Another year in the books… I guess its time for a review of my 2018 game development work, and planning on what I want to do in 2019.

2018 Accomplishments

Looking back, it was a busy year (busier than I thought). Here’s some of the things I accomplished, with links to more detail.

Stuff Still Up In The Air

Will I ever finish SMS: The Next Mission?

Back in 2014, I wrote and released Space Mission Survival for mobile platforms. Back in 2015, I decided that this would make a great PC/Console game, and I started work on porting (actually, re-writing) Space Mission Survival to PC and I added some extra modes to play the game using graphics and sounds available in the 1970s, 1980s, and 1990s.

Over the past 4 years, I stopped and restarted development so many times (seven times, I believe). I get close to completion, but that extra 20% needed to release it always discourages me.

  • Do I add a “Shmup” mode? Remove it?
  • Would people pay money for a game that plays exactly the same in each mode?
  • Based on lack of any feedback, does anyone really care if it is released at all?

In my last post, I said I will finish it to release, and I will at some point. It’s so close to completion at this point. It’s better than sitting on a hard drive.

Same thing for Johnny’s Flip Book Adventures. The Ludum Dare version ended with such a great rating, and it seems to be a favorite of those who played it, but I have serious doubts that it will sell well, let alone be noticed, and that is also discouraging.

2019 Plans… Somewhat Undecided

I am finding that I have some other interests I want to pursue outside of game development. After years of waffling, I decided that I am going to learn to play the piano/keyboard. A wonderful Christmas present from my wife will help move that dream along.

I am also finding that I enjoy woodworking and I have a few projects that I want to start (and finish). I started working on a bench last year, and I also have a couple of things on the “to do” list.

2019 will start my 8th year in game development. As 2018 winded down, I find myself questioning whether I should take some time away from game development to take a breather, and dedicate more time to pursue the other things I mentioned. Right now, I am not sure.

These interests will naturally take away from my development time. Currently, I have these development items on the list:

  • I started on an update to Tappy Easter, and I hope to get it out within the next month. I am currently working on some visual improvements, and I am investigating other monetization options.
  • The re-write of Johnny’s Flip Book Adventures is well underway, and I would like to finish it in 2019, with the goal of a mobile and Nintendo Switch release, but as I mentioned I am having some internal thoughts on its overall success.
  • I am still undecided what to do with Space Mission: Survival. I need to decide once and for all what to do about its release.
  • I am toying around with releasing a new space-themed spelling game (I guess an Alphabeta Asteroids: Mission II).
  • Maybe some minor updates to my Object Pooler library.
Conclusion

What a busy 2018 flying under the gamedev radar! I guess I will see where 2019 takes me and what I feel like working on. Only time will tell.

[divider]

Johnny’s Flip Book Adventures – November Status

I just wanted to post a screen shot of both the classic “Space Mission Survival” mode and the Ludum Dare 42 mode of Johnny’s Flip Book Space Adventure.

Development is going well, and I am happy with the results.  I am currently working on audio, and after that I believe I will be working on a configuration/settings screen.

Keep checking here as well as on itch.io for updates.

 

[divider]

Johnny’s Flipbook Space Adventure – Development Underway!

I decided that my Ludum Dare 42 entry, Johnny’s Flipbook Space Adventure, deserves an official release, so I have been working on a rewrite which will be released on PC, Mac, and hopefully consoles. There are two reasons I decided to continue development.

First, the game was very well received by the Ludum Dare community. After every Ludum Dare, I think about continuing development, but since this game scored so well, I think that this one should be improved so it can be released. I plan to add and tweak a few things to make game play better.

My second reason is that I think the game I was working on, Space Mission Survival: The Next Mission, would make a great add-on. You can read about my on-again, off-again development of SMS:TNM but to summarize: I love that game, I’ve made a lot of progress, but I get waves of doubt and discouragement in developing it since I am unsure of it’s success for various reasons (I still have plans to release that game, but a flip book version fits in well here).

So, Johnny’s Flipbook Space Adventure will have two chapters: an enhanced version of my Ludum Dare entry, and the classic Space Mission Survival game released to mobile years ago, but with the new flip book style. I think this will be a great game, and I am excited about its development. I hope to get a game play video out soon, and I am hopeful that a playable beta can also be released.

[divider]

Post Mortem – Pumpkin Patch Match (Updated)

Back in 2016, I wrote a Post-Mortem blog on my mobile app Pumpkin Patch Match (actually, I wrote it when I released PPM in 2015, but took several months to publish the article). Since the release of the Windows and Mac version, I decided to update the article a bit, and it follows below.

Background

Pumpkin Patch Match bannerI wanted to create a Halloween themed game along the lines of my past two holiday releases, Tappy Holidays, and Tappy Valentines Day. Tappy Halloween, as it was going to be called, was going to be a simple game with the same game mechanics as the first two games in the series, but I just couldn’t figure out a game that would be interesting.

After a couple of weeks of trashing ideas, it came to me… make a game where you have to match a pattern of jack-o-lanterns. Shortly after, I decided to change the name to Pumpkin Patch Match since it seemed better suited for the game.

Putting It Together

I have been learning Unity throughout the first part of 2015, and I thought that this would be a good “first game”. I got pretty far, and was pretty impressed with it, but what I thought were a couple of limitations prevented me from continuing, so I went back to CoronaSDK for this app.

I put together a CoronaSDK based application in no time and I am very happy with the results. I feel it is one of my better developed apps.

Stuff I Encountered
  • CoronaSDK is great for 2D games. I built Pumpkin Patch Match rather quickly, but I’ve been trying to find a reason to move completely to Unity. I guess both have their strengths and weaknesses. I am close though, since there are a few things that are a bit limiting with Corona.
    • 2016: Looking back, I think I should of continued to use Unity… it would of been a great learning experience.
    • 2018: Looking back again, it may have been more difficult to use Unity. CoronaSDK makes creating iOS apps so easy (it takes the complexity out of XCode). With Unity, integration of Admob on mobile is a bit difficult, and working with XCode for app updates is killing me. If this was a non-mobile game, it would be a no-brainer to use Unity, but I am gload I stuck with CoronaSDK. I found this out when I wrote Tappy Easter using Unity.
  • I decided to try Vungle for monetization… let’s see how this pans out. I hate ad based games, and I’ve been trying unsuccessfully to get out of that, but I don’t seem to have a choice. My games with In-App Purchases, or games I originally released as a pay-to-play (no ads) were unsuccessful.
    • 2016: Still not sure Vungle is the way to go.  It fits well with the game (allowing the player to continue at the same level if he/she watches a video), but I do not see the profits I expected.
    • 2018: I moved from Vungle to AdMob. Easier, less hassle.
  • I am also going to release on the Windows Phone platform. I have no experience there, and have no idea how this will turn out. CoronaSDK recently released a Windows Phone build.
    • 2016: I did release a Windows Phone version, but since Vungle on CoronaSDK on Windows Phone is not supported, I had to go with a $0.99 app, and as I expected, not a single purchase was made.
    • 2018: Windows Phone version is still there, and not being purchased (*sigh*), but a Windows desktop version released!!

For the Windows version, I released it on itch.io for a low price (right now, only $1.00 USD). All ads have been removed. This version makes a great game for toddlers and young children… it’s “Halloween-y” without being scary, is a good way to improve memory, an does not display advertisements. It’s also great for adults who remember and enjoy a certain popular hand held audio matching game as well.

I have some ideas to add features to the game, and may add them as time goes on. Of course, if Pumpkin Patch Match for desktops becomes popular, it would be a great incentive to add these features sooner.

[divider]

SMS:Next Mission – February 2018 Status

Another six months gone by! Here’s a quick update on the development of Space Mission Survival: The Next Mission.

I am pleased to state that the Classic 70 Arcade, 80s Home Computer, and 90s Console versions of Space Mission Survival have been completed! They are basically one game, with appropriate graphics of the defined decade. I utilized a lot of the code and graphics from “Iteration 5” of the project, and I finished Iteration 6 within 3 months.

What have I done with SMS:TNM since I completed Iteration 6 in July 2017? Basically nothing. As I previously stated, I have been having difficulty working on a theme for the Shmup mode, so the game has been sitting on the back burner. I think I have decided recently on a preliminary theme for the Shmup mode, so I am again enthusiastic about picking up development again in the very near future.

I think we all know where this is going… I am planning to not use Iteration 6 as the basis of the game, and instead will focus on an all-new “Iteration 7” for the Shmup mode. With some minor tweaks, all the code from Iteration 6 will be folded in, so there should be no new development required for the classic modes.

The development of this game is very strange to me. It seems like a project that has no ending. I have stopped and started more times than I can remember. As history has shown, there may be several rounds of dev/nodev coming as well for various reasons including discouragement, momentary lapse of interest, and other side projects like my recently completed Tappy Easter, and some Ludum Dare fun along the way.

[divider]

A Very Long Overdue Status

My last status post on SMS: The Next Mission was over 10 months ago. I figure it is about time I provided an update.

Reflecting

Looking back between September 2016 and about May 2017, I lost all desire to continue development in its current state, even though I had a lot completed. If you read through some of the older posts, you can see that something was just not right. I wasn’t sure about what features to add, and I was unsure about what to add to the shmup version (of even if I should include it). Development was also getting a little sticky as I was still learning some concepts in Unity. All of this caused me to stop development for a few months until I could figure out my next steps (and to build up a bit of excitement and momentum again).

Fast forward to June 2017. I decided I again wanted to continue (AND FINISH) this game. Looking at my project, I decided it was best to start over, but leverage any code that I had already written over the past 5 iterations. So here I am… the 6th time starting this project over and I am glad to say that progress so far has been great and I am confident that this will be the last time I need to restart.

I think the overall problem back in September 2016 was I was trying to take a game I previously wrote and love playing and create a PC/console version of the game that I think others want to play. That version of the game was not enjoyable to me and I lost motivation.

Currently, Space Mission Survival is available on mobile platforms and is a retro space shooter that I find quite enjoyable.  That is the basic game I want to recreate on PC/consoles, with some enhancements of course:

  • The Classic 70 Arcade, 80s Home Computer, and 90s Console versions that I previously mentioned will remain. They are basically the same game with some differences including graphics, sounds, and game play that was available during those past times.  All three modes will be complete, stand-alone games, and will feature enough unique game play and achievements to make them slightly different.
  • I do want to add a Shmup mode, but I a a bit unsure what this version will consist of, or how this mode will actually play at this time.
Current State

Classic 90s Mode

I decided to focus on the classic modes since I know for certain how these games will play. Using the mobile version as a model of game play, I will adjust game play to look and play like a game in those specific decades.

As of today, the 90s console version is pretty much complete. The game is playable and has a look and feel of a 90s game. Modifying the game to feel like a 70s and 80s game will be easy since most of the code will be identical… it just a matter of changing sounds and graphics for the most part.

I am going to begin a very small alpha testing of the 90s game with some friends and family soon. Any fixes will carry over to the 70s and 80s mode.

Future State

I am still undecided what the shmup mode of the game will be like, but I know I want the game to be intense (the classic modes are “wave-like”, so there is a bit of a breather between levels). I also think I want to utilize the 70s, 80s, and 90s modes somehow, perhaps through a time warp feature, but I am not sure.

Change of Attitude

During my hiatus from SMS: The Next Mission I decided that I am going to write a game that I want to play (and hope that other will as well), instead of trying to cater to the fickle demands of the masses. Making everyone happy is a game you cannot win. This will be a topic of another blog post, to be sure.

Conclusion

So there you have it! To summarize… SMS: The Next Mission will have 4 stand-alone games (70s Arcade, 80s Home Computer, 90s Console, Shoot-em-up). It may have a different name as well. Finally, my blog will be where I post updates (I hope you follow), and my decision to work the way I am working will be detailed in another article.

Thanks for reading!

Post Mortem – Pumpkin Patch Match

I originally wrote this article in October of 2015, but never published it.  Since I just released an update to Pumpkin Patch Match, and since we are coming up on Halloween, I decided to make a few edits and finally release this Post Mortem.

Background

Pumpkin Patch Match bannerI wanted to create a Halloween themed game along the lines of my past two holiday releases, Tappy Holidays, and Tappy Valentines Day. Tappy Halloween, as it was going to be called, was going to be a simple game with the same game mechanics as the first two games in the series, but I just couldn’t figure out a game that would be interesting.

After a couple of weeks of trashing ideas, it came to me… make a game where you have to match a pattern of jack-o-lanterns. Shortly after, I decided to change the name to Pumpkin Patch Match since it seemed better suited for the game.

Putting It Together

I have been learning Unity throughout the first part of 2015, and I thought that this would be a good “first game”. I got pretty far, and was pretty impressed with it, but what I thought were a couple of limitations prevented me from continuing, so I went back to CoronaSDK for this app.

I put together a CoronaSDK based application in no time and I am very happy with the results. I feel it is one of my better developed apps.

Stuff I Encountered
  • CoronaSDK is great for 2D games. I built Pumpkin Patch Match rather quickly, but I’ve been trying to find a reason to move completely to Unity. I guess both have their strengths and weaknesses. I am close though, since there are a few things that are a bit limiting with Corona.
    • 2016: Looking back, I think I should of continued to use Unity… it would of been a great learning experience.
  • I decided to try Vungle for monetization… let’s see how this pans out. I hate ad based games, and I’ve been trying unsuccessfully to get out of that, but I don’t seem to have a choice. My games with In-App Purchases, or games I originally released as a pay-to-play (no ads) were unsuccessful.
    • 2016: Still not sure Vungle is the way to go.  It fits well with the game (allowing the player to continue at the same level if he/she watches a video), but I do not see the profits I expected.
  • I am also going to release on the Windows Phone platform. I have no experience there, and have no idea how this will turn out. CoronaSDK recently released a Windows Phone build.
    • 2016: I did release a Windows Phone version, but since Vungle on CoronaSDK on Windows Phone is not supported, I had to go with a $0.99 app, and as I expected, not a single purchase was made.

SMS: The Next Mission – September Update

Lots of progress this past month, despite trying to get some coding in due to other obligations. I successfully added an “80s Home Computer” mode to SMS. Below is how it currently looks… pixel graphics, classic fuel bar, and 8-bit text in all its glory.  Click the image to see a larger screen shot.

80s Home Computer
80’s Home Computer Mode

I spent a lot of the first half of August researching how to handle the graphics for this mode.  I though of recreating all the graphics in pixel art, but it seemed like a lot of work to animate the ship to give it a true 8-bit rotation look.  I tried a shader, but it was a bit limited due to the layers I was using in the game. I finally settled on using a render texture, and it works great. I think it captures the look and feel of the 1980s. The score and fuel gauge were then created on a HUD UI layer.

Scope Creep

It’s been about 7 months since I started this project (albeit “off and on”), and I am still adding features. I still want to add an optional “60’s Mainframe Mode”, and I haven’t started on the “Current Year Shmup” mode (although I have some ideas). Once I get these modes where they are playable, I would like to release some video and a playable demo.

This month I plan on tweaking the graphics and code for the 3 modes, defining what I want in the Shmup mode, and putting together a title and options screen.

SMS: The Next Mission – August Update

It’s been a few months since my last status update for SMS: The Next Mission. Over the past two months, I have decided to remove, then re-add, the shmup version of the game.  I am also again on the fence on whether I should include multiplayer support like I had originally planned (and then decided against).

Originally, I wanted to recreate the mobile version of Space Mission: Survival on the PC and Mac.  A desktop version has been running in development for several months now. The PC opens up a lot more options, so I wanted to add a lot of bells and whistles including multiplayer, and expand on the “Classic 90s” retro look.  A bit later, I decided to drop multiplayer and focus on single player.  I added a “Retro 70s” look as well.

A couple of months later I had a playable game that had two styles, Classic 90s and Retro 70s.  Same game, two styles that the player can play from beginning to end. At this point I decided that maybe it would be cooler if the player was some sort of time traveler and can warp to different video game eras. I like it!

So, right now, I have a Retro 70s, Home Computer 80s, and Classic 90s version of the game. The 2000s version will be the shmup level and I will start development on that soon. I am actually thinking of adding a “Text Based 60s” mode to see if I can pull that off.

I am trying to keep each level accurate to the decade. This includes graphics and text styles, sound, and game play.

I am not sure if changing my mind so many times is a good or bad omen, but I believe the current idea of traveling through decades and playing the game with features available at that time will be fun and challenging. The only other decision I have to make (other than a name change, perhaps) is whether I want to add (local) multiplayer support, which would be ideal for consoles.