Solitaire

I come by my love of Solitaire honestly.

It is fair to say that I am one of the leading experts in the type of card game known as Solitaire (in the US), or Patience (in the UK and elsewhere).  I have been working with Thomas Warfield at Goodsol Development for more than a dozen years, and in that capacity I have implemented literally hundreds of different Solitaire games on various platforms, including Windows, Mac OS X, and iPad.

However, one would be very mistaken to assume that I had to learn about Solitaire back then, or even that these were my first Solitaire software products.  In fact, I have been a Solitaire enthusiast for more than 40 years (easily predating my first access to a computer), and I have been writing programs for playing Solitaire for 30 years.  That is why it was such a good match when Thomas and I started working together; he is also a renown expert, with a very successful Solitaire game, Pretty Good Solitaire, and there is not another company on the planet with more Solitaire expertise from which to draw.

I first learned to play Solitaire from my father when I was about 5 years old.  He taught me a traditional form of Klondike (which many people just call, “Solitaire”), and I clearly remember the first time he watched me deal out the tableau on the stone hearth in front of our fireplace.  I played that a lot over the years, as well as a few other games I picked up.  My neighbor taught me Pyramid, which I really liked, and “Clock” (PGS: Travellers Clock), which had an appeal due to the elegance of play and the physicality of the the cards, but got boring quickly because of the lack of choice.  My mother taught me “Idiot’s Delight” (a name used to describe many different Solitaire games), which in this case was a purely mechanical version of Aces Up.  When I was sick, rather than comic books, I just wanted a couple decks of playing cards and, perhaps, some word search puzzles. 🙂

In the early years of elementary school, I had a couple of friends with whom I had discussions (and disagreements) about the rules of Klondike.  We spent time debating whether one should be able to build Aces to the tableau and, if so, whether Kings could be built on Aces, whether one was allowed to pull cards from the foundations (which I now know is called “winnowing back”), how many cards were dealt from stock to waste, and if there was a limit to redeals.  These are the same kind of game design discussions I still have now as we implement more games.

I also spent a great deal of time working on designing my own solitaire games, the rules of which, alas, were never written down and have been lost forever.  I recall that much of my focus was on small tableau games, those which could be played, ideally, with just one or two piles, making them easier to play in a car.  I also recall at least one with a unique mechanic, based on Go Fish, where the player would declare a selected card, and the play proceeded based on whether (or where?) the nominated rank appeared.  Of course, it is fair to assume that none of my inventions were as compelling as the traditional Solitaire games; otherwise, I probably would still be playing them.

During middle school, an acquaintance (friend of a parent) taught me an unnamed Solitaire game, which had two mechanics I had never seen before: movement of card groups regardless of order (as seen in Yukon) and a “hand” of up to 4 arbitrary cards (like the 4 cells in FreeCell).  This game had a greater degree of calculation and planning, and was less reliant on the luck of the deal, so it was very appealing to me.  Around the same time, I also learned how to do a “bridge” shuffle, so I tried to wear out my hands practicing the two together.  A variant of this game is implemented in PGS as Scorpion Head.

By this time, I was already programming computer games, and the idea of playing Solitaire on a computer was never far away.  My first proper (read: finished 🙂 ) implementation was a text version of Aces Up on my Commodore VIC-20.  The program would shuffle and deal the cards, and one would play with simple keypresses for activating a column (i.e., discarding the top card or moving it into an empty space).  As I recall, my friend and I were the only two who ever actually played this game, but we started wondering about the chances of victory with the implemented rules, so I wrote a computer player that would play a hand using a specific heuristic (n.b., not a comprehensive solution search).  Once debugged, I ran the program overnight and the consistent result was that victory was achieved in just about 5% of the games.  (Clearly, a search would have done better… and taken much longer.)

Many other computer implementations followed.  Our friends showed us a game they called “Canasta Solitaire” (similar to Thirteen Packs, which has nothing in common with Canasta), and at their request, I wrote a version of that for the IBM PC (which, incidentally, became the scene of my biggest computer crash disaster 🙁 ).  I wrote very nice DOS (EGA) versions of Pyramid and other games around 1990, and I was working on the Windows/DirectX versions of the these near the end of that decade, when I also worked (in a non-Solitaire capacity) with MVP Software on some other card game packages.

