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

Still Coding After All These Years

Today is my 40th anniversary of programming a computer.

December 22, 1978: This day marked the first time I walked into a computer store, the first time I played a game on a home computer (or even touched one), and the very first time I wrote a computer program.

Exidy Sourcerer

Of course, that very first program was pretty BASIC. 😉  I learned the concept of programming, line numbers, how to RUN and LIST a program, and (at least) my first two commands, PRINT and GOTO, on that same day.

The very next day, I learned (more) about variables, FOR loops, and number theory (mathematics, not programming), as I helped an MSU student debug his program, and then further experiment with it.  We noticed that abundant numbers are often bounded on each side by primes, but this is not universal.

I urge you to read more about My First Programming Experience.

Computers were awesome!

A few years later, as I was on an airline flight, I took out my pen and paper and started writing a wishlist for the “perfect computer” for me, dreaming about what could be possible in the future.  I envisioned lots of colors, crazy amounts of memory (like 64K!), and larger custom character sets, which idea gave way to (really out there) thoughts of individually addressable pixels at very high resolution (say, 640×400).  At a conference, I saw a display with a “true color” screen image of an apple (fruit) at 1024×1024 and that blew my mind.

In the intervening years, I have had loads of milestones and accomplishments:

  • January 13, 1982: founded Sophisticated Software Systems
  • Summer 1982: had first professional programming job
  • Late summer 1982: purchased very first computer, a Commodore VIC-20
  • 1984: won the ComCon ’84 International Programming Competition
  • 1984: started first full-time programming job with Michigan State University
  • 1988: landed game programming job with Quest Software
  • 1989: published first retail game product, Legacy of the Ancients
  • April 22, 1990: self-published shareware game, Pacmania 1.10
  • February 1, 1993: started as Senior Software Engineer at Spectrum Holobyte
  • 1994: went full-time as an independent game developer
  • 1995: incorporated business as SophSoft, Incorporated
  • 1996: launched Digital Gamecraft for developing independent games
  • 2002: Goodsol Development released Pretty Good MahJongg
  • 2004: served as Chairman for the Association of Software Professionals
  • 2007: created first Mac game, Pretty Good Solitaire Mac Edition
  • March 27, 2013: A Little Solitaire became the #1 card game for iPad
  • 2013: published first Digital Gamecraft title for iOS, Demolish! Pairs
  • 2016: established and ran Advanced Concepts Group at DAQRI
  • 2018: published an Android version of Demolish! Pairs

These are just a few of the major highlights, but none of these events made as much of a difference in my life as that day I walked into New Dimensions in Computing.  Of course, there are a few personal milestones that really affected things as well, but most of these also happened within this time frame (more than 76% of my lifetime).

Today, I am back doing what I love: programming.  Even when things are tough, I truly enjoy the development process and can get ‘in the zone’.  When people would ask me what my favorite game was, I would often reply something like, “C++”. 🙂

Amazingly, I now have a stable of portable devices, each of which far exceeds my ultimate imagination for my perfect computer, and many of them blow away the visual capabilities of that screen that mesmerized me back in the early 1980s (and I never even considered the possibility of 3D rendering capabilities).  My phone fits in my pocket yet is more powerful than my first PC, and my watch is more powerful than that first computer.

Computers are awesome!


Demolish! Pairs for Android and iOS

Awesome puzzle game now available for almost any mobile device.

On Tuesday, Digital Gamecraft released both Demolish! Pairs 1.0 for Android and Demolish! Pairs 1.2 for iOS.  This pair of releases represents a recommitment to this product that is enjoyed by game players on a daily basis. Demolish! Pairs 1.0 for Android is the first release on the Android platform, after numerous requests, and it runs on 99.7% of Android tablets and phones. Demolish! Pairs 1.2 for iOS is a long-awaited update release that adds support for the latest iOS devices, including the iPhone X, and resolves compatibility issues with iOS 11. The goal of Demolish! Pairs is to remove pairs of adjacent, matching blocks until the entire board is cleared.  Each time a pair of blocks is removed, the blocks above (if any) drop down and empty columns are filled by pushing the remaining columns together.

Release Date

