Pretty Good Solitaire Mini 1.10

The best iPhone Solitaire game on the market just got even better.

Pretty Good Solitaire Mini icon

Pretty Good Solitaire Mini (for iPhone) has been updated to version 1.10, which is now available on the App Store for the unbelievably affordable price of only $1.99 US. This is the best Solitaire software value to be found anywhere!

Pretty Good Solitaire Mini 1.10 now contains 800 games, adding 50 new games (and still has 100 bonus games).

In addition to the new games, the entire program has been reworked to support iOS 15, including dark and light modes, and to (continue to) work on the latest iPhone models; all known bugs (most introduced by iOS updates) have been resolved.

Pretty Good Solitaire Mini launch screen

Development

This is the first update of Pretty Good Solitaire Mini ever, since the first version was released almost three years ago, becoming Goodsol Development‘s first (and, thus far, only) iPhone title. That version has a perfect 5.0 rating on the App Store (out of only 12 reviews 🙁 ), and as I write this, the new version is climbing up the charts (according to Apple).

Best Solitaire Game

I have played the Mac, iPad and now iPhone games and this is the best solitaire game out there.

Labtech89 (app store review)

The only real issue with this game is that it is a rip-off… for the publisher and developer. We work hard to make an excellent game, and there is almost no chance that it will ever recoup the cost and effort put into developing and maintaining it. It costs the customer less than a quarter cent per game, and still not enough people are buying it to justify maintenance.

Nevertheless, we continue to do so. Of course, after this amount of time, it is no surprise that Apple has completely rejiggered the internals of the iOS operating system, including the eliminating of the concept of screen orientation entirely, so there was plenty to update to resolve problems created by their aggressive (and unnecessary) deprecation.

You can read about most of these issues in my post from about a year ago, Pretty Good Solitaire Touch Edition 1.60, where I detailed how I first dealt with these (same) issues. For the iPhone version of the Goodsol Solitaire Engine, when compared to that iPad version of GSE, the engine (i.e., model) code is identical (as it also is on Windows and Mac); that is its whole point. The controller code is very similar, but requires a review of all changes, rather than a wholesale code replacement, but that was much less effort than it could have been.

The view code, however, is very dissimilar. On the iPad version (i.e., Touch Edition), the interface consists of key screens and several popover views. On the iPhone version (internally, Phone Edition), a smaller screen and no popover support requires that the interface is constructed in a different manner, with only two main views, supported by 3 tab bars and 10 various tab views. While the low level code to display images, fill tables, and whatnot, is nearly identical, all of the surrounding view code is incompatible, and it was much of this code that was affected by the deprecation. The best we could do was establish certain templates for the types of changes that had been necessary in PGSTE and use those to both identify places where changes were likely necessary and guide us in making the necessary alterations.

I say “we” and “us” but, of course, I am the only programmer working on either of these products, which fact, frankly, probably makes it a little easier to coordinate, though all of the programming work (and a lot of testing) falls to me.

There were a couple of minor positives to this development process. First, the bugs I accidentally introduced in PGSTE 1.60 had been fixed in PGSTE 1.61, so they never entered the code base for this update in the first place. Second, the fact that the iPhone version necessarily has no popover support means that we completely avoided the double deprecation problem that we experienced with the iPad version development.

The most amusing item was that just prior to development on this update commencing (and after its originally planned start date), hence about 2.5 years after the last release, Apkmonk Blog did a very nice review of Pretty Good Solitaire Mini. Right up front, the very first screenshot is (embarrassingly) a background missing the intended game preview. The writer actually (unknowingly) makes lemonade out of this bug: “Don’t worry about the plain look of the app when you first open it“. They go on to give a very nice review (with the odd factual mistake here or there) and rate the game 5 stars (out of 5).

Now what really happened is that the game worked perfectly when released, showing a game preview image on that first (“plain”) page, or a splash image if no game is currently selected. Then, as so often happens, Apple makes unnecessary changes to iOS and breaks things. In this case, it changed the process for initializing a view and its subviews in a way that broke the code we were using to show these preview images (and a few minor images elsewhere).

