Posts Tagged ‘software’

MAS Preparation, Part 2

January 27th, 2012

Property List (Info.plist) changes

In the last installment of Preparing for Mac App Store Submission, I discussed the project modifications that are necessary (or recommended) for converting an existing Mac OS X project to one suitable for MAS submission.

This second part describes the changes to the information property list for your application that you should make for successful submission and to eschew rejections for simple issues.  As before, comments about any other issues or different experiences are certainly welcome.

Open the application information property list, usually named ‘Info.plist‘, in your project and follow these steps…

1. Update the bundle version format

First, update the format of the ‘Bundle version’ entry (CFBundleVersion) to contain exactly 3 period-separated integers representing the version number (e.g., “1.01.1“).  It cannot contain alphabetic characters (and although some documentation suggests that it may contain more or fewer integers, we did not take that chance).

For non-MAS applications, the format of this field was not enforced and, in fact, the default ‘About’ box encouraged the use of this field as a standard version description (alphanumeric string) by directly displaying it underneath the application name.  We used a format like, “1.01 (January 2012)”, which is more useful and aesthetically pleasing, but this was cause for rejection.

2. Add an application category

If you do not have one already, you will need to add an ‘Application Category’ entry (LSApplicationCategoryType).  The easiest way to set this value (in Xcode 4) is to select the ‘Summary’ tab for your target and select the appropriate setting in the ‘Application Category’ box.  In the case of Pretty Good Solitaire, we chose ‘Games – Card Games’ (public.app-category.card-games).

Note that Xcode 3 did not recognize this key, so it was necessary to explicitly add it, along with the appropriate category value, as found in the Information Property List Key Reference; fortunately, this is no longer necessary.

3. Set the minimum system version

Next, set the ‘Minimum system version’ entry (LSMinimumSystemVersion) to “10.6.6″, or higher if appropriate.

The Mac App Store does not work on versions of Mac OS X prior to 10.6.6 anyway, and leaving this at a lower setting (even if your downloadable versions support Leopard, Tiger, or even an earlier OS) may be cause for a rejection.

4. Review the supported document types

Finally, review the supported ‘Document types’ entry (CFBundleDocumentTypes), if any.  Remove any document types that will not be supported in your store version.

In our case, we supported a document type for saved games, which is still useful, but also a document type for automatic installation of extra card sets (which can be downloaded), or in the case of Pretty Good MahJongg, types for both extra tile sets and tile matching layouts.  Since downloading or installing any improvement to your application (outside of the Mac App Store) is verboten, we needed to remove this support.

Note that this initially passed muster with our first product, but it was cause for a rejection later on a different product using essentially identical functionality.  There is clearly some subjectivity to the application reviews, so a more thorough (or nitpicky) reviewer may find something previously allowed.  When a rejection can set your release schedule back a couple of weeks or more, it is not worth the risk.

Conclusion

With just these few changes to your information property list, your project should have the necessary application information for submission.  In the next installment, Part 3: Data and Resource guidelines, I will describe the issues you may encounter with your application data.

MAS Preparation, Part 1

January 25th, 2012

Project modifications

In Preparing for Mac App Store Submission, the first set of changes you should make are to the project itself.

This installment describes the project modifications that need to be made to an existing Mac OS X game project.  The general assumptions are that the existing project is working and properly tested, and that, ultimately, you will want to maintain a single set of source code with conditional compilation to differentiate the store version from other builds.  Note that these are the steps that we took for Pretty Good Solitaire Mac Edition; your project may require some adjustments to these steps.  (Comments where any significant change is necessary would be very appreciated.)

So, without further ado…

0. Create a duplicate store project

Before making any other changes, create a duplicate copy of the entire project folder and name the copy appropriately.  In our case, the original folder was ‘Pretty Good Solitaire’ (which builds full and trial versions of the game) and we created a separate ‘pgsse’ (Pretty Good Solitaire [Mac/]Store Edition) folder for MAS modifications.

The version of your project that you will submit to the Mac App Store is a separate SKU (Shelf Keeping Unit), a build that uses slightly different code and configuration and which is distributed via a different channel.  While it is possible to have the store target within the main project, certain features (e.g., Power PC support, Mac OS X 10.5 support, downloadable data) are not supported in MAS, so it is easier to separate them (at first, anyway).  In any event, doing so at the start gives you a safe playground for making changes without messing up your working project.

1. Update the project version number

As just noted, the store build is a separate version and, thus, should have a different version number.  In our case, we decided that odd minor versions (e.g., “1.01″) would represent the store editions, while even minor versions (e.g., “1.00″) represented the direct downloadable editions.

2. Rename the primary build target

