App #1: FruitPoker

Tamas Szikszai
5 min readApr 10, 2017

--

You may or may not read my previous story but for various reasons I challenged myself to build 10 Apps in the upcoming 12 months. Just to reiterate: these apps won’t change the world. They will be just small apps, each of them teaching me something new.

Also something very important: I’m not working alone on this project. Since I suck at design my best friend and very talented designer Gergely Bakos is helping me with all things pretty.

Since I’ve only ever developed for iPhone, in the spirit of challenging myself, it only made sense to develop my first app in the series for Android too. In fact I ended up making it Android first. Usually I would make an MVP first for only one of the platforms, but for the app I had in mind I was sure it will be moderately popular in a certain market, and I was sure I can market the hell out of it for very cheap. So why not go all in?

So what is the product?
The product is a simple, yet addictive Video Poker app. It is a remake of a classic poker machine that was popular in Hungarian bars up until 5 years ago, when the government decided to ban it, due to the fact, that it basically ruined a bunch of family’s financials. The poker machine was called FruitPoker (well, technically “Gyümölcs Poker”)

Why was this game so addictive?
In my opinion the key for any slot machine is to make the user win a little bit, but give them further long term goals, so they never cash out. This formula is valid for pretty much any kind of repetitive, incremental game. For example the popular Pokemon Go app is applying it very well. Even tho you caught all the existing Pokemons there are lots of additional challenges (reach the maximum level, fight gyms, collect all medals, etc.)

The FruitPoker game of course is much more simple. The base game is designed to be easy to understand (casinos main targets are not the sharpest pencils):

  • There is a deck of special cards, that of course you can’t see. The deck consists of “low” cards (diamonds) and “high” cards: cherries, plums, lemons, melons, bells, bars and a joker
  • The goal is to get the best 5 cards out of two deals. The best possible combination is 5 bars that gives you 1000 times the bet.
  • When you hit the “deal” button the machine gives you 5 random cards and automatically holds the best combination out of it. For example if the deal was: “diamond, diamond, bell, bell, lemon” it would hold the two bells.
  • Then you can deal again and it will give you more cards instead of the unheld ones. If you end up with 3 or more of the same cards (except diamonds) then you win a certain amount of money
  • If you decide you can gamble your winnings on a double or nothing basis

Again, it is pretty simple. What makes it addictive is some of the additional goals you can work towards:

  • If in any deal you get two (and no more) cherries your “cherry meter” goes up. If you hit 50 on your cherry meter you get 50 times your bet
  • If you collect 4 of each cherry, bell, melon and plum you get 100 times your bet
  • And of course there is the long term goal of hitting the jackpot that is 5 bars

As every teenager (at least in Eastern Europe) I was frequent in bars and played this game quite a lot. As a developer of course while playing I was always thinking about how I would implement such a game. When I first sat down to implement the main logic in Java it literally took me at most 2 hours to do so. The algorithm itself was not a problem at all.

In order to add a viral element to the app I wanted the users to be able to share their special urls to gain extra coins. To do that I also had to implement the entire game for the web. This means that if I decided to go native I had to implement the entire application in 3 different languages: Java for Android, Swift for iOS and Javascript / HTML for the web. For a little while I was considering web-views but I decided that in the spirit of pushing myself to learn new things I will go all native anyway. Maintaining three code bases will be a bitch but that is for future Tamas to deal with.

Don’t want to go into the technical details but here are some takeaways / learnings from the process:

  • Android Studio’s interface builder is nothing like Xcode and I don’t hate it. I know a lot of people are giving grief for Google’s IDE but it is not half bad. Especially if you are coming from web background like me. I much more prefer fiddling with xml to build my interface, than fighting with Xcode storyboard to render my elements correctly (and than giving up and do it in runtime code anyway).
  • The hardest thing about coding for Android is learning how to google. With swift i can always google “swift [specific issue]” and the worst I get is probably some Taylor Swift memes, but with android its all sorts of random complaints from the end-user perspective. Eventually I figured prefixing my question with “Android Studio” works quite well tho
  • Maintaining the same code in three different languages is hard. Don’t do it. It will give you headache. For simple projects like this you should probably use React Native
  • Front-endy things that you do by reflex on the web will take ages to implement on mobile. Especially for Android where you have to support hundreds of screen sizes with different pixel densities.
  • The publishing process is vastly different when you compare Google Play and the iOS App Store. Google just don’t gives a f*ck really. I accidentally pushed a very early APK to production instead of Alpha and it got approved. On the other hand I pushed the iPhone version to the App Store last week and its still pending

Right, so as of yesterday the Android version of the app is available in the Google Play store. You can also play the web version if you prefer so. The iPhone version is still pending but should be out soon.

Marketing-wise I didn’t do much yet, waiting for the iPhone version to be available. The only thing I did was a post with my (relatively large [360.000 likes]), yet very (very) inactive Facebook page. So far so good. The post went live less than 18 hours ago and we already seen 780 app downloads.

The viral element doesn’t seem to have much effect yet (~20 shares) so I will push an update shortly where I will display this functionality more prominently. Keep you posted

--

--