Specifically, what happened was that Apple made changes to the layer objects of general views after the viewDidLoad method was called. Our previews were not image views (deliberately), and in that method we initialized the contents of the layer object associated with the subview, resulting, as expected, in the preview images displaying properly. When a later version of iOS changed the way that (and when) Apple did this initialization, the preview images stopped displaying. In the end, we had to convert to image views and implement our other behavior on those. It looks like Apple introduced a bug into their system, and though they could argue (illegitimately) that we were not using a sanctioned method, the fact remains that they should not have been messing with view initialization in this way in the first place!

January release: check. 🙂

Pretty Good Solitaire Touch Edition 1.60

We have updated the BEST iPad Solitaire game on the market.

Pretty Good Solitaire for iPad

Pretty Good Solitaire for iPad has been updated to version 1.60, which is now available on the App Store for the extraordinarily reasonable price of only $9.99 US.

Pretty Good Solitaire Touch Edition 1.60 now contains 750 games, adding 50 new games, as well as 10 new bonus games (for a total of 100 bonus games).

In addition to the new games, the entire program has been reworked to support the latest iPad models and iOS versions, including dark and light modes, and all known bugs (most introduced by iOS updates) have been resolved.

Development

This is the first update of Pretty Good Solitaire Touch Edition in almost four years. To be honest, the game does not sell nearly well enough to justify spending a lot of time updating, although it is clearly the best Solitaire game available for the iPad. It has had 700 games for all that time, which meant that it was probably the best Solitaire value available.

Historically, Apple released iOS 10 during the development process for the previous version, and it did not make sense at the time to rework the entire engine to adjust to the latest SDK, so we released the product as originally intended. However, in the years since that version, four more major versions of iOS were released, each adding (few) new features but deprecating loads of methods, so without any intervening updates, the performance of the product deteriorated slightly, including (quickly) problems with the pile popovers, some issues with orientation changes, and (most recently) some game preview images not drawing.

Among the victims of Apple’s ruthless deprecation were nicely sized launch images (forced to use less capable launch storyboards instead), previous popover behavior and its subsequent replacement (yes, double deprecation, proving the level of aggression), UIAlertView and UIActionSheet classes (both in favor of UIAlertController), the CFGregorianDate class (too convenient, I guess), bordered toolbar buttons (UIBarButtonItemStyleBordered), methods of launching and dismissing modal views, and the entire concept of orientation changes (an inherent aspect of tablet and phone usage).

The image bug was the result of a poorly redesigned image view class, for which I found a workaround, and there are also a large number of spurious log errors generated by internal Apple processes that cannot be easily fixed or suppressed (with precision) by developers. The page curl transition was apparently completely broken as of iOS 13 (and/or the iOS 14 SDK), but that was just a cutesy feature I had already decided to change anyway. The redesign of the controls, compounded with the addition of light and dark modes (to be fair, a decent iOS feature), made several of our views difficult to use under certain circumstances. All of this created a great deal more work than was originally envisioned for this update.

The product has 4 popover views, and associated control classes, which all needed to be completely reworked, as well as 2 more views that used controls affected by the recent redesign or dark/light mode setting. Alert views were used in a variety of places, as were action sheets, plus there were several other locations where code had to be reworked due to deprecation; changes due to the loss of a Gregorian calendar class (to a generic calendar that requires an extra layer or two of indirection) were particularly pervasive, as it was used in several places in the code.

Oh, yeah, lest we forget… the latest version of the iOS Simulator has a particularly egregious bug in which it will not play audio in any version prior to iOS 14.0 and instead (the worst part) introduces a timeout delay of approximately 15 seconds for every attempt to do so. I had to disable the audio when running in the Simulator on unsupported versions just to continue. With all of the new models of iPad (with different resolutions and aspect ratios) and 5 more versions of iOS to test (well, really just 4, because the Simulator no longer supports iOS 10), just finding a representative subset of devices and iOS versions was a chore.

Nevertheless, I managed to get all of this done, and compared with that work, adding the new games and updated engine code was a (relative) breeze. The only concern at all going forward is the reported deprecation of the UIWebView class, which we use for game rules and credits, but because there is no replacement for all of the iOS versions we support, and using two different view classes is untenable for this case, not to mention that there are no deprecation warnings during compilation, we chose to leave that (working) code alone. All known bugs were fixed, the interface and animations were improved, and everything seemed to be working perfectly.