In the new project (of course), rename the primary build target to something appropriate.  In our case, we renamed the full version target to ‘Pretty Good Solitaire store’, which is now the store version.  You could also delete any redundant or obsolete targets remaining in the project.  For example, we deleted the trial version target, as it is built in the original project and the MAS version cannot have any vestiges of a trial version.

Note that this step is not strictly required, but it is a good idea to differentiate between targets, so it is always immediately obvious which project is active, and also to minimize any excess baggage, which reduces the possibility of mistakes.

3. Build with a current Xcode version

Make sure that you build the project with a current version of Xcode.  Submissions to the Mac App Store now require Xcode 4 and, as of this writing, the latest version is Xcode 4.2.1.

If you have an older version of Xcode, this would be a good time to upgrade, and although it will not be mentioned explicitly, you should build the project regularly, ideally after every change, to make sure that the build is not broken and behaves as expected.

4. Define a preprocessor variable

To allow for conditional compilation of certain source code, it is a good idea to define a preprocessor variableAPPSTORE, for any build targets intended for MAS.  In the ‘Build Settings’ for the target (or the whole project, if you prefer), find the setting for ‘Preprocessor Macros’ and add “APPSTORE” to each configuration.  Note that it is common to have different variables for ‘Release’ and ‘Debug’ configurations, so be careful to define APPSTORE for each one without accidentally removing or altering any existing definitions.

Of course, there is no requirement that the preprocessor variable be named “APPSTORE”, but beware that simply using “STORE” results in a naming conflict in the latest Mac OS X SDK.

5. Add necessary frameworks/libraries

In order to test the validity of app receipts, you will need to add the IOKit and Security frameworks and the crypto library.  From the ‘Build Phases’ of the primary target, open the ‘Link Binary With Libraries’ section and, by clicking on the ‘+’ symbol, add ‘IOKit.framework‘, ‘Security.framework‘ and ‘libcrypto.dylib‘.

Note that Xcode 4 adds these frameworks/libraries at the top level of your project; you will probably want to drag them into the ‘External Framework and Libraries’ folder with the other frameworks.

6. Configure debugging symbols

Despite submitting a release version to MAS, Apple requires debugging information to be included with a submission.  To accede to this requirement, you must set ‘Generate Debug Symbols’ to “Yes” and also set ‘Debug Information Format’ to “DWARF with dSYM File” (at least for the ‘Release’ configuration) in the ‘Build Settings’ of the target.

In our original project, we had all debug information disabled and/or stripped from the release builds, but one of our early issues was the lack of the dSYM file with debugging information for Apple.

7. Set correct build architecture

Finally, set ‘Architectures’ to an Intel (only) setting; for our project, that is “32-bit Intel”.

Even if your code and original project supports both PPC and Intel via a “Universal” application, the presence of a PPC build in your submission will result in rejection.  (We found that out the hard/lengthy way.)  At least now there are settings for this; in Xcode 3, you had to use “i386″, which was not even listed as a choice.

Conclusion

At this point, you should have a new project with a store target and all of the build settings configured appropriately.  In the next installment, Part 2: Property List (Info.plist) changes, we will discuss the necessary adjustments and additions to the information property list for your project.

Preparing for Mac App Store Submission

January 23rd, 2012

Making a Mac OS X game project suitable for MAS

If you currently have a Mac product and have not already done so, you may be considering submission to the Mac App Store (MAS).

In the upcoming series of posts, I will be detailing the process that we went through to get Pretty Good Solitaire Mac Edition, and some of our other game products, successfully submitted to MAS.  There were a number of rejections along the way, as the App Store Review Guidelines [note: requires Mac developer agreement], while extensive, are not comprehensive (nor are they 100% consistent, as we had some products accepted and others rejected with identical behaviors).

Over multiple submissions, and fewer rejections, we developed a submission checklist which I will detail roughly (some items are specific to our games) in these upcoming posts:

[Editor: I will link to each section as it is published.]

We have had product in the Mac App Store since launch day, more than a year ago.  If you already have a game that runs on Mac OS X, it makes sense to make the several modifications to get it into MAS, another channel to find customers.  However, in our experience, it is not a viable substitute for direct downloadable sales.  The channel is not (yet) the primary ‘go to’ location for Mac software, although the availability of Lion (Mac OS X 10.7) only on MAS should shift more customers.  Additionally, there is the same downward pressure on pricing (towards free) seen on the iOS App Store, sales are lackluster, and (of course) you are giving 30% directly to Apple.

I would certainly not recommend developing a project solely for the Mac App Store, nor eliminating a direct downloadable sales channel in favor of MAS, but with an existing project it may be worth the fairly limited extra effort it takes to be there, too.

Pretty Good Solitaire Mac Edition 2.3

January 11th, 2012

Now with 350 games!

