FlyBy released on iOS!


Its taken awhile, but FlyBy has finally been released on iOS! Check it out!

Of course, the game is still available on Google Play too!

appstore

appstore2

When I first started developing FlyBy, LibGDX had no support for iOS. I had decided I would just make an Android game and it would never be released on iOS. So its pretty amazing to be able to say the game is available on iOS. But there were quite a few challenges even once LibGDX added its RoboVM backend for iOS. For starts, I don’t have a mac, or any iOS devices and I’m not a registered Apple Developer. Three essential requirements for making an iOS game! Luckily fellow game developer Matt Taylor offered to help out with the iOS version, and he had access to all three of the things required. Due to the way LibGDX works, where each platform has its own project that shares a common core project, it was possible for me to work on the core game, adjusting game play elements and re-factoring certain areas that would allow Matt to work on implementing game center support for the iOS version. The process essentially had me exposing certain elements of the game into interfaces so they could be accessed by the iOS project (for example achievement unlocks). This worked well, since Matt was not familiar with the code base at all, and allowed him as little  direct interaction with it as possible, making it possible for him to focus on getting the core game center implementation to work.

For the most part, the core game worked almost without any adjustments, once the initial setup of deploying to iOS was overcome. However, there was a few quirks, mainly with sound. If serveral sounds were playing at once, there was a noticeable drop in FPS on the iOS version. Debugging issues such as this was very difficult. As they lied with the base engine classes, I had to essentially guess at what the problem could be, ask Matt to try out some changes, wait for him to do it, and then wait for him to tell me the results. This made for quite a slow and tedious development cycle and made it nearly impossible to tackle the problems to an acceptable standard. In the end, to overcome the sound issue, all sounds except the background track was removed from the iOS version, a less than ideal solution.

However, against all odds, the game is now released on iOS, and works decently on most devices we know about! So if you haven’t yet, download the game!

FlyBy Post-Mortem

FlyBy has been on the Google Play store for nearly 4 months now.  The game has been downloaded over 23,000 on the Google Play store and scored an average rating of 3.8 out of 155 reviews at the time of writing.

What went right

  • People actually played the game
  • Press and reviews of the game on various websites
  • “Piracy” in China

What went wrong

  • Game Difficulty
  • Giftiz
  • Crashes

People actually played the game

When we released the game we really had no idea what to expect. I had read developers posting on various websites and forums saying how they were stuck with only a handful of downloads and were struggling to get any attention at all. At the same time I had seen similar games on the store with what seemed like really high downloads in comparison. I had decided that 1,000 downloads would have been a good result before release. So with 23,000, I am really pleased with the reception FlyBy has received.

Press and reviews of the game on various websites

Before the release of FlyBy we put together a press pack to try and make reviewers life as easy as possible. It include screenshots of the game, information about its development, and even a PC version of the game for press use only. I believe this helped us get reviews on some websites, and although non of the reviews had too much of a dramatic effect on the download count, they definitely helped. Our biggest feature happened when one of the other developers wrote to a local newspaper on a whim. We honestly didn’t think there would be a response, but to our surprise the newspaper decided to write an article about FlyBy. The online version of the article can be found here. Please excuse some of the quotes, the guy doing the telephone interview was a little nervous/excited, and not fully in the loop with the development of the game!

Some other reviews are as follows:

Super Gamedroid

Fettspielen lets Play Video

Jumpcraft Review

“Piracy” in China

One of the events that had the biggest impact on FlyBy’s download count was when the game got uploaded to some Chinese app stores. I noticed this was happening due to integrating Google Analytic’s. There was a few days where Google Analytic’s was showing very high new users but Google Play wasn’t showing information that agreed with all these new users.

Graph of new users from Google Analytic’s

Although these downloads didn’t get added to the Google Play page and potentially impacted the visibility of the game on Google Play, it was still positive to get a few thousand extra downloads.

Game Difficulty

FlyBy is probably too difficult. I was very keen on integrating Google Analytic s into FlyBy to collect more detail information about the users who would play the game, to hopefully be able to use to make improvements in later updates. One of the challenges in the game is called “Flying License” and is basically an achievement for completing what is considered the tutorial section of the game (flying through the first two caves for the first time). To date, this achievement has been earned 1,562/23,000 (more like 25,000 if you count the Chinese downloads). Considering most of the content in the game cannot be seen until this section is completed, and this section is suppose to be easy compared to the rest of the game, this is a tiny percentage of players. Most the people who downloaded the game never saw the ‘good’ parts of the game.

Giftiz

Giftiz is a company that has created an app discovery service. It largely evolved around users being rewarded to download apps from their app. The rewards can be built up for real prizes too apparently. Giftiz contacted us presenting us the opportunity for a free feature in their app, in exchange for putting a button that advertises their app in FlyBy. The featuring did give us quite a big spike in downloads.

GiftizGraph

Giftiz Spike from Google Analytic’s

