Bright Newt

The Best Source Codes on the Web, Period.

Flip Flip Fox

World-class Amazing Thief Clone for iOS

Available for iOS

Screenshots & Videos:

  • screen322x572
  • screen322x572 (1)
  • screen322x572 (2)
  • screen480x480 (1)
  • screen480x480 (2)

Want it?

Single Use License

  • Full code for iOS
  • Use on one commercial project.
  • Support for one year.
  • Assets list and design files

Multi Use License

  • Full code for iOS
  • Use on unlimited commercial projects.
  • Support for one year.
  • Assets list and design files.

Complete License

  • Full code for all platforms
  • Use on any commercial projects.
  • Premium support for 2 years.
  • Assets list and design files.

Description:

The reskinning game has changed.

In fact, it looks like a lot of developers have stopped making apps altogether.

There are a number of reasons for this:

  • 1000 new apps appear in the App Store every day.
  • Some old monetization tactics (e.g. interstitial ads at startup) and app business models (e.g., quantity over quality) aren’t viable anymore.
  • Beautiful design is KING.
  • Apple may reject unattractive reskins.
  • Trends and tastes have changed.

What does this mean for app developers who are still in the game?

Well, for starters, I’d say it means don’t spend hundreds of dev hours and thousands of dollars until you’ve validated a market. It’s better to first publish a simple app to gain traction. You can iterate later, adding features and increasing the app’s value.

One company that has a solid track record of creating popular games is Ketchapp. They create inexpensive games like Amazing Thief and spend most of their money on marketing.

Creating an Amazing Thief Clone

Last year, I spent thousands developing the sophisticated game engine behind Viva Match Battle. This year, I’m going to keep it simple.

Amazing Thief has over 16,000 ratings and reviews, so that will give you an idea how popular the game is. Simliar to Flappy Bird, it looks deceptively easy. The character, a stick man, runs across a horizontal platform. When he comes to a cliff, you must tap twice to make him flip up or down onto the next platform. Simple, right?

Timing is everything, and that’s where the skill in this game factors in. You never know which platform is coming next, so you have to make split second decisions when flipping the thief up or down, once or twice, in rapid succession or with a slight lag.

I liked the game so much I decided to clone it and create Flip Flip Fox: same gameplay, cuter character, brighter colors, universal game, 64-bit compatible. You can check out the game here: https://itunes.apple.com/us/app/flip-flip-fox/id952470252?mt=8.

Introducing Flip Flip Fox

I set out to create an app template—an Amazing Thief clone—that would offer a rewarding yet basic iOS tutorial for beginners and a simple, inexpensive reskin option for experienced developers.

Check out the screenshot of the Images.xcassets folder below. Flip Flip Fox has only 6 different design assets: app icon, launch screen, 3 vector images for the character, and 1 image for the “tap to flip” instructions.

Simple.

 

flip flip fox code

The endless tap-flip gameplay can obviously work well with a variety of themes and characters: ninja & martial arts, sports, fantasy (dragons and elves), zoo and barnyard animals, simple geometric shapes, 8-bit retro, and superheroes.

What about development hours required to reskin the game?

If you leave the gameplay mechanics untouched, you can easily reskin this game in less than 5 hours.

You could make one reskin in the morning and another in the afternoon.

Here are some more specifics:

  • iOS 8 compatible
  • iPhone 6/6+ compatible
  • 64-bit compatible
  • Universal code for iPhone, iPod & iPad
  • Only 6 total design assets needed
  • Only 3 total character vector files needed
  • iAd banner ads
  • Playhaven/Upsight interstitial ads (with Return to Home placement)
  • Remove Ads in-app purchase
  • Restore Purchase text button
  • Endless gameplay
  • Game Over screen
  • Share score to Facebook, Twitter
  • Game Center Leaderboards
  • Rate the game feature