Yesterday, Goodsol Development published Pretty Good Solitaire Mac Edition 2.30, the latest version of the premier computer Solitaire program for Apple Mac OS X.

Pretty Good Solitaire Mac Edition 2.30 adds 50 new solitaire games, bringing the total to 350 games in the trial version, and 400 games in the full version (with 50 bonus games).  This game also introduces the Tour Explorer, which allows players to play game tours for a total score in pursuit of the perfect tourClick here for a list of other features in PGSME.  You can download a trial version of the product and buy it for only $24.95!  This version is a free upgrade for all previous PGSME customers, and new customers will get free upgrades through the end of 2012, which will include even more releases and new games.

As mentioned in my 2011: Year in Review article, this product is the culmination of a fairly long development and beta test cycle.  Surprisingly, the game tours feature (like the game groups before it) was the biggest single issue in getting the product released sooner.  Not only does the feature consist of four separate dialog boxes, plus two more back-end data classes, but the only specification was a somewhat flawed implementation, so I needed to rethink and redesign the entire feature, and then tweak the behavior until we had something that worked well.  Complicating matters was the fact the beta testers were not inclined to play game tours, and none are quality assurance professionals (nor aspiring to be), so in essence, only we developers (mostly me) were doing any real testing of this feature.

Of course, the sheer mass of 50 new games, when combined, contributed much more to the overall development and testing time, though none (even the real “oddballs”) took a huge amount of time alone.  Fortunately, our beta testers were more meticulous about play testing individual games, so the few significant bugs I let slip through to the beta versions were (hopefully) identified and crushed.  I challenge anybody to find a bug in PGSME now.

After a short breather, I will be back on development of PGSME 2.4 (a.k.a., GS400), which will contain (surprise!) another 50 games for a total of 400 (plus at least 50 bonus games).  Bring it on!

 

10 Years of the GDcard Library

September 26th, 2011

We celebrate a decade of collaboration with Goodsol.

Time really does fly when you are having fun (and doing what you love).  It was 10 years ago today that we delivered the first properly functional version of a playing card library, then named PGScard.dll, to Goodsol Development.  We have been working with them ever since, improving this library, which is used heavily in Pretty Good Solitaire, writing new games (see below), and extending the product line to include Mac OS X (and, soon, IOS), as well as our Windows products.

Back then, the whole nation was still asking questions, like ‘Where do we go from here?‘  We were facing a bit of a crisis here as well, as our primary external opportunity was stopped in the midst of economic uncertainty, and our main internal project was rendered unpalatable for release, so we were available immediately when Thomas Warfield inquired.  (The subject line of my reply was, “Work?  Did you say work? <g>“.)

In the intervening years, the library was renamed to GDcard, had numerous extensions and updates, and has been in every PGS release (for Windows) in the last decade.  The current version, GDcard 2.09, has not required any modifications in the past 4 years, but it still draws cards and provides other related functionality in the latest release, Pretty Good Solitaire 13.1.0 (with 770 games), published last week (almost 10 years to the day after the initial agreement).

This first project led to many others with Goodsol (in roughly chronological order):

… and several products to be announced later.  All of the above games have trial versions available for download (at the links provided).  We also created MahJongg Patience (a smaller version of PGMJ) for the original (retail) MahJongg Master, published in 2003 by eGames.  (I now see that we are averaging more than one new SKU per year.)

I do not expect to be exchanging diamond jewelry, or even tin or aluminum gifts, but I do look forward to much more productivity and success from this arrangement in the future.  Thanks, Thomas and Anne!

New Goodsol Solitaire Forum

June 18th, 2011

Newsbrief: A new web forum is launched.

This week, Goodsol Development launched its new/improved Goodsol Solitaire Forum, now available at http://www.goodsol.net/forum (same old address).

After a short transition period, domain name propagation time, and the requisite teething issues, this forum is (again) the primary source for discussion and support of the following titles (of ours):

My profile name is Seelhoff; I hope to see you there.

Pretty Good Solitaire Mac Edition 2.21

May 23rd, 2011

First, the Good News…

PGSME 2.21Pretty Good Solitaire Mac Edition 2.21 is now available in the Mac App Store.

Pretty Good Solitaire Mac Edition 2.21 is essentially the same as Pretty Good Solitaire Mac Edition 2.20, including all 350 games (including bonus games), with the alterations required for MAS inclusion.  Mostly, this is just the elimination of any registration codes or acknowledgment that Apple is not the one and only possible source of this product.

Click here for PGSME 2.21 on the Mac App Store.  (We would really appreciate decent reviews, too.)

 

… and then the Bad News.

