Switching From AS3 To Swift
So it has been a long while since I’ve posted here. I do a lot of things, and coding no longer takes up a majority of my time. But I still enjoy it more than anything else.
For the last year, my biggest coding project has been to translate my biggest app, Mah Jong Tiles Solitaire, from AS3 in Adobe Animate (AKA Flash) to Swift in Xcode. My main reason for this is I no longer have confidence that AS3/Air/Animate/Flash has a long-term future as an iOS app development environment. To even build an app you need to now get the “packager” from another company, owned by Samsung. They haven’t done much to move forward with it, and seem to mainly be interested in the Android side of things, not the iOS side. I’m amazed it still even works to produce an app from Adobe Animate and get it into the iOS App Store.
So I decided to slowly rebuild my game from scratch in Xcode with Swift. My initial experience was painful. The first week of trying to learn Swift was slow and unrewarding. My old mind hasn’t learned a new programming language and environment in a while. But then things started to click. I made fast progress after that and had a majority of the game working in about a month.
At that point I slowed down. I was past they point where I doubted I could make this happen. So with the old AIR app in the store and doing fine, I wasn’t in a rush anymore. If I needed to update the app and AIR wasn’t working anymore, I was sure I could finish off the Swift app quickly.
Here and there I worked on it, with the goal of making it look and work just like the AIR app. I didn’t want players to see much of a difference. I know how these casual game players hate change, and even so much as a font size difference is enough to invite bad reviews and “Why’d they change it!” complaints.
When I got close, I decided to do a beta test using TestFlight. I actually did 5 rounds over 3 months. I recruited testers with a message in the old game, explained to them what I was doing, and asked for feedback. It went very well with the game being substantially better at the end of the testing.
Then I held my breath and launched it. I was concerned that the little differences would upset players. I was also concerned that it would change the amount of downloads or the ad revenue in some way. But it didn’t do any of that. Worked very well.
Part of the reason for me to do this is so that I can now really work on the game with confidence. I want to do regular monthly updates with new features. I want to slowly change the game to be more modern and fit in with how other apps work. So much of the game is stuck with old 2010 designs, or even things from the days where this was a Flash (and Shockwave before that) game on the web.
So since the launch of this new version, 3.0, I have come out with 3.1 and 3.2 with improvements I would have never attempted in the AIR version.
Another thing I am doing here is to try to focus on just this one app. I’m resisting doing the same thing with my next-most-successful app. I just want to work on this one. Make it better, add features, promote it even. We’ll see if I can keep it up and if that constant attention will translate into growth.