Comments and Support:

    Jeremy

    I am in no way a coder, however I have successfully setup a second Playhaven placement by copying some code from the main view controller into GameOverViewController.m..

    My problem is that the remove ads IAP does not remove the Playhaven interstitial ads for me, in this location at least..

    I’ve had a good look at the MainViewController.m file and can’t seem to find how you are removing the playhaven ads there either..

    Could you please help me identify the code that needs to be added to the game over controller to ensure the Playhaven ads get removed with the IAP?

    Thanks in advance..

      austinlchurch

      There was an issue in the first version we released where the code in “purchaseRemoveAds” was not functioning correctly. Make sure that “[[NSUserDefaults standardUserDefaults]setBool:YES forKey:kShouldHideAdsKey];” is the code, if not we will need to send you the updated version, or at least the updated code snippet.

        Jeremy

        I saw you mention in another comment about an updated version.. I believe I am using v1.1?

        I’d really appreciate if you could you please email me details for the updated version along with the code snippet..

    RB

    Hi, I’ve reskinned and submitted the App to the App Store but it was rejected because the ‘Remove Ads’ button opens the app store. When I look in the storyboard, the ‘Rate’ button frame and/or constraints seem to overlap the ‘Remove Ads’ button which seems to be the cause of this issue.

    I am using v1.1 of the source, is this the latest?

    In the simulator, when I click the ‘Remove Ads’ button I get the following error in console:

    “iRate could not open the ratings page because the App Store is not available on the iOS simulator”

    Which confirms that the App Store is trying to open when the Remove Ads button is tapped.

    I’ve tried clicking update constraints/update frames but it does nothing. I don’t really understand frames and constraints but something is definitely wrong. I’ve tried with a fresh copy of the source but the original, unedited files have the same behaviour.

    Here’s an image showing what appears to be the buttons overlapping:

    http://i.imgur.com/JgdfkjL.png

      austinlchurch

      I see, it looks like there is a double target in the story board to the button.
      To fix this:
      1) Go into the storyboard file.
      2) On the left you will see a list of ViewControllers, click on MainViewController, then in the dropdown right click (two finger click, or command + click) on the MainViewController item with a white square inside of a yellow circle icon next to it.
      3)Near the bottom of the list, you should see “rateButtonPressed:” under received actions. You should see two items affiliated with it — press the ‘x’ next to the “Remove Ads”

      Hope this helps :)

    Aaron

    Apps that are “demo”, “trial”, or “test” versions will be rejected. Beta Apps may only be submitted through TestFlight and must follow the TestFlight guidelines

    Your app still includes content or features that users aren’t able to use in this version. Apps that are for demonstration, trial, or up-sell purposes only are not appropriate for the App Store.

    Specifically, when the user taps the remove ads In App Purchase it prompts the user to purchase the feature on the app store.

    Please complete, remove, or fully configure any partially implemented features. Alternatively, please remove all references to “demo,” “trial,” “beta,” or “test” in your application description, app icon, screenshots, previews, release notes, and binary.

    We also found that while you have submitted In App Purchase products for your app, the In App Purchase functionality to Remove ads is not present in your binary.

    – Specifically, remove ads transfers the user to the App Store to purchase a different version of the same game and not just remove the ads from the current app.

    If you would like to utilize In App Purchase in your app, you will need to upload a new binary that incorporates the In App Purchase API to enable users to make a purchase.

    Once you revise and resubmit your binary, you will also need to resubmit your In App Purchases for review since they are in the state Developer Action Required. For each IAP product submitted, please be sure to edit the detail information or cancel the request to change the detail information for the In App Purchases using iTunes Connect.

    I made 2 reskins but both cannot get approved because of this. I followed the PDF guide included with no success.

    Please help.
    Thanks

      austinlchurch

      It sounds like you have your In App Purchase set up incorrectly.

      Make sure that you’ve set up the IAP in iTunes connect correctly, and that you have the correct link set up in the app for that purchase. It looks like you may have put a link to your app in the app store instead of a link to your IAP.

      If you download Flip Flip Fox from the App Store you can see the correct behavior for this purchase.

      Thanks!

        Matt

        Hi Austin,
        I experienced the same problem. We’ve been rejected three times because of this issue. And I just found where the problem is after checking and re-checking the iAP configuration etc.
        The problem is not in the iAP configuration. The problem lies with the “Remove ads” button. In the set events for this button, there are two events : rate, and remove ads. Thus the App Store opening… I deleted the “rate” event and everything works fine now. I double-checked by unzipping your source code folder again, and there are these two set events. Too bad we lost 2 weeks because of this…

          austinlchurch

          @Matt You may have been working from an older version of the code. When we first encountered this issue, we updated the code and shared the update with all of our customers. Sorry if you missed the SendOwl update email!

            Matt

            No pb as I managed to find out why it wasn’t working for us… just to get rejected by Apple once again for other crazy reasons that has nothing to do with the app in itself :) I didn’t see any update email in my inbox, I hope it didn’t go to the spam folder on the mail server… I’ll check this right away, I don’t wanna miss this once again! Have a nice day!

    Hunnan P

    Is replacing the ground and background with an image instead of a color in this app easy? If so, do you know of an article or somewhere I could find out how to convert it to an image?

      austinlchurch

      As the background is currently just a view with it’s background color set to the color you see, there would be some coding required to change the view to an ImageView, as well as generating all of the appropriate images for the different screen sizes.

    Lemuel

    Hi Austin,

    I am having some trouble testing the Leaderboards and Restore Purchases.

    I already created an leaderboard id at itunesconnect, replaced the kGameCenterLeaderboard and used the leaderboard id that I created, sign-in to gamecenter using my test apple id (sign-in at Settings>Game Center) but when I access the “Leaderboards” button, an alert message shows up telling me that the player is not sign-in. Have you encountered this before?

    Restore purchases doesn’t do anything also. No errors or anything from the debug messages. Maybe it doesn’t work in a sand box mode?

    The removeads button works but I need to add a few code to hide the buttons during load time since the Removeads button will still show after you close and open the game.

    My changes at MainViewController.m

    – (void)viewDidAppear:(BOOL)animated {
    [self showPlayhavenAds];
    if([[NSUserDefaults standardUserDefaults] boolForKey:kShouldHideAdsKey]) {
    NSLog(@”HIDE removeAdsButton and restorePurchasesButton”);
    self._removeAdsButton.hidden = YES;
    self._restorePurchasesButton.hidden = YES;
    }

    }

    Hope you can help me with the gamecenter and restore purchases issue. I’m about to upload and send the game for review today but I encountered those issues.

    Thank you!

      austinlchurch

      For Game Center, make sure you are in Sandbox mode, which can be found in Settings->Game Center->Developer.

      Restore purchases functions fine in our live app on the store, you may need to wait briefly for the purchase to be restored, but once it is you should get an alert notifying you that it was a success.

      As for your hidden button issue — again this does not seem to be a problem with the live version of the app, and I am unable to replicate your issue within the code. Have you properly set up your IAP in iTunes Connect? Are you testing the purchase with a sandboxed account?

      Hope this helps :)

    David

    Are you going to fix your source codes to 64 bit? I recently purchased Iconic and got this warning “Missing 64-bit support – Beginning on February 1, 2015 new iOS apps submitted to the App Store must include 64-bit support”.

      austinlchurch

      We are working hard on updating our most popular codes for 64 bit support!

    Ob

    Hi Austin,

    I’ve just download and open Xcode to run the test via simulator. Unfortunately it got an error. Any advices? Thanks.

    ld: library not found for -lPods-GameCenterManager
    clang: error: linker command failed with exit code 1 (use -v to see invocation)

    lemuel

    Hi Austin,

    Is it easy to change the iAD and playheaven and used AdMob banner and chartboost instead?

    Thanks.

    Lemuel

    Nathan

    I have purchased this source code and am really happy with it! Thanks for sharing. I did have one question. I am new to coding so if it is simply adding something and I have missed it, I apologize. But with how you have the _foxNormal image set up.. is it possible to add a fox-normal-2, fox-normal-3 pdf to a sprite kit to have a simple animation within the images? I have looked online and found some answers but when I try and plug it into the code I am not getting the results. I’d really appreciate a point in the right direction if you wouldn’t mind. Thanks!

      austinlchurch

      Hi Nathan,

      As-is, the code does not make use of any frame-based sprite animations.
      There is a great tutorial on Texture Atlases and using them for the animations you are describing here:
      http://www.raywenderlich.com/45152/sprite-kit-tutorial-animations-and-texture-atlases

      Hope this helps!

        Nathan

        Austinlchurch, Thanks again for the link, I was able to get the animation working. I am testing the game with my iPhone and am having an issue with when I click the ‘remove ads’ button. It works correctly and removes the iAd. But when I go back to the home screen the PlayHaven ad still pops up. I haven’t changed any of that code other then adding the AppToken and AppSecret to the Prefix.pch. Also when I close the app and reopen the app all the buttons appear again (the iAd are still hidden). Is there some code I missed? I am not sure how I haven’t messed with any of that code. Any help would again be greatly appreciated! Thanks!

          austinlchurch

          Have you set up an IAP in iTunes Connect?

          I am unable to replicate this issue, and the issue does not appear to be showing up in our live app on the App Store.

          Make sure that you have IAP setup in iTunes connect, have its info set up correctly in the app, and that you are testing the purchase in a sandbox environment.

          Hope this helps!

            Nathan

            yes, the IAP is set up and worked in the sandbox environment. I got all the correct pop up box of ‘purchasing’ and ‘purchased’ but the playhaven ad still shows everytime I go to the home screen or restart the app. The remove ads and restore purchases buttons disappear when I ‘purchase’ but when I restart the app they appear again as well.

            austinlchurch

            Nathan, I’ve sent you an updated version of the code fixing the issues. Thanks for your patience :)

        Nathan

        Thanks for the link. I will be using it for sure!

    Jeremy

    How easy is it to change the colour scheme and font.. are the instructions to do so includes?

      austinlchurch

      Instructions are included! (And they are very straightforward)
      Most of that work should be done inside of the Storyboard file.
      For the actual game scene, you will need to edit a bit of code, but only to set the colors to the UIColors you desire.

        Jeremy

        Hi Austin.. A couple more questions..

        Is there an easy way to move the iad banner to the top of screen rather than the bottom?

        Also, when I test the share buttons it only shows ‘message’ and ‘mail’ options.. should I be seeing Favebook and Twitter as options?

    Aaron

    Hello, I drag the flip flip dist folder onto my terminal shortcut then when the it opens i run the pod install, and this is what is returned.

    Analyzing dependencies

    Updating spec repositories
    /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/pathname.rb:422:in `open’: No such file or directory – /Users/USERNAME/.cocoapods/repos (Errno::ENOENT)
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/pathname.rb:422:in `foreach’
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/pathname.rb:422:in `children’
    from /Library/Ruby/Gems/2.0.0/gems/cocoapods-0.35.0/lib/cocoapods/sources_manager.rb:63:in `all’
    from /Library/Ruby/Gems/2.0.0/gems/cocoapods-0.35.0/lib/cocoapods/user_interface/error_report.rb:130:in `repo_information’
    from /Library/Ruby/Gems/2.0.0/gems/cocoapods-0.35.0/lib/cocoapods/user_interface/error_report.rb:34:in `report’
    from /Library/Ruby/Gems/2.0.0/gems/cocoapods-0.35.0/lib/cocoapods/command.rb:58:in `report_error’
    from /Library/Ruby/Gems/2.0.0/gems/claide-0.7.0/lib/claide/command.rb:300:in `handle_exception’
    from /Library/Ruby/Gems/2.0.0/gems/claide-0.7.0/lib/claide/command.rb:274:in `rescue in run’
    from /Library/Ruby/Gems/2.0.0/gems/claide-0.7.0/lib/claide/command.rb:264:in `run’
    from /Library/Ruby/Gems/2.0.0/gems/cocoapods-0.35.0/lib/cocoapods/command.rb:45:in `run’
    from /Library/Ruby/Gems/2.0.0/gems/cocoapods-0.35.0/bin/pod:43:in `’
    from /usr/bin/pod:23:in `load’
    from /usr/bin/pod:23:in `’

    How do i get past this?

      austinlchurch

      It looks like your cocoa pods may not be set up correctly.

      Try the command ‘pod setup’ in terminal. It may take some time to finish.

      If this doesn’t work, you may want to remove cocoapods, reinstall, then run setup again.

      Hope this helps!

    James

    Can you please clearly specify the files that need to be reskinned graphically? Many thanks.

      austinlchurch

      @James Flip Flip Fox makes use of several tools in Xcode—storyboards and an xcassets folder.

      If you check out the screenshot of the Images.xcassets folder in the blog post, you’ll see that you need to add in your new app icon images and launch screen images to the appropriate groups, with appropriate sizes. You’ll also need to replace the existing Flip Flip Fox character assets.

      There are 3 of these character assets: Fox-Flinch, Fox-Normal, and Fox-Spin. These are the assets used for the in game character. Fox-Normal is the asset used for the character in a movement state, Fox-Spin is used with the character jumps, and Fox-Flinch is used when the character hits something and loses the game.

      Note: These assets are VECTOR assets. Beginning with Xcode 6, apple now supports vector assets that automatically generate for different screen sizes when the app is compiled, neat! What does this mean for you? The character assets you include should be 50×50 vector PDFs. NOT PNGs. I know it sounds crazy not to use PNGs, but trust us, it’s awesome. If you do still want to use png, just change the group’s “types” section from Vectors to Bitmaps and add all the necessary png sizes. (Don’t forget iPad!)

    Alex

    Hi Austin

    Great post! Do you have a post on some app marketing that should be done in 2015?

    Cheers
    Alex

    Dan L

    Well, the bad news for Indie App Publishers is that Insterstitials Ads are no longer effective. This meant that Re-skin Codes should built-in much more iAP functionalities. I noticed that there is now a shift back to Paid Apps by Publishers. Cheers

    Chris

    You’re totally right about the reskinning business change.
    This app business is really fluid.
    Ketchapp’s model is even better since you don’t have to spend a ton on artwork :)

    Nathan

    Great game! This is on my list to get

Join in:

Your email address will not be published. Required fields are marked *