My Mistake

The update has now been live for a little more than a week, and despite how solid the product felt (and still feels) to me, there were a number of bugs reported quickly. When distilled, it actually appears to be just 2 minor bugs.

The first bug appears to be a problem with random number seeding for the ‘Random’ deal button, where the same deal numbers now come up in the same order. While the exact cause has not yet been determined, the precipitating cause was almost certainly the calendar deprecation. Time seconds were used to seed the random number generator, and because that would now take extra code, I replaced the seed with the system time reference, which (in theory) changes at the same rate, resulting in less code. Apparently, somehow it must have resulted in non-working code, although the cause was not obvious from inspecting the method.

The second bug was my bigger mistake, and requires some history.

The previous version had a legitimate bug in the game results code. Results are stored in a database with a validation code (based partially on date and time) to insure integrity. When the original iOS port of the engine was written, this code was inadvertently using local time, rather than a fixed time based on UTC or something similar. The effect was that results earned in one time zone may not appear valid in another.

The solution going forward, of course, was to fix that bug by getting the UTC time instead of local (and, coincidentally, that code all had to be rewritten anyway because of the calendar deprecation). However, that change alone would invalidate all previous results, which is not desirable at all. Since all previous results would have a valid code in (some) local time, I decided to simply replace the old codes with the newer ones. Because it would be tedious, slow, and potentially inaccurate to check all time zones, I decided to only replace codes that validate in the current time zone, figuring that those few users (including myself, actually) who had invalid codes because, for instance, they played the game in both California and Michigan 😉, could just manually set the other time zone(s) temporarily (or visit the other time zone organically) and let those results correct themselves.

So the implemented logic was that any result failing a current validation check was then checked against the old method using local time, and if that validated, the code would be updated. Note also that I limited this correction behavior to results purported to be in 2020 or earlier, when I still expected the update to be released last year. (Do you see the logical flaw in my thinking here?) In theory, this should be fairly straightforward, but testing it was challenging, because once fixed, the results stayed fixed.

In the simulator, I tested a small sample of results, and everything worked flawlessly. Then, I went to a physical device where I had built up a collection of around 50 results in one game just testing this development version (prior to the validation code fix) and it worked perfectly and transparently. I had legitimate results, then after the UTC fix, they all appeared invalid, then after adding the correction code, they were just back to normal.

Then we released the update. I had a bit of trepidation, because I had my 5000 games of Lower 48 that had loads of invalid results peppered throughout. (That was my “go to” game for waiting… doctor visits, airports and airplanes, a brief unhappy stay in hospital, etc.) I should point out that because I do the development work as SophSoft, Incorporated, but deliver the source code to Goodsol Development, who actually publish the game, the products are considered different (with incompatible signatures), so I cannot test my live data from App Store downloads on development versions.

I downloaded my update from the App Store even before the publisher told me it had been submitted and anxiously brought up Lower 48, which showed 5000 games played but only four thousand and some won (when I have, in fact, won every single deal). I opened up the game action popover with the results list and… Well, it worked, eventually bringing my results to the correct 100% win rate, but not perfectly, for I had not really considered the effect of that many writes to the database; it took a period of several seconds, several unresponsive seconds, before the fixes were done.

This seemed minor, at first. However, we have some devoted fans, and the first report of problems came from somebody who has played a favorite game more than 110,000 times! My several seconds, when I knew what was happening, multiplied by more than a score for somebody who was just trying to play a game, looks a heck of a lot like a lockup. Fortunately, it only has to happen once (per game) and that user is now back to happily playing Russian Solitaire. I have to hope that somebody who has played one particular game that many times does not have too many games with that much activity.

For fun, I just calculated that playing every game in Pretty Good Solitaire for iPad that many times, assuming you could average one minute per game, would take more than 175 years playing around the clock. Of course, with a more realistic average of 10 minutes per game, my 5000 games of Lower 48 would be the equivalent of more than 20 weeks of full-time work!

Anyway, with a couple of simple miscalculations, I managed to make life a little more interesting for the customer support people. Sorry about that. 😔

