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.

https://play.google.com/store/apps/details?id=com.jawfin.sol3dtab

http://www.appbrain.com/app/sol3d/com.jawfin.sol3dtab

https://play.google.com/store/apps/details?id=com.jawfin.sol3dtabpro

http://www.appbrain.com/app/sol3dpro/com.jawfin.sol3dtabpro

Privacy Policy


Comments

Solitaire 3D — 148 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.

      Cheers
      Jonathan

  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.

Leave a Reply

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