The release date, September 11, is significant, if somewhat coincidental.  (We decided to release the Android version on that date, and the Apple approval of the iOS version just happened to arrive later on the same day.) Demolish! Pairs began life as a secondary project in the early years of Digital Gamecraft.  After many years of discussing the idea, we started actual game design in August 1999, and we completed the first playable (Windows) prototype shortly thereafter.  A couple of years later, we made the decision to proceed with Demolish! (as it was known at the time) as a primary development project, and we were making good progress for a few weeks. The original design theme was an actual building that was being demolished brick by brick, and the gameplay was fun.  However, the events that occurred on that date 17 years ago suddenly made the idea of tearing down a building very disturbing, and it became clear immediately that the game could not continue along the same path.  We initially renamed the project to Diminish, making the destruction as abstract as possible, before finally shelving the whole thing for almost a decade. In early 2011, we picked up the project again, deciding to continue with the abstract design and target mobile devices, but to return to the original name.  We had a number of different play mechanics that we were implementing, but determined that the one with selecting only pairs of blocks was both unique and the most obviously skillful, so we focused on that particular mechanic.  Demolish! Pairs was born. The dramatic history of this game does not end there, but this post does. 😉

AWESOME Solitaire AR

Digital Gamecraft™ is delighted to announce its latest development project, AWESOME Solitaire AR Edition™, shipping in July.

You have known us as the development force behind the award-winning, best-selling, and most numerous Solitaire games, Pretty Good Solitaire, Goodsol Solitaire 101, Most Popular Solitaire, FreeCell Plus, and A Little Solitaire for iPad (to name a few).

Today, we announce the upcoming availability of AWESOME Solitaire AR Edition™, the world’s first augmented reality Solitaire product shipped with its own AR hardware.

Imagine being able to take all your favorite solitaire games with you wherever you go.  Play FreeCell on the wall of a building.  Find your Spider moves spread out over a city block.  Meet people on the street and explain to them that, “The game is called ‘Klondike‘ and, yes, there are many different types of solitaire.”  See the cards right out in front of you, almost as if they could be real, physical objects.

Best of all, AWESOME Solitaire AR Edition will come with premium augmented reality hardware from our friends at DAQRI, which hardware you can also use for, you know, other stuff (when not playing solitaire, of course).

Unique Features

  • includes hundreds of types of solitaire, complete with rules on how to play
  • ability to select virtually any size playing cards and tableaux up to 1 mile wide
  • play multiplayer mode and fight strangers for the cards you need to win
  • choose between two hardware configurations based on quality of neighborhood
  • ships with special “decks” of 52 cards each for low power desktop operation

Prices

Professional system, includes AWESOME Solitaire AR Edition software, DAQRI Smart Glasses, and two decks of standard playing cards – $7495

Even more professional system, includes AWESOME Solitaire AR Edition, DAQRI Smart Helmet, and 4 decks of Poker size playing cards – $call for price

Solitaire gang discount on fleet purchases – call for details

Preorder now!  Due to anticipated overwhelming demand, orders will be shipped on a first-come, first-served basis, so reserve your place in line today.

 

Pretty Good Solitaire ME 3.30

The latest upgrade to our flagship macOS product is available.

Pretty Good Solitaire Mac Edition 3.3Pretty Good Solitaire Mac Edition 3.30, available from Goodsol Development, is the best Solitaire game for Mac computers.  This version of the game can be purchased and immediately downloaded for only $24.95, and it is a free upgrade for customers.

This Pretty Good Solitaire Mac Edition update adds another 100 games, for a total of 700 games, plus another 90 bonus games not accessible in the trial version (for those who want to try it first).

In addition to the new games, this version 3.30 update addresses several minor requests from customers, fixes all known bugs, and fully supports Apple macOS Sierra.

Fifteen Years with Goodsol

We have been working with Goodsol Development for 15 years now!

Goodsol DevelopmentOn this date back in 2001, SophSoft, Incorporated made our first software delivery to Goodsol Development.  Since that time, we have never stopped working together, producing the best solitaire software ever created.

I posted about this collaboration 5 years ago in my post, 10 Years of the GDcard Library.  We have continued our progress since then, adding an entire line of iOS products and 400 more games to Pretty Good Solitaire Mac Edition, along with much more.

For fun, I thought that I would take a look at some of the numbers:

To save everybody a little bit of math, this means that, on average, we have delivered a new product version once every 10 days, and we have added a new game of Solitaire every two days, for the entire 15 years.  Amazingly, the number of delivered versions for Pretty Good MahJongg and for Pretty Good Solitaire Mac Edition are currently exactly the same: 88 of each.  [Spoiler: PGMJ will take the lead with a macOS Sierra bug fix.]

In lieu of anniversary gifts 🙂 , just tell your friends about our excellent products!

PSA: Pretty Good MahJongg and macOS Sierra

Public Service Announcement

Pretty Good MahJongg Mac EditionIf you are currently using Pretty Good MahJongg Mac Edition, whether purchased from the Mac App Store or downloaded directly from Goodsol Development, we recommend waiting for the next update before upgrading to macOS Sierra (10.12).

Do Not Upgrade (yet)