So why was it bad? Well part of the agreement is you have to keep their button in your app for at least 6 months after the featuring. That is quite awhile considering the featuring only gave about 2-3 days worth of extra downloads. The company also claimed there was no pop-ups to go with the button. When I was integrating their SDK into FlyBy using a developer key they gave me, I never saw any pop-ups either. However it became apparent once released, that on the first time the game is ran, Giftiz forces a full screen page explaining about their product. Interactions with the company were often unprofessional. In e-mails they referred to FlyBy by the name of a completely different game (one that was getting featured around the same time), and they pushed back the feature date of FlyBy very near the agreed date (due to a paid featuring, which is understandable) meaning we got featured after our first month on the store had passed. All in all, this featuring was not worth the time it took to integrate their SDK or communicate with the company.

Crashes

Since release there has been 10 different crashes reported roughly 150 times. Although I feel this number is relatively low, I think it could of been lower. The most common crash report is in “android.opengl.GLSurfaceView$EglHelper.throwEglException” which has been reported 110 times. 94% of these reports come from devices running Android 2.3.3-2.3.7. Considering the game probably does not run very well on these phones at all, I feel setting the minimum Android version higher and not allowing these devices to download the game could of had an impact on the overall rating of the game, by avoiding as many 1 star reviews from users who the game did not work for.

 Conclusion

I feel there are more improvements that I could of made to improve the release of the game, such as working on updates after release. The game was released right before my final year of University began, meaning I did not have as much time to continue developing it. However, as mentioned before, the game has received far more downloads than I had anticipated and has been a great learning experiencing. I hope to use the what I have learnt from this process in the future, when I hopefully release more games.

 

 

FlyBy is Released!

After around 7 months of work, I have released FlyBy onto the Google Play Store! Check it out!

FlyBy On Google Play

SS0 SS1 SS2

FlyBy On Google Play

FlyBy is an exciting, fast paced, arcade style mobile game with a variety of exciting obstacles and challenges to complete! With randomly generated levels and online leader boards powered by Google Play. FlyBy offers many hours of plane flying fun! We hope you will enjoy playing and share our game with your friends!

Check out our website at www.FireFreeGames.com for more information about us or follow us on Twitter at @FireFreeGames!

Features:

Collect coins to buy power ups and upgrades in the in game store
Randomly generated caves and levels for endless game play
Many different exciting obstacles to avoid and fly through
Online leader-board powered by Google Play Services
Thrilling challenges to complete

Development

Working on FlyBy has been a long and at times challenging project. When I began the game I was just trying to make something small I could get done in a weekend. I made a little engine using LibGDX and put together a very rough prototype. After showing the prototype to Liam Bower we decided to work together (him doing art and me doing programming) and turn it into a full game. Our main goal always being to create a finished, released game. We figured it would take about a month to do. In reality it took us closer to 7. Along the way Luke Avery began doing small contributions on and off, mainly working on the in game menus, working with Liam to make them look the way Liam envisioned, while I worked on most the engine and core game play elements of the game. Adam Brown generously composed a few sound tracks and created some sound effects for the game as well.


Time lapse video of key versions of FlyBy’s development

 

There was a range of challenges I had  to overcome during the development, such as the procedural generation of the caves, game design decisions, performance optimization to improve the speed the game ran, integrating the Google Play Services into the game and countless other difficulties. Each challenge forced me to learn a lot about a wide range of topics.

FlyBy grew into a bigger project than I could have ever imagined when I started working on it, and I am proud of the way its turned out and the work everyone involved contributed to the game. So please, give it a go!

LibGDX Mobile Game

So for the last few months I have been working on a small mobile game. I had to stop using Marmalade because I was unable to get a student licence and my trial expired. Because of this I have decided to moved back to LibGDX which actually supports iOS now. The process of getting a LibGDX game onto iOS seems a little daunting but I will give it a try anyways when the game is more complete. Anyways, here are some screen shots of what I’m working on:

Inside a cave

Inside a cave

Some spinning obstacles

Some spinning obstacles

A mine field

A mine field

The graphics are being created by Liam Bower. The game is basically a helicopter style game with extra features such as different areas, power ups and a shop. We hope to have it finished pretty soon, although it has already taken much longer than originally anticipated.

One interesting problem I had to work on recently was generating caves with smooth walls like in the first and second screen shot. Before smoothing the wall generation, the walls were generated in square blocks, and actually still are. What I do is convert the top and bottom blocks on the walls into two triangles.One triangle using the center point on the top edge of the block, the center point on the top edge of the next block, and its x and y position to draw a triangle. Then the other triangle just draws to fill in the rest of the block. This picture should help illustrate whats happening:

Debug drawing of triangles

Debug drawing of triangles

The results of this method are good, however it is probably more process intensive than it needs to be, and finding ways to optimize it will be something I will need to look into. One solution could be generating ‘height map’ like structures, and then using the triangles to draw from the edge of the screen to the tip point of the map. This will remove the drawing of all the boxes under the triangles as the triangles would create the entire terrain. Generating the terrain in wider sections will lower the number of triangles being drawn at once too.

The progress of the game is going good, with almost all the main features already programmed into the game, but there is still quite a lot of work to do before we can call it finished and release it…