Android development and the future of RetroX
I wanted to share some thoughts about the recent bad news of LaunchBox for Android being discontinued. I’ve read their forum post and wow, what they describe is exactly what I have been dealing with Android all these years while developing RetroX for it.
I decided to write this post before some questions arrive, reading the LaunchBox forum on this topic can make the future look bad, but I want to tell you why RetroX is not and should not be affected by those issues. I strongly recommend you to read their forum post before reading what comes below.
Honestly I was expecting something like this to happen, only that I was surprised that it actually happened. Making an emulator launcher is something that one can do in a few hours if you have some experience in Android or a few days if you are new to the platform. Getting results for launching 8 and 16 bit console games is relatively quick. The problem starts when you want to go beyond that and you start dealing with Android limitations, fragmentation, corner cases, emulation of computer systems and the list goes on and on.
Making development economically sustainable
When I saw the LaunchBox releases it was like seeing the initial days of RetroX and I knew all the road and its difficulties that would come ahead. Their price point (5 dollars) for a lifetime license rang a bell on me, they should sell a lot of licenses or they should let their PC app fund the Android development, there was no other way to do it.
Sadly, the mobile market set a bad precedent when people started selling apps as cheap as 1 dollar, that made people get used to get great apps at a ridiculous price. People learned to associate Android (and iOS) with cheap apps. Of course some companies succeed at that, but they first needed to throw a lot of money on marketing force to get people’s attention. Not all developers can do that, including me.
On Jason’s words:
It doesn’t really make sense for us to be spending half of our development time on the project, while only making a 5% return
I became aware of this issue in 2018. As RetroX grew and Android started changing for bad I realized that having cheap lifetime licenses would not be enough to continue developing RetroX and to continue running the associated services (support, infrastructure, etc). RetroX would have died this year (2020) following that trend. I already have seen other front ends being abandoned because of this, and I didn’t want it to happen to RetroX, so I took the unpopular decision to use a subscription based model to make sure that RetroX will continue growing for many years to come. Some people got mad about this but now LaunchBox is a good example of what could have happened with RetroX.
Android is a hostile environment for software developers. Google has total control of this environment and they just don’t care about breaking apps. I also have to add that they have been really erratic in some areas like hardware acceleration, permissions and the worst of all, storage policies. And this will not change for the better. More on that later.
Play Store and software distribution
What Jason says about the Store is quite true:
The Google Play Store is really the only viable way to release apps on Android, and red tape is everywhere
Fortunately I didn’t need to be on the Store to get where I am today (thanks Stuart Law and John Logie for that), but that’s the reality of the Store and now I’m glad that Google rejected RetroX.
It’s not only about their arbitrary restrictions or the impossible-to-contact-a-human policy, but there is a worse problem: Random users are harsh with developers. If they don’t understand the app – which is more common that what one would think – they just throw shit at you, it’s just a matter of having a look at their uninformed comments on some apps.
I wouldn’t give names but once I started talking with a developer of another frontend and he had fallen into depression after receiving the feedback from the users in the Store. I’ve checked today and his app hasn’t been updated since 2018 and his public activity stopped in 2017. His app was quite good but random users… they are nasty.
Being out of the Store was not my decision but it was a fortunate consequence of the red tape on there. I rarely get random users, most of you tried RetroX because a trusted friend or family recommend it, and I know that every person that purchases a license do it because they liked the app and they will tell their friends about it with confidence. I think one to one recommendations is a lot better than getting random people finding your app in the Store among the sea of 1 dollar apps and throwing shit back to you.
Future restrictions on Android
I want to quote Jason fully in this topic:
There are major concerns regarding the future of emulation on Android at all. Google has begun severely restricting the ability to share files between applications for security reasons, and it’s already affecting users who are running Android 11. They’ve been pushing for these changes for quite a while now, but they’re a poor solution and they wreak havoc on emulation, because they disallow sending ROM files from a frontend to an emulator, amongst other things. This was the straw that broke the camel’s back for us.
First some background about this: All frontends on Android run an emulator that was installed manually by the user, and they are separate apps developed by different developers. Because of that, they can’t share their files. And yes, if Google does what Jason says these frontends will all stop working unless they find an obscure way to bypass those restrictions, but bypassing restrictions will risk them to be thrown out of the Store by Google at any moment.
For your peace, RetroX doesn’t work this way and it won’t be affected for such a change.
I’ve always said that RetroX is not a frontend, but it’s easier to use that name for people to understand the app. Why is not just a frontend? Because In RetroX I maintain the main app and the emulators, because for a tight integration I need to change the emulators to be “RetroX compatible”. That has a bad and a good side: The bad side is that adding more emulators or updating them require tons of work, the good side is that they are fully integrated and tested against RetroX. Being both the app and the emulators being distributed (signed) by me, they can share the files with no restrictions, so the changes announced by Google will not affect RetroX.
Now, you may say with funded reasons that “hey Franco, but look at N64, Dreamcast and PSP, they haven’t been updated, and where is C64?”. Yes, you are right, that’s exactly the bad side of having to modify the emulators to make them run great with RetroX. Their codebase is all different and worse, some of them are very old and the code is a mess to deal with, that is a showstopper to work on those emulators. For example C64 today runs with RetroX but the controls, keyboard support, cloud saves etc, is a big work that hasn’t been completed. Dreamcast.. they changed a lot of files and the integration needs to be done, and the story goes on and on.
Compare this to Saturn. It fought back, it wasn’t easy, but I finally did it. What’s the difference? The difference is that the Saturn emulators run inside RetroArch, so I integrated RetroArch first and I don’t need to do that again to add more emulators like the Saturn ones. And that’s the direction I want to take from now on. If possible all the emulators will be added through RetroArch were some cool additions has been made like live borders / backgrounds, and recently the activation of their rewind / forward feature. And there is still a lot of interesting stuff to be done there.
Currently I’m in a personal campaign to check what emulators can be integrated through RetroArch, now that I know their code better I’m able to add some required features like virtual keyboards and such.
Plans for the future
After moving more emulators to RetroArch I really like to put a foot outside Android. Don’t get me wrong, the main app will continue to be targeted to Android, only that I want RetroX to exist on desktop systems as well. Initially it will be Linux based but gradually I want to add support for OSX and Windows as well. This will open the door to a wide range of opportunities, I would love to have a bootable image of RetroX for Single Board Computers and such.
Even with the Android and its crazyness I see a bright future for RetroX for many years to come, so thanks for sharing the ride with me.