January release: check.

happiness
productivity

Pretty Good Solitaire Touch Edition 1.20

The BEST iPad Solitaire game has been improved even more.

Pretty Good Solitaire Touch Edition 1.20Pretty Good Solitaire for iPad has been updated to version 1.20, which is now available from the App Store for the incredibly low price of only $9.99 US!

Pretty Good Solitaire Touch Edition now contains 550 games, hundreds more than any other iPad product available.  These are the games you have come to know and love on Windows and/or the Mac, playable from the comfort of your recliner.  Act now and you will receive an extra 75 bonus games, a total of 625 games, as well as free future upgrades.

In addition to the 50 new solitaire games since the initial release, this upgrade also includes easily selectable favorites, position snapshots, a third card set (Tropical Card Set), and a number of bug fixes to make this app as robust as possible.

Too much honesty…

Just for the readers of my blog, let me lay a little bit of truth on you.  The fact is that developing an extensive app like this for the iPad is very time consuming.  Additionally, the price on the iPad ($9.99 US) is quite low for such a large collection of solitaire games, and Apple does absolutely nothing to promote updates, even ones like this which add major new features and games.  All of these factors are working in combination to jeopardize future work on this project.  As much as we LOVE solitaire, we cannot afford to indefinitely invest time and money into a product that does not provide some positive return.

What can you do?  In order make sure that PGSTE remains viable, you can help us by spreading the word, linking to this post, following Goodsol on Facebook and sharing posts with your friends, and most of all rating and reviewing the app on the App Store.  We have a very loyal core of iPad customers, but if we cannot reach critical mass soon, then we may have no choice but to disappoint them and discontinue the project. 🙁

My favorite game in the latest batch is Lower 48, similar to Forty Thieves, which is almost always winnable, but usually quite challenging.  I have won all of the first 100 deals (so far).

Pretty Good Solitaire Touch Edition 1.0

Our iPad Solitaire game with 500 games is now available.

Pretty Good Solitaire for iPadPretty Good Solitaire for iPad is now available in the App Store for the low price of only $9.99 US.  That is less than 2 pennies per game!

Pretty Good Solitaire Touch Edition contains 500(!) games, which gives you more different ways to play Solitaire on your iPad than any other app.  Just to sweeten the pot, we have included another 70 bonus games, which are variations on included games providing slightly or significantly different challenges.

This is the best iPad Solitaire game, bar none.

There are many nice, new features and, of course, lots of games, which are detailed on the PGSTE web page.  While visiting, you can also check out the new website design at Goodsol.com, which also includes all of our Windows Games and Mac Games.

This Pretty Good Solitaire release is the culmination of years of development effort on the Goodsol Solitaire Engine.  Of course, this does not mean that we are done…  Oh, no!  We have already started beta testing for the second development phase (first updates) on our iPad games, and now the cross pollination among Windows, Mac, and iPad continues, with popular iPad features being added to the engine for Mac and Windows, and the core GSE product for Windows rapidly approaching the 810 games in the flagship game.

When I am not developing games, or playing Demolish! Pairs, I am frequently enjoying Pretty Good Solitaire on my iPad.  Really.

Goodsol Solitaire 101 Touch Edition 1.0

Our latest iPad Solitaire game is now available in the App Store.

Goodsol Solitaire 101 for iPadGoodsol Solitaire 101 was approved, last week, by Apple, so it is now available in the App Store for only $5.99!

Goodsol Solitaire 101 Touch Edition includes (not surprisingly) the same 101 Solitaire games as the Windows and Mac Editions.  Additionally, this version includes 34 bonus game variants, as well as all of your favorites from Most Popular Solitaire Touch Edition and A Little Solitaire.

So far, all of our reviews are 5 stars, including:

  • “Without a doubt, this is the best solitaire app on the market.”
  • “A great variety of games, some challenging, some soothing but all well presented and easy to work with. And fun.”

Aside from extra games, Goodsol Solitaire 101 Touch Edition adds new features not available in any other Goodsol product.  The deal selection has been adjusted to allow players to select any of more than 2.1 billion deals, which are compatible with Windows and Mac products, but a player can also select to replay a game, and the new result replaces the older one.  Additionally, a player can arbitrarily delete individual results, which is a capability often requested by customers.  Both of these two features can be expected to make appearances in Windows and Mac OS X products at some point.