In 2001 (one suit of years ago), the Goodsol Development years began.  My first project was implementing a comprehensive display library, allowing the original Pretty Good Solitaire [for Windows] more options, including more than 2 decks per game.  The second project was Pretty Good MahJongg, which includes 55 original Solitaire games played with MahJongg tiles, followed by Action Solitaire, including (now) 75 Solitaire games played against the clock, and Most Popular Solitaire, my interpretation on the most popular games in PGS, as well as one (Crazy Quilt) that was the first Goodsol version of that game.  Add Mac and iPad versions of Pretty Good Solitaire and Most Popular Solitaire and a Mac version of Pretty Good MahJongg, as well as other products: Goodsol Solitaire 101 (Windows/Mac/iPad), FreeCell Plus (Windows/Mac/iPad), and A Little Solitaire (iPad).

Counting only Goodsol products (not different SKUs) on each platform (including bonus games), it appears that I have implemented 2639 Solitaire games!  More is definitely yet to come, as Thomas is already up to 840 and counting (with PGS), so I am still trailing by 290 games (on Mac and iPad, as well as an internal Windows project).

Of course, with the implementation of so many games, there is a focus on rules.  Due to my love of Solitaire (and games in general), I began collecting books of Solitaire rules.  The first game I learned from a book and really loved was La Belle Lucie, which I played with the merci (draw) rule, implemented in PGS as Three Shuffles and a Draw.  Since high school, I have amassed around two hundred books of traditional game rules, dozens of which have Solitaire games.  An informal survey of my current bookshelves shows 20 books dedicated solely to Solitaire, dating back as far as 1883 (because my copy of Lady Cadogan’s Illustrated Games of Patience is a reprint of the original 1875 book).

So, while Solitaire may be a simple pastime to most, keep in mind that a few of us really know (and appreciate) these games inside and out.  When you want to buy a computer Solitaire program lovingly crafted by the leading experts in the field…

Happy Halloween 2012!

Enjoy Hallowe’en, Samhain, All Hallows’ Even, and Day of the Dead.

The above card images are from the Halloween Card Set, available for all of our Solitaire games [*] as a free download of the Holiday Card Set Pack.

[* Disclaimer: An exclusion applies for games purchased through the Mac App Store, which forbids the installation of new card sets from this download.  These card sets can be installed for MAS games, but the process is convoluted.]

Are you kidding me?

Where Gamecraft has been recently.

As regular readers will have noticed, this blog has spent a little time offline, and even more time without new content, although even occasional browsers will see that it now has an exciting new look.

In the past two months, we have had crashes of our most important Mac OS X, Linux, and Windows systems (in that order).  These were significant setbacks in and of themselves, but when a microISV is producing at full speed, and roadblocks are encountered, something has to give.  In this case, this Gamecraft blog was one of the casualties.

The initial Mac OS X issue was a terminal hardware failure of the primary development system, but it was compounded into a major problem by Apple’s ill-advised deprecation policy, since no new replacement hardware would run the version of Xcode and build tools we use to support all of our Mac customers.  (Say what you want about Microsoft, but they treat developers way better than Apple.)  We finally resolved the development issues by obtaining and installing old server versions of OS X in Parallels, but we are still screwed out of being able to properly test under Lion, Snow Leopard, or Leopard without buying old used equipment.  [insert appropriate expletives here]

The Linux (Ubuntu) issue was a bootstrap failure on our web server caused by a power outage during a major upgrade (and assisted by the new procedure of displaying update text and requiring user input to continue, without which the window of “opportunity” would have been much smaller).  Once it became clear that there was not going to be any reasonable way to recover/continue, it was not too bad rebuilding the system, and a little bit (including the entire database for this site) survived intact without requiring restoration.  Unfortunately, the server configuration (i.e., the hard part) was not fully recoverable, so that took some time to get working (and is still not completely to my liking).

The Windows issue stemmed from a (poorly timed) decision to upgrade my primarily development system to Windows 7 prior to public release of Windows 8 (a.k.a., Windows Ugh).  I almost always do clean installations, rather than upgrades, for my Windows systems, but the above issues suggested to me that I should do a 32-bit upgrade to minimize the disruption.  What I did not know is that in the interest of “security”, Win7 no longer supports the domain controller we have been using internally for many years, so the upgrade could not sign in, so it could/would not access the user information for my account, so the Start menu, registry, and other user-specific settings were all gone.  Result: All of the program files were installed, but the products ranged from working if manually launched to completely unusable.

After all of this, as a side note, everybody in the office experienced a tenacious respiratory illness that interfered with productivity as well.  (I would draw a parallel, except that only in the physical world was a virus involved.)

