Solitaire 3D

Get it on Google Play
A more serious development in 3D OpenGL then Snap! Klondike Solitaire is one of the most popular games in the Android Market, and yet none of them really appealed to me visually.

Latest features included High Definition graphics, an online leaderboard high score chart, user definable images of both card backings and backdrop.  The images below of the app are older than the current version, but I like to leave them here to remind me of how far the application has progressed!

I wanted a clean looking interface, that didn’t require popup columns. Basically you should be able to play it as you see it without the need for tricky interfaces. I wanted to show off some of OpenGL animation, especially with the shuffle and deal, and specifically the winning sequence.

I’m going to keep this application updated as suggestions come in. I’ve already applied the 1 suggestion I’ve had so far! I made a pay-for version as well, and will prioritise any requests from my customers.

Privacy Policy


Solitaire 3D — 153 Comments

  1. Version 3.5.12

    Minor bug fixed: on the devices which have their Home button not on the physical device but overlaid on screen were returning the wrong screen width as it was subtracting that area which the app overlaps anyway. This resulted in the clicking on the screen not to be perfectly aligned to the 3D world behind it. (The game is rendered through a view-port into 3D perspective – the touch events are Cartesian coordinates which have to be cast into that 3D world to identify the selection of card[s].

    Nougat Operating System allows for multiple languages to be installed, which are consulted in a cascade method to determine which resources to use for any app depend on what languages they support. I rewrote the routine which fetches the resource language so it chooses the correct one for on-screen dialogs. (There could be up to 3 languages at work in the top-most app, the OS language, the app’s language and the resource language – these are often different when dialects are in use.)

    I also applied fixes to bugs send in by users by the reporting mechanism. I have resolved all that I can – some have been raised by players with custom ROMs and have disabled required features (like the Gallery / Photo – then try to chose a custom image!). And others are Android Not Responding which are caused by the Operating System but fire in my app so it looks like Solitaire crashed (these are the hardest to diagnose, 100’s of lines of data and code traces and stacks, and not one of them originating from my code!!).

    Also, the option between 1 full screen or banner ad has been opened to all languages now the translation work for that setting has been finished.

    Also, also, the cause of that *new* permission: Read Phone State: has been identified and removed. An unneeded java class was being called in by a class I was using, so I managed to use the code I need and filter that sub-class out (and Java has no conditional compiler directives, making this rather a task).

  2. Version 3.5.13

    Still migrating to Nougat, removing depreciated code and putting in conditional checks of the newer SDK features. Also, all supporting libraries have been updated.

    As I cannot test all what has gone in (emulated devices barely scratch the surface of testing), I’m a bit anxious about unexpected crashes – but best I deal with them now than put it off!

  3. Version 3.5.14

    Major bug in how I was calculating the Frames Per Second, thus CPU usage. A while back I switched from using a millisecond counter to a nanosecond counter for better accuracy and smoothness. Only, I forgot to divide that difference by 1 million (nano -> milli) thus the renderer thought it was taking about 3 seconds to calculate the screen (as opposed to the 3ms it was really taking), so it never put the thread to sleep to make up for the spare time to cap my FPS to 40 – so it was running full tilt.

    I put in a couple more CPU saving routines too, after 2 seconds of not playing the game the FPS drops to 10 which cuts down on CPU usage. During this time I also skip the code which builds the image – so it’s more like that it takes a screenshot of the last known postion and shows that instead of math and rendering, and switches back to render mode when the user starts playing again.

    I finely tweaked the playing speeds so it just plays a little bit faster, which is better on the newer devices (as opposed to the devices it was being played on 5 years ago!). Ironically, animating faster uses less CPU as it gets to the sleep state quicker and has less steps (animation frames per card) to calculate.

    Full screen ads culled, now only show when starting a new game and only after an interval of 3 minutes since the last ad – so at least 3 minutes apart, and only when a new game is started. There were full screen ads in other places, but since I applied the request of a player to put a full screen ad in on the new game I neglected to remove those other ones (like on the Pause) – so now full screen is *only* on new game, nowhere else.

  4. Version 3.5.15

    The Long Press of the Android Back was also opening the menu as it did the Full Undo – fixed.

    Removed the screen flash when returning from another screen.

    The timer is now Kept running even if not showing, and subsequently doesn’t restart the game if the timer option is changed.

    Almost fixed bug which at times doesn’t always do the smart move when clicked – it misses far fewer times now, but it still doesn’t always fire (I think it may be due to the game still rendering animations).

    • Sorry for the delay in my reply, I was out of Internet range for a couple of days!

      As I’m not sure as to which aspect of sound you’re referring to I’ll cover all of them.

      Firstly, check the quick mute button on the screen, over to the right, and ensure it is blue and not grey like this: –

      If it is blue then it could be a custom sound setting, so long press it to bring up this screen: –

      (If you do not have the sound icon on the screen you can go into Options [with the Menu button], into the Graphics & Sound tab, and use the Individual Sound Effects button.)

      Ensure that the Sound switch is on (unlike mine!), the Volume bar has a value, and that the individual sound effects you want are also selected.

      Also, check the Media sound volume in your sound panel – if the media volume is zero it won’t matter what settings are in the app as media will override them.

      If I haven’t answered your issue properly please let me know and I will try to resolve it.


  5. Been playing this game for about 2 Years now and have never had ads Pop up every 2 seconds just started 2 days ago what’s up with that?

    • Oh, you know what? I had the exact same thing about a week ago. Now my battery was down to like under 15 percent, which I never allow it to get that low, and I suspected it was some battery saving device – like maybe scaling images or controls on the fly in an attempt to cut down CPU load. I’m running the latest Nougat on my Galaxy S7 so who know what cleverness they are trying to attempt.

      One thing I can state for sure is that I lock the ads to that little banner on the screen – I mean, I have a panel there which is locked in place and set size – so if a “clever” ad tried to extend an invisible border so it got clicked it would still be confined to my panel (specifically its a relative layout view). I can also state I haven’t updated the app in a couple of months, so whatever is doing it is must be coming from another update (like the operating system).

      Obviously it had me worried, but when I recharged my phone it stopped (well, it only did it twice, but that’s enough to concern). So go figure!

  6. Version 3.5.16

    Nothing immediately obvious on the surface, but many changes to keep up with Google’s development cycle. Fully compatible with the latest version, as well as fixing every reported error.

    Solitaire 3D was also fully tested by a specialist company and their findings have been incorporated this release.

    Significantly I have reduced the number of full screen ads to 1 every 5 minutes, minimum. Which means after playing for half an hour you’d be lucky to see more that 5 seconds of ads – try getting that from watching TV! If this hits the income stream too hard I many need to revise this!

    Although not documented in the Play Store, if the user chooses to have the banner ads instead, and one is clicked, the banner bar will hide for several minutes. I cannot endorse this activity on the play store listing as there is to be no compensation for clicking ads. To my mind not showing an ad is hardly a compensation – also I am worried someone may click it by accident (should not happen though) and this will at least prevent that from happening consecutively. I can state I have spoken directly to Google and AdMob about this and they agree I am not breaking the rules – but I cannot promote this as a feature. No Loss!

  7. Version 3.5.17

    I changed ad network brokers as the one I was using had an indistinct privacy policy which was unacceptable. No other significant changes (except a couple of little bugs which where reported were fixed).

  8. Version 3.5.18

    Let’s see – I removed the g+1 button as it no longer seems to support Android Play Store addresses – although there’s not a peep from Google about that – I guess they are quietly trying to undo the attempted dominance (and subsequent backlash) of social media.

    I have installed all the latest run-time libraries and replaced old legacy [deprecated] code with the modern equivalent (where possible). Applied a lot of code optimisations revealed by Lint.

    There was a bug (or more precisely an unnecessary semaphore lock) which meant at rare times a screen touch was being ignored – that signal/wait has now been removed.

    I also found a means to cut back on CPU usage when the game is idle, that is, on-screen but not being played. This kicks in after 2 seconds of not touching the screen. Note, this can [very rarely] cause the screen to flicker when coming back from a sub-activity (like Pause or the Options screen) – but it is temporary and worth the processor saving.

    • Sorry I don’t understand the point being made. All the decks, the built in ones and the extra downloadable ones all have 52 cards – or else the game could not be solved. Please let me know by what you mean “not full decks”. Thanks, Jonathan.

  9. Version 3.5.19

    Minor bug fixes, mostly from the built-in error handler but at times from players’ feedback. I also (hopefully) reduced the chance of an “Android Not Responding” (ANR – at application level, not device level [i.e. game freezes but Notifications and Home button still work]) due to the handling of the OpenGL 3D surface, specifically in reference to leaving the game (in which case it’s ANR isn’t even noticed anyway!) and screen orientation changes.

    This update also employs the latest Google libraries, the Play Store Services, and is built with the latest stable version of Android Studio 🙂

    Minor update to the privacy policy to reflect recent changes. Nothing drastic, I just took out the obsolete reference to Google+ which is now no longer supported!

  10. The automatic setting hint doer thing on the lowest setting doesn’t see the moves,which it should pick up. But I end up noticing them anyway.. So I’m really surprised that it doesn’t always work right. Thanks, Mary

    • Oh, really? Wow! I thought it was behaving properly. The thinking is it’ll suggest the move most likely to help solve the game. What you’ll see though, for instance. is it will never suggest moving a card which has no face-down cards above it unless there is a King ready to go into that column. The reason being is say, you move a red 8 onto a black 9 which frees up a column which a King could play on, it won’t suggest that unless there’s a King in waiting. Because, you may come across the other red 8 which moving it would be more advantageous. This is because potentially a King could go on any free column, whereas that other red 8 has only that 1 place (except for the base itself).

      If you find an example where it won’t suggest a legitimate advancing move (the hint rotates all useful possibilities from what it considered the most advantageous to the least, every 3 seconds) then could you please email me a screenshot of the game and the suggestion it missed – that way I can test and improve it. [email protected]

      (Again note it won’t suggest moving a half column unless it’s freeing up a card which can be based. And finally, it will never suggest playing off the base back onto a column, although on some extremely difficult games that can be required solve it. It is only a hint after all!)

      Thanks very much for writing, it’s great to hear from you!


  11. Hi, i have been playing this game for about 6 years now,reacently i
    Changed phones load this game on it but cannot load my scores on the game i do not want to start all over old phone was htc one i have updated to a htc u11,my score was 5108379 this was over
    638 hours any help would be welcome

    • Hey 🙂
      I can restore your score! Just fire me an email [email protected] of how much you remember of your score. What we need is number of games played, won & lost; your current score (which I do have, just being complete) and whether you play 1 or 3 card deal. With that I’ll explain how to restore your score. Cheers

Leave a Reply

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