Before that, though…  Pretty Good Solitaire Touch Edition is on its way!

Most Popular Solitaire Touch Edition 1.0

We have another Solitaire game for iPad in the App Store.

Most Popular Solitaire for iPadApple approved Most Popular Solitaire, our third Solitaire game for iPad, yesterday; it is now available in the App Store for only $3.99!

Most Popular Solitaire is a collection of 30 of the most popular Solitaire games, exactly as the title implies.  These games include Klondike (a.k.a., “Solitaire”), FreeCell, and Spider, as well as more unusual forms of patience such as Crazy Quilt.  There are games of many different types, including Pyramid, Forty Thieves, Aces Up, Canfield, Golf, La Belle Lucie, Cruel, Scorpion, and Yukon, plus 17 more games, and “if you act now” you will also receive 13 bonus variations of these games.

The initial release of this latest app has the same basic features as A Little Solitaire Touch Edition and FreeCell Plus Touch Edition, albeit with many more games.  The next two Solitaire apps from the Goodsol Solitaire for iPad page will add some additional features, based on customer feedback from the earlier releases.

What our customers are saying:

  • “Awesome.  Best solitaire anywhere.  Am looking forward to all the new fun you’ve planned for updates.”
  • “This is an excellent group of Solitaire games.  I enjoy the ‘touch’ autojump feature.  Graphics are excellent on the iPad.”
  • “I have been playing both their solitaire and mahjongg PC games for years.  Love their products.  [The iPad games] they’ve loaded are excellent.”

Get your copy from the App Store today!

FreeCell Plus Touch Edition 1.0

Now our second iOS title is available in the App Store.

FreeCell Plus for iPadYesterday, Apple approved Goodsol FreeCell Plus, our second Solitaire game for iPad, and it is now available in the App Store for only $1.99!

Goodsol FreeCell Plus is a collection of 12 different FreeCell variants, including FreeCell itself, as well as some other very popular games, such as Eight Off, Penguin, and Sea Towers, plus 8 more.  The title also includes 3 different card sets, 16 back designs, and features all of the quality gameplay you expect from us.  As a bonus, free of charge, you also get the cherished “Goodsol” branding because, oddly, Apple does not allow both iOS and Mac OS X games to have the same name, even from the same developer.

FreeCell Plus is just starting to climb the charts, and we anticipate a decent spike when the next Goodsol newsletter announces it.  Last week, A Little Solitaire climbed to #1 in Card Games, with a 5-star rating, and I expect that FreeCell Plus will perform similarly.

You will see on the Goodsol Solitaire for iPad page that “App 3” is being prepared for beta testing.  If you think you know what that title will be, you are probably correct. 🙂

A Little Solitaire Touch Edition 1.0

Our first iOS title is now available in the App Store!

On Friday, Apple approved A Little Solitaire, our A Little Solitaire Touch Editionfirst Solitaire game for iPad (of several), and it is now available in the App Store for only 99 cents!

A Little Solitaire is, as suggested by the name, a small collection with 9 of the most popular computer Solitaire games.  This includes Klondike (a.k.a., Solitaire) [4 variants], FreeCell [2 variants], and Spider, with its Spider One Suit (easy) and Spider Two Suits (average) variants.  The product includes 3 different card sets, as well as 16 back designs, and features all of the quality gameplay you expect from Goodsol Development (and our implementation 🙂 ).

Over the weekend, A Little Solitaire has hovered just outside the Top 50 in its category, Card Games (i.e., Games->Card), where it remains (for the moment) on the front page.  It has a few reviews, but I am particularly pleased by this 5 Star review:

Wow — I have been waiting so long for this app for the IPAD. Nicely done as I would not expect anything else from this developer. I have the Mac games and THANKS for the IPAD version. Will look forward to more apps and graphics are nice, game play is like it should be played. THANKS!!!!

This makes me feel that the effort to make a quality game was appreciated.  A mediocre review based solely on games that a reviewer would rather have…  not so much.

Check it out, and please let us know what you think.