Apple is scheduled to release macOS Sierra, the next version (10.12) of their operating system (formerly: Mac OS X) today [September 20, 2016].  As of the final beta version, there is a change (as yet unidentified) that breaks Pretty Good MahJongg Mac Edition.  We are actively working on a solution, and we will publish an update as soon as a fix is available, but in the meantime, we suggest keeping El Capitan (Mac OS X 10.11).

Thank you.

Pretty Good Solitaire ME 3.10

The next version of our Mac Edition is now available.

Pretty Good Solitaire Mac Edition 3.1Goodsol Development has released Pretty Good Solitaire Mac Edition 3.10.  This is a free upgrade for customers who have already purchased, it is available for immediate purchase for only $24.95, and a trial version is also available.

This version of Pretty Good Solitaire Mac Edition adds another 25 games, for a total of 575 games, and the full version has 75 bonus games.  The main menu interface was also changed to make the game search/filter box easier to find and use.

The 25 new games in PGSME 3.1 are:

  • Acey and Kingsley
  • Anno Domini
  • Assembly
  • Box Fan
  • Cell 11
  • Crescent Fan
  • Double Aces and Kings
  • Five Stacks
  • Forwards
  • Forwards and Backwards
  • Free Parking
  • Grandmother’s
  • Idle Aces
  • Lucky Thirteen
  • Maze
  • Pyramid Clear
  • Quadruple Russian
  • Racing Aces
  • Red Hand
  • Ripple Fan
  • Solid Square
  • Spaces and Aces
  • Speculation
  • Twin Queens
  • Unusual

Goodsol Community

Along with this release, Goodsol has now created two new places to discuss Solitaire games in social media, to supplement the Goodsol Forum.  The first is the (quite active) Goodsol Solitaire Community on Google+, and the other is the Goodsol Solitaire Group on Facebook.  These are great places to get help with a specific deal number for one of our games, to find a challenging deal number (and maybe help somebody else), to get recommendations for games, or to discuss Solitaire topics in general.

The next version of Pretty Good Solitaire Mac Edition will contain 600 games, but you can buy now, have fun right away, and still get that version as a free upgrade!

Developer for Hire

You have a game idea.  Let us create it for you.

SophSoft is available for game development now!This week marks 20 years (!) since we first took our company full-time.  In that time, we have developed more than 25 products for a variety of clients.  We have published games for Windows, Mac OS X, and iOS, and we have extensive experience.

Now, we are available immediately for new development contracts.  We have a significant opening in our schedule, which we need to fill soon.  This is your chance to have a world-class game developer working (or consulting) on your project.  If you want to explore this opportunity, please contact me directly at seelhoff@sophsoft.com.

For more information on SophSoft, Incorporated, please visit the web site, and you can also download our brochure [PDF, 2 pages] to find out how we can help you.

All clients get to deal directly with me, and if you are interested in my 25+ years in the game industry, please feel free to look at my résumé [PDF, 4 pages].

Act quickly!  Do not miss this opportunity.  It may not last long!

Pretty Good Solitaire Mac Edition 3.02

We finally finished this extensive technical update.

Pretty Good Solitaire Mac Edition 3.0Pretty Good Solitaire Mac Edition 3.0 has now been released by Goodsol Development.  It is available for immediate download/purchase for only $24.95, and a trial version is also available.

This version of Pretty Good Solitaire Mac Edition contains 550 games (50 more than the previous version), and the full version provides access to another 75 bonus games.  The interface also contains many user interface improvements.

From a technical perspective, this is a major upgrade, as it represents a complete conversion of the program from Carbon libraries (used since version 1.0) to Cocoa frameworks, an effort imposed by Apple’s diminishing support for the former.  In the process, numerous features were reconsidered and reimplemented, so there are various improvements throughout the program.  One thing that we lost in the process was support for (much) older versions of Mac OS X; the current version requires Snow Leopard (10.6).

What happened to 3.00 and 3.01?

As is often the case with major technical changes, there were a couple of teething problems.  In the first release (3.00), we discovered a race problem with the Cocoa system, where 5-10% of our users had systems that were sending messages to objects that had already been disposed, causing the program to crash when run on these systems.  (Of course, none of the test systems exhibited this problem.)

The second release (3.01), as well as the first, was discovered to have a critical error with menu handling, namely, that card sets could not be switched (properly) using the ‘Preferences->Card Set’ menu.  Unlike the first issue, this one was always reproducible, missed entirely by our testers, and completely my fault.  Oops… 🙂

Once the current version proves stable, we will be adding quite a few (probably 25) more new games and making more interface improvements, including the most requested feature, an ability to sort results and high score tables.  This, of course, will be a free upgrade for all then current PGSME customers, so buy now!