Apple, in its myopic wisdom, has determined that updated products should not be shown at the top of the various product lists, so PGSME 2.21, despite having 50% more primary games than its MAS predecessor, PGSME 2.14, which itself helped make the initial Mac App Store launch successful, is not listed on the first (visible) page of ‘All Card Games’ (nor under ‘New and Noteworthy’ on the general ‘Games’ page).

I can understand and appreciate the concept of not automatically bumping up minor updates and bug fixes, thus encouraging spam-like behavior and regular submission of inconsequential changes, but when one of the launch day products adds 100 new games (plus another 10 bonus games), after being trouble free for 5 months, it seems genuinely unfair to penalize it with keeping its (now) almost bottom of the list position.  In fact, it is actually counterproductive, as it encourages us to bombard them with releases of “different” titles using our internal product names (GS200, GS300, GS350, GS400, etc.).  Apple needs to review this policy.

Fortunately, despite the lack of attention from Apple itself, our customers recognize the quality of our product and, somehow, have managed to find out about the new release.  Pretty Good Solitaire Mac Edition is (as I write this) back to #3 on the ‘Top Grossing’ chart in ‘Card Games’, so we have been voted onto the page anyway.

Nice.

Pretty Good Solitaire Mac Edition 2.2

May 4th, 2011

What is your profession? Fun! Fun! Fun!

After half a year in development, the latest version of Pretty Good Solitaire Mac Edition has been released by Goodsol Development this week.

300 solitaire games for Mac OS X

Pretty Good Solitaire Mac Edition 2.20 adds one hundred new solitaire games to the product, and also makes some significant interface improvements, including customizable game groups, to allow players to arrange games just the way they desire.  The 300 games in this title are joined by 50 bonus games (in the full version), to make PGSME the ultimate solitaire game for Mac OS X.

You can download a trial version of the product, or buy it for only $24.95!  (That is not even a dime per game for hours upon hours of relaxing enjoyment; where else could you get that much fun for less than 10 cents?)  This version is a free upgrade for all previous PGSME customers, and new customers will get free upgrades through the end of 2012, including PGSME 2.3 later this year.

In other news…

By popular request, our RSS feed has now been updated to display each article in its entirety.  (Thanks, Rich, and you are very welcome.)

Goodsol Solitaire 101 (and more)

March 12th, 2011

GS101 versions 2.04 and 2.05 are released.

101 favorite solitaire gamesGoodsol Solitaire 101 version 2.04 is now available for download on both Mac OS X and Windows, while version 2.05 is also available in the Mac App Store.  (The only differences between these two versions are minor restrictions imposed on the latter by Apple.)

Goodsol Solitaire 101 contains 101 of the most played solitaire games from Goodsol Development, including all of the favorites included in Most Popular Solitaire, plus 34 bonus games.  All of this can be purchased for only $19.95 (although quick readers may be able to catch a special introductory price on the Mac App Store).

Goodsol products on the Mac App Store

a dozen great FreeCell gamesThrough a fluke of timing and the whims of one Apple reviewer, FreeCell Plus 4.05 arrived on the Mac App Store last week, while the store version of Goodsol Solitaire 101 (submitted first) appeared just a few days ago.  However, the debuts of these two products are very encouraging.  All four of our playing card solitaire products have spent time in the Top 10, seemingly taking turns to share the spotlight.

As of this writing, all four of these solitaire titles are among the top 24 card games in the Mac App Store (3 in the top dozen):

Fortunately, FreeCell Plus has been camped in the ‘Top Paid’ chart since its release, usually among the top 3 card games.  Unfortunately, it is our least expensive (current) offering, which shows the downside of eliminating trial versions in favor of straight sales (and indicates that shareware still works).

Most Popular Solitaire 2.04/2.05

February 11th, 2011

Thirty (30) great solitaire games are ready for download.

Goodsol Development has released Most Popular Solitaire 2.04 for both Windows and Mac OS X.  This maintenance release fixes a rare bug and updates the title for 2011.

30 great solitaire games

Most Popular Solitaire is a collection of 30 of our best solitaire games, plus 13 more bonus game variants for registered users, all for only $16.95 (less than 40 cents per game).

This game is also available at the Mac App Store.

Now, Most Popular Solitaire 2.05 is available on the Mac App Store.  This version is functionally equivalent to MPS 2.04, but with minor alterations required by Apple (such as the removal of all download links).  However, it automatically includes ten (10) additional card sets for your immediate enjoyment.  (Card sets are also available for free download on both Mac OS X and Windows, and these work on all versions.)

As I write this, Most Popular Solitaire is currently ranked #7 in the ‘Card Games’ category, and rising, despite only becoming available hours ago.  If you are interested in getting a copy, now is the time to do so, as it is currently being offered at a special introductory price for a limited time only.  (I will not publish it here, but suffice it to say that it is substantially less than the price mentioned above, so act quickly.)