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.
This app has been recognised by its excellence on this site https://gameskeys.net/under-the-radar-games-that-you-should-play/#Solitaire under the entry of Solitaire 3D Classic Klondike+. Thanks for your keen observance and obvious good taste! 🙂
An independent reviewer has taken the time to write a thorough review of which I appreciate very much!
Check out Daria’s review here: https://freeappsforme.com/solitaire-3d-app-review/
Thank you very much for doing that. 🙂
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.
Here are some screenshots: –
And a video: –
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!
https://play.google.com/store/apps/details?id=com.jawfin.sol3dtab
Solitaire 3D was added to the list of the Best Free Solitaire Game Apps where you’ll see it listed as the 4th item.
http://www.appbrain.com/app/sol3d/com.jawfin.sol3dtab
https://play.google.com/store/apps/details?id=com.jawfin.sol3dtabpro
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).
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!
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.
Hey Jonathan,
This is Paul Fuller II, your friendly neighborhood Engineer and Land Surveyor in Arlington, Texas. Right between Dallas and Fort Worth. I got a new phone a while back, and couldn’t remember my user name or password. So, I started over with a new name & password. Is there any way to add my current points to the original points. I’m about to get a new phone and they said that I would Lose everything. Please let me know.
Yes there certainly is 🙂
It would be easier to set you up via email, so if you write to jawfin@gmail.com with your score, number of games played and won, and whether its 1 or 3 card draw I can give you the process to restore your score.
Cheers
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).
Lost sound. All other sounds ok.
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
I have just paid for Pro game and I can’t get game to down load any new card backs or anything! If this can’t be fixed please send refund!
Hi there.
All the decks which you have downloaded should still be there. They are stored in same location on disk, both for Free & Pro. They are Butterflies, Flowers, Precious & Space. If they won’t load even after selecting them perhaps you could try Uninstall and Download again. Please get back to me if that still doesn’t do it!
Cheers
Jonathan
The share button is now gone. What happened?
As announced here: –
https://support.google.com/plus/answer/9195133?hl=en
Google shut down their GooglePlus technology on April 2 2019, which was their social network for sharing and so on. It was not replaced, so even now Google does not have a public facing social network (such things as Google Hangouts and Google Meet is between existing Google account – and does not have a public “wall” one can post on).
On your own Google login you can see more information here: –
https://plus.google.com/
Since then I had to remove the Share button and the G+ button as they just redirected to dead sites!
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!
Hi. I like this game. Did you ever thought about Daily Challenge. Could be a good addition. Thanks
That’s a good idea. I have no idea what I could set as goals – maybe I could take a peak at other solitaire games!
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!
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).
I really enjoy playing this game it helps me to relax
Thanks 🙂
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.
It was OK it not full decks
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.
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!
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. jawfin@gmail.com
(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!
Cheers
Jonathan
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 again.my 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 jawfin@gmail.com 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
Version 3.5.20
The Pause button and screen has been removed. Google’s policy is that any game which offers a Pause option in-game must activate that pause when the Android back button is pressed. That behaviour is expected, well, required, of this application. And as we use the back button to go back a move I decided to take the Pause out. After all, it was only there to stop the timer for timed games – which is equally achieved by going into any other screen!
There is colour back in the Sort button. Some Android version changes removed it (something to do with spannable unicode characters treated as emojis [I knew you would be interested in that]) – but still they do show as black only on some devices. I’m talking about this button!!
As usual, bugs and errors reported by the automated error capture routines have been fixed as far as possible.
Last versioon not stabil, restart after the few second working. Huawei P10 Lite.
I didn’t change anything in the engine of the game – but I always update to the latest APIs which plug into the app.
When you say “restart” do you mean the game undoes all your moves back to the start, or it starts a new game, or the app itself crashes and you need to re-run it?
Is it doing this repeatedly, or just once or twice?
Version 3.5.21
To address those crash issues. I changed ad providers as it was that which was crashing my application. Not impressed. Anyway, now resolved!!
@Velma.
You posted as a reply on another conversation, being here: –
https://www.jawfin.net/?cpage=3#comment-17156
So if you don’t see your post or my reply that would be why.
Version 3.5.22
Updated to all the latest Android SDK libraries.
Changed crash handler, as recommended by Google.
Direct reference is made to the privacy policy for those affected by the GDPR.
I noticed that Solitaire 3D randomly assigns games that were lost. I won all games, but Scores show that I want only 88%. What’s up?
What it could be is a game was aborted, like a new game was started before the current one was finished. On an older version of Solitaire I would force start a new game if the game type was changed, like 1 to 3 card dealing, or the difficulty level, which would then consider the current game aborted and not count it as a win – so it could be a throwback from that time. I am happy to fix it for you though, if you email me a screenshot of your score screen I can apply the fix. Email: jawfin@gmail.com
Thanks for writing 🙂
Cheers
Jonathan
Version 3.5.23
Google are releasing a new security protocol which compares the installed apps signature to the known generated ones.
I had implemented a similar system years ago, but as theirs will re-sign the app mine will falsely fire, so this install now disables that layer of security.
Another Google requirement is the app is compiled to a minimum SDK level so I am ensuring I have the latest version. Both these ideas by Google are good, if not a little late in their implementation!
I caught a big bug too – well, not a bug in my code per se, but Google changed its policy on the handling of certain activities. In that, if a window is created full-screen, transparent, with a requested orientation (landscape = side-on), then this was not allowed. Not allowed to the extent it would crash the app. The thinking being a transparent screen should not request orientation as it must inherit from the screen behind. I was using transparent screens for the on-screen controls and individual sound effects – so now those screens have a solid background – no great loss but extremely hard to track down in the code what was causing the critical crash!
Hallo, Lieber Herr Parton
Warum bitte es gibt keine Pause Taste mehr. Ich muß Entwässerung-Tabletten nehmen u. Da muß ich deswegen
öfters pi pi gehen. 2.,Wenns Telefon läutet sollte man ja abheben oder es läutet jemand an der Wohnungstür
der braucht irgend was, oder ich hohle mir ein Packerl Zigaretten von der lade oder der Packet-Postler
bringt ein Packerl usw. da habe ich immer wegen der Zeit die Pausetaste gedrückt. Mir fehlt die “SEHR”.
3.,Kann mann die G+Share von der Spieler Seite nicht entfernen, dieße stört mich unheimlich braucht keiner.
I speak English, so first I’ll use Google Translate then attempt to answer with the same! Your post: –
Why please there is no pause button anymore. I have to take Drainage Tablets & That’s why I have to
often pi pi go. 2nd, When the phone rings, you should pick up or someone rings the front door
he needs something, or I’ll pack a pack of cigarettes from the store or the parcel postman
brings a pack, etc. because I have always pressed because of time, the pause button. I miss the “VERY”.
3., Can not remove the G + Share from the player page, that does not bother me, no one needs.
__
Ok, so, the Pause had to be removed as due to Google policy. If there is a Pause button on the screen then pressing the Back button must activate it. We want the Back button to undo the last move, but Google will not allow that. I had a few arguments with them about that, but I had to remove the Pause as I wanted the Back button to behave as Undo. Note that opening another screen or closing the app will pause the timer.
Again with the Google Share button: even if you turn off the Google Play Services in the Options the Share button, the Goals and Leaderboard buttons must still show. I had another argument with Google about that too! But they say if my app offers it, it must show even if the user logs out of Google Play Services. They will not feature the app unless these conditions are met.
__
German/Deutsch :-
Ok, also musste die Pause aufgrund der Google-Richtlinien entfernt werden. Wenn auf dem Bildschirm eine Pause-Schaltfläche vorhanden ist, muss diese durch Drücken der Zurück-Taste aktiviert werden. Wir möchten mit der Zurück-Taste den letzten Zug rückgängig machen, Google lässt dies jedoch nicht zu. Ich hatte ein paar Argumente mit ihnen, aber ich musste die Pause entfernen, weil ich wollte, dass sich die Zurück-Schaltfläche wie Rückgängig verhält. Beachten Sie, dass das Öffnen eines anderen Bildschirms oder das Schließen der App den Timer pausiert.
Auch hier mit der Schaltfläche “Google Share”: Auch wenn Sie die Google Play-Dienste in der Schaltfläche “Optionen” deaktivieren, müssen die Schaltflächen “Ziele” und “Bestenliste” weiterhin angezeigt werden. Ich habe darüber auch noch mit Google gestritten! Aber sie sagen, wenn meine App es anbietet, muss es auch angezeigt werden, wenn sich der Nutzer von Google Play Services abmeldet. Sie werden die App nur dann unterstützen, wenn diese Bedingungen erfüllt sind.
Hallo, lieber Herr Barton
Mit einem Wort der Sche… Google mit seiner “Macht” wirft nicht nur Ihnen als sehr Guter Programmierer die Steine vor den Füßen und macht es Ihnen die Arbeit nicht leichter. Das sich der Google über eine Pause-
Taste die in einen Spiel nicht sein darf, da könnte mann meinen die haben keine anderen Sorgen. Und die
Werbung Googl+Share der Google geht mir so am “Arsch” mit der Werbung und seinen Auflagen.
Herr Barton ich muß Ihnen sagen,Ihr Sollitär Spiel ein “Spitzen” Spiel Top Sache Mann kann sogar die Kinder
als Hintergrund Bild machen und die Mutter allein als Stappelstoß Karte setzen. “Super” ganz “Super”
Your’s in English: –
Hello, dear Mr. Barton
In a word, the Sche … Google with its “power” not only throws stones at you as a very good programmer and makes your work easier. That Google has a break-
Key that can not be in a game, as you could think that have no other worries. And the
Google Googl + Share Google is so “messed up” with the advertising and its editions.
Mr. Barton I have to tell you, your Sollitar game is a “topping” game Top Thing man can even take the kids
as a background image and put the mother alone as a stumbling card. “Super” very “great”
___
Thanks for the kind words 🙂
I have to say though, it’s their shop, and they decide what product to sell. Google can decide on the quality of the product and any other requirements. It’s no different for Samsung and Amazon – they will not let you post an app which even hints of Google, even though it’s on Google’s platform! I don’t mind, I just make the product as best as I can for the user, in a way which Google approves.
Cheers
Jonathan
___
German/Deutsh: –
Danke für die netten Worte 🙂
Ich muss jedoch sagen, es ist ihr Geschäft, und sie entscheiden, welches Produkt zu verkaufen ist. Google kann über die Qualität des Produkts und andere Anforderungen entscheiden. Bei Samsung und Amazon ist das nicht anders – Sie werden keine App veröffentlichen, die sogar Hinweise von Google enthält, obwohl es auf der Google-Plattform ist! Es macht mir nichts aus, ich mache das Produkt so gut ich kann für den Benutzer, in einer Weise, die Google genehmigt.
Prost
Jonathan
Off-topic post. I wanted to post about something I am personally proud of. I get these monthly emails from Google saying how my revenue is going. Last month I got this: –
And just now this: –
I want to say I am proud that may app has near half the ads as does the other apps similar to mine. If for nothing else, it shows I care for the end user twice as much as these other developers 😉
Hi,I love your version of solitare, is their a way I can move my hiba score to my new phone.Atb nick
Absolutely. Please email me your current score, games played and won, and whether you play 1 or 3 card dealing, and I’ll send back the instructions to transfer your score.
Cheers 🙂
Hello Jonathan.my name is jillene aliceajillie.i just installed the solitaire 3d pro.im having issues with the getting into the menu with options.everytime I try to select anything in the menu box a popup window opens then shuts everytime.even after I uninstall and reinstall.i upgraded from the free to paid version because your app has become my favorite now.
Hi Jillene, thanks for writing 🙂
I don’t suppose you can see what the popup says? Does it have any words or images? If it is too quick to see, and you have the time, you can try this – use another device to video record the popup on your screen and watch that video using pause to see what it is showing. If possible then could you please send me a screen-shot of that behaviour?
There is nothing in the application I can think of which would cause it to do this, especially as we know the Free version runs without issue. Please let me know how you go with that.
Also, if you prefer to contact me via email so your comments and images are not on this webpage again absolutely please feel free to email me on jawfin@gmail.com
We will get this sorted for you 🙂
(Haha card pun there… nevermind!)
Cheers
Jonathan
Nothing has changed, I still love you guys 🙂
Version 3.5.24
No major changes, just keeping up-to-date with the latest Google SDKs and programming policies. Also, any relevant errors reported by their error-checker have resolved in my code. I say relevant, because, there is an obscene amount of errors generated by the Google libraries which can crash or cause my app to not respond, of which I can do nothing about…!
Version 3.5.25
Mostly forced update keeping up with Google libraries, which makes sense as newer Android hardware and Operating Systems are being released.
GooglePlus has been removed. Google has decided to retire its GooglePlus social media – I was using this to allow you to post your victories on the Google+ wall. But Google+ never really did take off (you may notice Google silently removed the G+ feature from websites and apps about a year ago), so this was inevitable.
Some bug fixes too, usually raised by exotic devices, and others which have been modified (read compromised) by the Telecommunication Companies who release them – so I do my best to handle the errors they raise which impact my app!
Version 3.5.26
Upgrades to all the latest Google APIs, SDKs and Gradle – making it compatible with the latest hardware and operating systems.
I decided to take the paranoid approach to the GDPR Privacy Policies by putting an opt in / out dialog on application launch. This can be viewed and changed from the About box. I would expect the European requirements will eventually be taken up in other continents, so I am getting ahead of the curve via a full rollout.
In an effort diversify I have changed ad brokers – although I would suspect it looks the same from the user’s end, as it seems to be the same companies advertising!
It’s becoming increasing obvious there are 2 types of people in the world – those who post a 1 star review and rant and rave (entitled much? free software…) and those who contact the developer with positive criticism and feedback. I have no time for the former, and all the time in the world for the latter. Of course, anyone reading this by default falls into the latter category! 🙂
Version 3.5.27
Very minor update. Google’s policy is now that any button or link which takes you away from the app has to be clearly marked as to it’s intent. I had a little “Get Pro” button in the Options, Help & About screens since 2011 which would take the user to the Play store, Pro version of Solitaire 3D.
Here’s the very old one: –
And the newer one: –
And here’s how it looks now: –
Yup, nothing there!!!
Version 3.5.28
Despite Google trying hard to reduce size of APKs the implementing of the newer libraries finally pushed my app over an internal limit (set back from when Android was first made) which required me to make my app what is called MultiDex. The newer devices handle this change over with ease, which would be expected as app are now 100’s times bigger than they were a decade ago – but, older devices need special Google libraries referenced to run MultiDex. I had missed a library call which was crashing the app on Android 4.4 and less. I am very sorry for this lax, thanks for bearing with me 🙂
Version 3.5.29
Let’s just chalk it up to a failed experiment. I tried a supplemental ad mediator, but it would appear the behaviour of some of their ad networks were suspect – even beyond the rather extensive privacy policy which it shipped with. I have reverted back to the original mediator/broker – but I feel I did the other mediator some favour from the numerous bug reports and feedback I provided, even if I am no longer using their services.
Version 3.5.30
The manner of how I display the AdMob banner displays has not changed in over 10 years, yet now it suddenly found itself in violation of AdMob policies – and I’m not sure if it’s from a new policy or they’ve only just noticed! There must be a separation from the controls and from the ad – and at times it is possible that a fraction of a card would get covered by an ad. To ensure this doesn’t happen anymore I put a 10 pixel border around the ad and ensured all cards get cut off at that border.
Also all Android apps need to be SDK version 28 by November ’19
https://support.google.com/googleplay/android-developer/answer/113469#targetsdk
The problem I had is the old version of solitaire (which was left in the Store for those with older devices) shared the same Ad Unit as the current version of solitaire – which means both would have been disabled. So I had to update the “old” version. Which is the reason of this release.
Version 3.5.31
This is one I wanted to do for a while, A NEW DECK, a dark theme, or night deck. Here’s some pictures: –
Enjoy folks.
Let me know if you have any ideas or suggestions too 🙂
I’ll repeat the response to this question here: https://www.jawfin.net/?cpage=3#comment-21944 as that is nestled deep in the comments above!
The share button is now gone. What happened?
As announced here: –
https://support.google.com/plus/answer/9195133?hl=en
Google shut down their GooglePlus technology on April 2 2019, which was their social network for sharing and so on. It was not replaced, so even now Google does not have a public facing social network (such things as Google Hangouts and Google Meet is between existing Google account – and does not have a public “wall” one can post on).
On your own Google login you can see more information here: –
https://plus.google.com/
Since then I had to remove the Share button and the G+ button as they just redirected to dead sites!
Hola Jonathan soy un fan de tu app y en la última actualización a Android 10 no se pueden descargar los temas disponibles en la app éstos temas le dan un plus a tu app ojalá y se puedan volver a descargar.Mi suguerencias es que se puedan utilizar una gama de colores en es fondo.vuelvan los temas y agreges nuevos gracias por este entretenido juego.
[Edit by Jonathan – Google translate to English]
Hi Jonathan, I’m a fan of your app and in the latest update to Android 10 you can’t download the themes available in the app, these themes give your app a bonus, hopefully they can be downloaded again. My suggestions is that they can be used a range of colors in the background. return the themes and add new thanks for this entertaining game.
Lo comprobaré ahora. Sé que Google ha cambiado sus políticas sobre el acceso al almacenamiento extraíble (tarjetas SD), lo que evitaría que se guarden las plataformas de descarga. Si no consigo que funcione, volveré a escribir la aplicación para que las plataformas de descarga se incluyan en el juego.
Salud
Jonathan
Editar:
Para mí, la descarga todavía funciona. Tal vez algo esté bloqueando mi sitio desde tu extremo. Sin embargo, trabajaré para incluir los mazos dentro de la aplicación.
¡Necesito verificar en Android 10!
[English]
I will check it now. I know Google have changed their policies on accessing removable storage (SD cards) which would prevent the download decks from being saved. If I cannot get it to behave I will rewrite the app so that the download decks are included in the game itself.
Cheers
Jonathan
Edit:
For me download still works. Maybe something is blocking my site from your end. Nevertheless, I will work on including the decks within the app.
I need to check on Android 10!
Respuesta # 2
Lo he investigado y Android 10 no permite cómo manejo las descargas de la tarjeta. Necesito reescribirlo como se explica aquí: –
https://medium.com/better-programming/all-you-need-to-know-about-scoped-storage-in-android-10-e621f40bc8b9
En cambio, como los archivos de la tarjeta no son tan grandes, volveré a escribir la aplicación para que vengan precargados. Pero esto es mucho trabajo y no tengo mucho tiempo libre – ¡ya me acuesto a las 2 am y me levanto a las 8 am! Sin embargo, intentaré hacer esto, y no es solo el trabajo, todo el texto debe traducirse a 11 idiomas (como cambiar la palabra “descargar”), por lo que no puedo decir cuándo se completará.
[English]
Reply #2
I have looked into it, and Android 10 does not allow how I am handling the card downloads. I need to rewrite it as explained here: –
https://medium.com/better-programming/all-you-need-to-know-about-scoped-storage-in-android-10-e621f40bc8b9
Instead, as the card files are not that big, I will rewrite the app itself so they come pre-loaded. But this is a lot of work, and I do not have much free time – already I go to bed at 2am and up again at 8am!! I will try to do this though – and it is not only the work, all the text has to be translated into 11 languages (like changing the word “download”), so I cannot say when it will be completed.
Version 3.6.1
Quite a few changes here! The downloadable decks are now part of the install, so always available and no longer need to be downloaded. 10 years ago when this app was first written 14 MB was a lot of space to take on a phone – now it’s so minimal there’s no need to separate the files into downloadable assets. There was also an issue with the latest operating system, Android 10, which has security measures in place, preventing an app from writing to the SD Card at a location of its choosing – so now that has been averted.
The free version, that is to say the ad-sponsored version, has more options for the GDPR for those to whom it applies in the EEA. Although the app didn’t violate those policies I still wanted to ensure the users of this by implementing a consent form. The ad companies change their behaviours too, so I try to kept those less antagonistic. There is an ongoing issue with some interstitials which cannot be closed via the back button (link) and some which have no close button! I cannot fix this, its not in my code – I cannot even access it as [understandably] the app cannot interfere with the ad displaying modules (to prevent cheater apps from clicking their own ads!).
Along with that change I have updated my Privacy Policy and Terms & Conditions.
There was a minor mathematical issue in calculating the scale of a custom image being used as the background on devices using more obscure resolutions. The app now considers all aspect ratios and calculates the zoom (in reality as this is all 3D rendered how far from the view the image is to be displayed, effected as a large floating card which has its depth filtering disabled).
As per usual I have implemented all the latest Google APIs in this build, and fixed reported bugs which were caused by my app – bear in mind the majority of bugs are are caused by those API libraries, but not much we can do about that!
Version 3.6.2
From the previous install there was libraries loading which weren’t needed – so I have fine-tuned to only those SDK / API the app actually requires.
Unrelated some of the libraries (well, specifically the ad ones) were running and taking CPU even when the app is in background. So I have done my best to terminate those threads. I don’t have much control over the ad code (as mentioned in my last entry) – yet I’ve done what I can.
Is it me or are the ads getting more invasive? I’m sorry but there’s nothing I can do about that (again see my previous post) – but you don’t leave your job just because your boss has some annoying habits – you do what I do and complain pointlessly!!!
I’ve put the latest library versions in and fixed a couple of extremely minor bugs which became apparent over the last week.
Cheers 🙂
Ads only show when you win or start a new game. Seeing too many ads? Maybe try playing on a harder difficulty! Expert will keep you ad-free for at least half an hour!! (After all, this solitaire is also known patience!)
Also note where the ads are not. You don’t get an ad when you launch the app, nor when you close it. There are no ads when you open screens like Options, Scores, checking the Leaderboard or reading the Help. I don’t force you to watch Reward Ads to get the Solution, or to customise your wallpaper or deck. When a pile gets close to the banner I don’t shrink the pile even more to keep the ad there, no I hide the banner ad – I would suppose for about half a game that banner is hidden.
And I don’t force a Reward Ad to use theme deck (which cost a considerable amount of money to pay graphic artists to design).
What’s more, the ads you do see – I won’t show another ad within 2 minutes, nor will I show one for a while if you click on an ad. Yet I can’t put that as a feature on the Play Store Listing – and why? Because talking about not showing ads is against Google’s policies! And yet, I still do this for you behind the scenes.
Think on that.
So I wonder who thinks the app needs more ads? Google does…
So if I was to behave like those other solitaire games I’d need to put in near double the ads!
My approach has always been like this, for instance: –
https://www.jawfin.net/comment-page-3/#comment-17841
https://www.jawfin.net/comment-page-3/#comment-17558
On rare occasions I get a message about my app having too many ads… and they are going to look for a better one with less ads. Yet, I never hear back from them again – oh well!
Version 3.6.3
Fixed the volume problem when winning a game (it was getting muted).
But, you won’t see this release as Google blocked it, due to … see next release!
Version 3.6.4
AdColony is up to old tricks again – this is now the 3rd time my app has been blocked due to that super-aggressive ad broker. I am not going to write a privacy policy to explain all its activities; gathers ages, gender, what apps are installed… Its not illegal for it to do this, but it can go do it elsewhere.
Note I never actually use AdColony, it just comes along for the ride with other ad mediators, so I removed it from my mediation libraries.
Version 3.6.5
Fixed rotate bug on Android 10.
It would seem the activity lifecycle events have changed for Android 10. Although the layout is recreated on flip it no longer calls the activity’s pause and resume events – so there is no way of telling the OpenGL surface that the the phone is now 180° so I ended up using the DisplayManager DisplayListener to manually run the pause and resume activity events to handle the change in orientation. I suppose other GL apps just block rotation altogether, but I really don’t like having to do that.
Note this release is for the Pro version too as it suffered from the same behaviour.
Version 3.6.6
In case it wasn’t known, the banner ad will hide for a while if clicked. Its not a reward incentive, but my double-checking it wasn’t clicked by accident, even though I do meet all of Google’s requirements for the ad placement – I just have my own higher standards. Anyway, as I said, a minor bug when this crosses over with the other aspect of hiding the ad completely when cards are near / behind it.
Again, it is not Google’s requirement that I hide the ad when the cards are near, it my own higher standard of kindness! Note the black border around the ad does meet Google’s requirements of keeping the ad separate from the app – but that’s not good enough for me!! I have made that gap even bigger now, so the ad will hide more readily.
I also will not display a full screen ad within 3 minutes of the previous one. Again, I must state, this is not Google’s requirement, they don’t [overly] care if the ads are 10 seconds apart, as no doubt you’ve seen with other apps. I am just trying to be fair to everyone without completely drying up my revenue stream. This point is lost on a few complainers – but I don’t mind, this app is a labour of love, and honestly if they only want to complain then I don’t really want them to enjoy something I have dedicated over 10 years towards. But, haters will hate!! Give them something for free which I spent thousands of hours, and thousands of dollars on, and they still whine, then good riddance 😛
/rant
Version 3.6.7
A couple of minor bugs snuck in (I blame the overly-correct code inspector, complaining of things which weren’t actually wrong, and “fixing” them introduced errors). These specifically triggered when the front activity (the game) was paused & resumed (like became the front-most app, then send to background – these events also trigger when the device is rotated).
Version 3.6.8
Fixed an obscure bug, seemingly introduced by the new Android OS. If I use finish() to end the front activity (as recommended), next time the game is run there are phantom controls on the screen, specifically the New Game, Replay – and the word Score which will overwrite the timer if it was enabled. These are not part of the activity, just legacy (perhaps a bug in the XML context explode). The only resolution was to not finish the app when Quit is selected, but to just send it to the back of the task list. It still gets put to sleep, and will not consume CPU, data or battery – it’s just weird.
There is another minor bug I can’t seem to pin down: after the app has been running for quite a while the Garbage Collector closes by SQL table which is used to calculate the solutions to the games (it should never, ever be closed). In that event I attempt to reopen it, but as the Android OS is already acting off spec there’s no way of knowing it will treat any other requests kindly, and will probably freeze or crash the app – and I can’t do anything about it!
Version 3.6.9
Android 10+ changed a lot of life-cycle behaviour, perhaps in an attempt to save CPU or load times. But, it clears images which were loaded, and other assets. This is specifically noticed when the device is rotated (it won’t rotate an OpenGL renderer). This affected the framing around the back of a custom deck, the flashing highlight of the selected cards, and the background image scaling.
Android 10+ now also closes databases which have been promised to be left open. As I was using a SQLLite database to resolve the solutions this would crash the app when it prepares the next shuffle. The code was rewritten to manually open and close the database as needed, as opposed to trusting Android to leave it open.
Version 3.6.10
Double tapping the Deal button when auto play is off and all cards are face up will automatically finish the game.
An Easter egg!
Fixed bug which rendered black squares when exploding cards when the shadows were turned off (being related to the depth test detection in the OpenGL).
For those who say: your app has too many ads, and now it makes sounds when it didn’t used to.
Too many ads? It has near half the number of other apps in the same category. Proof: https://jawfin.net/ads
And, if ever clicked the ads will go away for a time.
I used to mute the ads (probably against Google policy, but no-one [except the users] noticed) but the latest security updates in Android 11 prevents apps from changing the master media volume (without permission) and it took away my ability to tell if my app was topmost (and I spent hours trying to solve that). Situation: Ad appears (of which I have no control over), I do the mute, user clicks Home and I can’t tell they have left my app thus can’t restore their volume – so I stopped trying – I didn’t mind passively muting ads, but I won’t go to an extreme effort to specifically antagonise Google.
So for those to say: “How dare you provide a free app of which you’ve spent many thousands of hours, and many thousands of dollars, of which you respond to every question and comment of the users, but don’t mute the ads? I am now going to uninstall this app and find a better one with less ads!” I merely reply: G__d r_dd_nc_; do you want to buy a vowel? (Clue: don’t buy a U!).
I give what I get. If a person is rude I reply with similar word structure, if they are polite I will show them several of many ways they actually could mute or bypass the ads on their personal device (even to my own obvious detriment).