So, at present, all of our systems are back in working order.  We used the opportunity to improve our Mac OS X development process, including the introduction of code signing to support Gatekeeper, and the builds are running on a faster machine (which almost counterbalances the slower virtualized system).  Likewise, we ended up maxing out the Windows system memory and installing Windows 7 (64-bit) from scratch, giving better performance all around (except for the few old 16-bit tools I still used, which no longer run).  For the web, we decided to build a better blog (first) and then devote appropriate attention to our other sites, which, frankly, had been mostly neglected.

In the meantime, of course, we have remained steadily engaged in development, producing several new game versions and upgrades, as well as progress on a few new products, so expect a number of announcements (many after the fact) soon.

In the future, we will be utilizing the new and newly rebuilt development systems to full capacity, producing new and updated products for a multitude of different platforms, including (primarily) iOS, Windows, and Mac OS X.  Our new web sites will (also) be announced here as they are published, and we have plans to begin publishing game reviews for both Indie and AAA titles.

Please be sure to subscribe to our feed.  Thanks!

Where the Macgic Happens

A cozy Mac OS X and iOS development corner

I thought I should give readers a little glimpse behind the curtain here at Digital Gamecraft, so here is a picture of my personal Apple technology desk on one of those unusual days during which a full complement of devices have gathered.  Usually, most of the mobile devices live in other places, but they occasionally come together for an ultra-local technology conference.  (In this case, they were all anxiously anticipating new provisioning profiles after the previous batch had expired.)
This desk in the corner of the office is used for the bulk of primary development and debugging for Mac OS X and iOS products.

Here you see a simple key to the components of this image.  First, the parts labeled in red are the development components:

  1. MacBook Pro (“late 2007”), 17-inch 2.4GHz, running Mac OS X 10.4 (Tiger) through Mac OS X 10.7 (Lion), and soon the developer preview of 10.8 (Mountain Lion), with the help of an external FireWire hard drive, mostly hidden from view by the next item.
  2. iPad (original) 16G running iOS 3.2, the minimum iPad platform supported by our products.
  3. iPod touch (2nd generation) 8G, running iOS 4.2.1, sans (unsupported) multitasking.
  4. iPhone 4 with 32G, running iOS 4.2.6, with multitasking, GPS, camera, and (most importantly) a Retina display.
  5. iPad 2 (Wi-Fi + 3G) with 64G, running iOS 4.3.5, named “Rabbit”.
  6. Mac Mini PPC running Mac OS X 10.4 (Tiger), the minimum Mac OS X platform supported by our software.
  7. Mag Innovision widescreen monitor with dual inputs, running natively at 1680 x 1050, acting as an external display for both Mac systems.
  8. Microsoft Mouse attached via Apple keyboard.  After a year of trying to keep this desk Apple-only, I had to surrender to the fact that Microsoft is just far better at making mouses.
  9. Herman Miller Aeron chair, brand new, also known as my horizontal trans-workstation transport device (for quickly moving between this workspace and my Windows workspace).  After breaking chairs every 2-3 years, the 12-year warranty actually made this purchase seem much more reasonable.

The components labeled in green in the key are fundamental to productivity, though not directly part of the development process:

  1. Head, the head head.  Head is responsible for employee morale, and keeping his minions in line.  (“I am so important that my minions have minions.”)
  2. Minions.  These (4) heads each have individual names, and they keep things lively by moving around the desk, often at night, very unlike their larger relatives.  You’ve heard of “talking heads”?  These are not those.
  3. Pioneer stereo receiver, practically an antique, from the days where radio was broadcast through the air.  This magic box plays news from NPR as well as classic rock and blues (and, previously, jazz), and special shows are regularly recorded digitally for later/repeat listening.  [Not shown: separate cassette player/recorder and turntable components.]

That is a small look at one corner of my office, which serves as an important piece of our development effort.  With this range of equipment, we can develop and test products for the last 4 major versions of Mac OS X, on both Intel and PPC hardware, as well as on versions of iOS since the iPad was introduced, with at least one device with each technology.  (Of course, things change again on Friday with the availability of “The new iPad” and its large 2048×1536 Retina display.)

Note that the view just to the left of this picture is out a window into a small courtyard where birds and squirrels (black, brown, and red), as well as our cats, frolic during the day.  At night, you can hear the raccoons and opossums wandering through and, alas, smell the occasional skunk.

Perhaps, if you are all good girls and boys, I may later show you the desk at which I am currently writing this…