Demolish! Pairs 1.10 for iOS

An update to our premier arcade/puzzle game is available.

Digital Gamecraft has published Demolish! Pairs 1.10 on the App Store, where you can buy it for only $3.99 (US).  This is, of course, a free upgrade for all existing customers, downloadable from the ‘Updates’ tab on the App Store.

Demolish! Pairs 1.10 for iOSDownload and play Demolish! Pairs now!

Demolish! Pairs 1.10 is an upgrade that updates the program interface for iOS 7.x and adds 64-bit support.  For more information on the game, please visit DemolishPairs.com.

While supplies last, readers of this Gamecraft blog may receive a code for a free copy of the game simply by sending an email request to marketing@digitalgamecraft.com.

Please… Download and Enjoy!Demolish! Pairs on the iOS App Store

Debugging Windows 8.1

There is bug deep in the Windows 8.1 touch interface code.

Over the past couple of weeks, I spent quite a lot of time trying to debug an issue that was causing crashes in our programs under Windows 8.1 and which, ultimately, turned out to be a bug in the touch interface code of the operating system.  The problem was not with our code; in fact, our tight programming practices actually outed Microsoft’s failure.

To see how we got to that point, read on…

Symptoms

Late last year, we got a single report of a crash in Pretty Good MahJongg under Windows, occurring only when the touch screen was being used; playing the game with mouse and keyboard worked fine.  Crashes in Pretty Good MahJongg are extremely rare, and this had all the earmarks of a device driver problem, so it was given fairly low priority.  Additionally, we did not have the necessary hardware (at that time) to reproduce the error.  Then we got a second report, and we knew something was amiss.

The first two bug reports were nearly identical, and the obvious commonality (and difference from our systems) was that both machines were running Windows 8.1 and, obviously, had touchscreens.  We had tested our products under Windows 8 when it was released, but did not check Windows 8.1 nor using a touch interface (which, in an ideal world, should not crash programs in any event).  Something appeared to be happening with either Windows 8.1 or the touchscreen interface, or both.

Specifically, the error being reported, in all cases, was “Floating point underflow“, though that actual text for the error comes directly from our exception handler, not the system.

Diagnosis

Our products have a very good crash logging system, so when I got the crash dumps, I discovered that the crashes did not appear to happen in program code at all and, in fact, some of them showed only system routines in the stack dump, while others were essentially the same, but with our message loop (but no other program code) in the stack.

My immediate thought was that the problem could be a message collision, knowing that the touch interface added some new Windows messages.  This could mean that either a touch message was triggering program (e.g., animation) code at an unexpected time, perhaps prior to initialization, or vice versa, with a program message causing driver code to be executed improperly.  This could potentially explain both stack conditions, although I would expect to see our program code elsewhere, but that was never the case.

The bigger problem, at first, was that all of the PGMJ message processing code was identical to that in the Goodsol Solitaire Engine, which drives Goodsol Solitaire 101, Most Popular Solitaire, and FreeCell Plus, as well as the code in Action Solitaire, and that most of the message loop is actually contained in a common library shared by all of these products.  After initial confirmation that all reports were for PGMJ, this concern was finally resolved when crash reports began to escalate, and they expanded to include the whole range of products.  At least the new reports fulfilled my expectation.

Of course, to get to the bottom of the problem, I needed to be able to reproduce the error myself, so I ordered a Windows 8.1 tablet (Dell Venue 8 Pro) for testing.  Fortunately, this tablet displayed the error, and I was able to determine a little bit more about the issue.  The crash happened immediately upon the very first touch within the program, whether clicking a button or simply selecting an edit box, though navigating the program with the virtual keyboard worked…  that is, right up until the first (virtual mouse) touch. 🙁

I built a version of PGMJ that moved custom messages elsewhere in the numbering space, but that made no difference at all.  I tried a couple of other brute force experiments, but nothing altered the crash behavior one bit, so I set up remote debugging on the device and began to debug the program properly.  Unfortunately, the debugger saw the stack in exactly the same way as our exception handler, so every crash was deep in system code and if any program routine was in the stack, it was only the message loop.  Still, our program was definitely and consistently crashing, which meant something was different.  The one major advantage of proper debugging, though, is that I got full symbols, so I was able to determine that the actual crash was happening in ‘ninput.dll‘.  But why?

Here you may imagine days of various attempts at debugging the root cause of the crashes, including “handling” certain messages rather than calling DefWindowProc(), doing the opposite and not processing any messages, and setting breakpoints all over the place and, mostly, being disappointed at how few triggered.  I finally narrowed down the issue to happening from a DialogProc() function within the common library when the (new) WM_GESTURENOTIFY message was posted.  That message is the result of the default processing of a WM_GESTURE message, so presumably handling that in some way would prevent the crash.  No dice.  There is a strange documentation conflict when WM_GESTURENOTIFY is sent to a dialog box, since, “This message should always be bubbled up using the DefWindowProc function.”  However, regarding DialogProc, “Although the dialog box procedure is similar to a window procedure, it must not call the DefWindowProc function to process unwanted messages.”  This gave me a bit of a combinatorial problem, too, but nothing seemed to have any effect on the crash.

Finally, frustrated, I regressed to pure shotgunning of the problem.  I knew that not all programs crashed when touched under Windows 8.1, but (all of) ours consistently did, albeit not in our code.  I added an early message box to demonstrate crashing before any of the dialog boxes or other interface features were shown, and then I began removing pieces of the initialization code.  Voila!  The issue revealed itself!

After removing some of the very first initialization code, executed prior to almost anything else being done, and seemingly entirely unrelated to interface code, the crashes disappeared (though, of course, the program no longer worked).  Methodically reducing the amount of code removed, I was able to determine that the crashes were triggered (but not caused) by three simple lines of code in the exception handler initialization.

Problem

Ultimately, the crash problem was a result of the following C++ code:

    unsigned flags = _controlfp ( 0, 0 );
    flags &= ~( _EM_INVALID | _EM_DENORMAL | _EM_ZERODIVIDE | _EM_OVERFLOW | _EM_UNDERFLOW );
    (void)_controlfp ( flags, MCW_EM );

This, very simply, enables floating point exceptions within the program, including the (now problematic) _EM_UNDERFLOW exception.  The purpose was to provide maximum checking for errors in our code, which is usually so clean that it squeaks.  We never imagined that it would catch errors in a released operating system.  For reference, the above code has been shipping for more than 9 years, to many thousands of customers (and potential customers), and never had any problem before Windows 8.1 arrived.

To be perfectly clear, the actual bug is in Windows 8.1, specifically within ‘ninput.dll’.  There is an error in that module, creating a floating point underflow exception, compounded by reliance on a particular floating point state, namely that the hardware underflow exception is (and remains) disabled.  This is a flaw in the operating system, even though the default floating point state and, therefore, most programs do not display symptoms.

Solution

The actual solution, of course, is to remove the above code, which is a workaround to avoid triggering the crashes.  The tradeoff is that our programs will no longer be quite as robust in detecting floating point errors, but as stated above, this checking has been in place for almost a decade without finding any problems in our code, so it should be fairly safe to remove at this point.

Note that removing these three lines of code is actually more than needs to be done to resolve the immediate problem (i.e., the underflow error exception), but enabling the other exceptions still provides additional places for the operating system to fail, perhaps even further along in the same processing path.  The fundamental problem is that Microsoft counted on the default floating point state (and never tested otherwise) for its latest touch interface code, so it is safest for us to simply revert to using the default state as well.

Verification

It is not enough to simply come up with a solution; that solution must be verified.  We approached this issue in two different ways.

First, I built a new beta version of Pretty Good MahJongg with the above solution applied, and that version was provided to as many of the PGMJ customers who reported a problem as feasible.  Every single one (who reported back) confirmed that the crashes were gone.

Second, we bought a brand new Ultrabook laptop with a touchscreen for testing on a different device.  The laptop shipped with Windows 8 (not 8.1), so it was perfect for conducting our verification tests.

I installed the shipping version of PGMJ (Pretty Good MahJongg 2.41) using nothing but the touch interface, and everything worked fine.  We tested several games and had no problems at all (n.b., under Windows 8).  Then, I upgraded the laptop to Windows 8.1 and confirmed that the crash detailed above happened in exactly the same manner and place when using the touchscreen, but the game was perfectly playable with the mouse and keyboard (until one forgot and touched the screen 🙂 ).  Finally, I installed the beta version of PGMJ with the workaround, and everything worked again; in fact, this is a great way to play the game, especially for a title designed without touchscreens in mind.

Given that we verified the solution using two different and separate processes, we are confident that the issue is resolved.  Indeed, Pretty Good MahJongg 2.5 will be released on March 25, so look for it, still the very best tile matching games available for Windows.

For those who know some of my background, the score now stands as follows:
Gregg Seelhoff 3 – Microsoft 0

DGOlympics Postmortem

Our social media service provided some interesting data.

XXII Winter Olympic Games in Sochi, Russia

The XXII Winter Olympic Games (a.k.a., Sochi 2014) took place in Sochi, Russia on February 6-23, 2014.  Digital Gamecraft started covering the event via a special @DGOlympics Twitter account, and a new DGOlympics Facebook page, January 24.

Prior to the actual competition, we reported all manner of information about the upcoming events, schedules, venues, and athletes, and once events got started, we reported news and results for all 98 athletic events, in 15 disciplines within 7 primary sports.  We provided a totally free real-time service, on two platforms, with no advertising.

Twitter Service

On Twitter, we posted (necessarily) short factoids and results, including podium finishers for every single event, as well as qualifiers and/or standings (as appropriate) from earlier segments of the competition.  At the start of each competitive day, we posted a list of the medal events that day and highlighted other interesting events.  At the conclusion of competition each day, we posted medal rankings and counts for the top countries.

The format of the result posts was a sport/discipline tag (e.g., #bobsleigh) followed by the event within that discipline, including ‘Men’ or ‘Women’ as appropriate, and then the actual results or interesting facts.  We originally began using #men and #women hashtags, but clicking on either brought up a whole lot of irrelevant and inappropriate garbage, so we dropped that practice quickly.  We made a point of always mentioning the results for American athletes, usually tagged with #TeamUSA.

Shortly after we started posting results, we began to also send out congratulatory tweets to those athletes who earned medals and also had a Twitter account.

By the end of Sochi 2014, we had made almost 1500 tweets (since London 2012).

Facebook service

On Facebook, we posted essentially the same information as Twitter, but without the size constraints, we often included information from several related tweets in a single Facebook update.  For example, all of the upcoming events and highlights for a day were included in one update.  Also, some updates (including medal ranks/counts) provided a little more information (e.g., top 10 instead of top 5) than the similar tweets.

The format of the result posts was similar to Twitter as well, except that sport/discipline tags were included at the end of each post, rather than within a sentence, where the name was spelled out normally.  Results for a single event (or segment thereof) were often combined into a single update, but results from different events were always separate.

We posted hundreds of updates by the end of Sochi 2014.

Results

Beginning with just a few (<10) Twitter followers left over from London 2012, we simply worked on providing a quality service, without external marketing.  Throughout the course of the Winter Games, our following grew gradually and organically to nearly 40 (paltry).  The Facebook page was brand new, and with a single request to all of my friends, the number of ‘likes’ jumped to just short of 30 overnight, but it took the duration for it to grow to almost exactly the same number as Twitter followers.

As Sochi 2014 got started, our Facebook page passed 30 ‘likes’, which is a significant milestone, because at that level one gains access to Insights, which provides information about how many people see each post, the number of people “engaged”, and the total “reach” of your page.  This is where things started getting interesting.

Despite the measly ‘like’ (and ‘followers’) counts, posts were clearly being seen and read far more widely.  Our total engagement numbers were higher than the total number of ‘likes’ on the page, and our reach was in the thousands each week.  Individual posts varied widely, but some got hundreds of views each (without being ostensibly shared), far beyond expectations with fewer than 40 ‘likes’.  On the Twitter side, with no similar analytics, we could still see similar behaviors, when results were often retweeted within minutes of posting, and almost always by somebody who did not follow us.

Though our hopes were to gain more Twitter followers, our tweets congratulating athletes did get some responses, in the form of favorites and retweets, as well as at least one non-athlete Twit who wanted to argue the validity of an official result.  Here is our shout out to the athletes who took the time to acknowledge our tweets:

The sheer number of hours (more than 200) spent compiling information, monitoring the events, and reporting results was astounding, and completely exhausting.  When the Closing Ceremony began, we were more than ready to post the final tallies and be done with the Olympics for 2 more years (at least 🙂 ).

Conclusions

First, the number of ‘likes’ on Facebook and the number of followers on Twitter do not tell the entire story.  We were clearly reaching many times that number of people.

Second, providing a purely informational resource, free of charge, is not enough to fully engage an audience.  We probably needed more cats and misspelled “meme” images.

Third, a comprehensive information resource like the one we provided seems to lose interest over time.  Whether it was Olympic weariness or something more general, our “reach” numbers peaked after about a week and a half, and then slowly declined (although they remained in the low thousands).

Fourth, a concentrated social media resource requires a major commitment of time which, in this instance, is in no way justified by the results.  I, personally, am not sure that I am willing to commit to this again for Rio 2016.

Fifth, even after providing loads of information for weeks, people on social media are apparently still jaded against marketing messages.  Our penultimate Facebook update, which ended with “Please note that DGOlympics has been brought to you by Digital Gamecraft, developer of Demolish! Pairs, http://demolishpairs.com/“, got the fewest views of any post during the entirety of this experiment, by a factor of 2.

Comments

Please share your tricks (and failures) about dealing with social media in the comments.

2014: Full Speed Ahead

The new year has gotten off to a snow start, though.

For us here at SophSoft, Incorporated and Digital Gamecraft, 2014 is starting a little bit later than originally scheduled.  We took our usual couple of weeks off at the turn of the year, but the weather decided to insert itself into our plans.  On the first full day of our break, we were hit by a serious ice storm, and although we were very lucky to be mostly unaffected by the power outages, our immediate neighbors were without electricity until New Years Eve.  Fortunately, they were back online just in time to watch the Michigan State University Spartans win the Rose Bowl!

On the first day “back” from the break, we received more than 18 inches of snow, which essentially shut down all of East Lansing and surrounding communities for a couple of days.  Although we could still get development work done, the first priority was digging out, and that took many hours of physical effort, so it was not easy to just jump right back onto the project schedule.  On top of that, we received several pieces of personal news, both bad and good, so it was an emotional week, too.   (Personally, I managed to get sick in the midst of all of this, from which illness I am still recovering.)

Nevertheless, despite the slow ramp up, we are now approaching full speed ahead with game development in 2014.  We added some newer development systems to assist with our desktop and mobile development, so now we have a state-of-the-art environment for creating games for Windows (up to 8.1), Mac OS X (through Mavericks), Linux (Ubuntu), iOS, Android, Windows Phone, HTML 5, Silverlight, Flash, Xbox 360, OUYA, and more.  If anybody needs to contract some programming talent, you can contact me here.

The 2014 Winter Olympic Games in Sochi (Russia) are just three weeks away, and we expect to have unprecedented coverage, both through our @DGOlympics twitter feed, where we will again provide results for all events (as we did for the London Summer Olympics in 2012), as well as through a new (broader) game site that we plan to announce shortly.  If you have any interest in the Olympic Games, please follow us at @DGOlympics and spread the word.

On the Solitaire front, our top priority is finishing the substantial rebuild of Pretty Good Solitaire Mac Edition and the other Goodsol Solitaire Engine games.  While we have, unquestionably, the best technical platform (and the most games) for the Mac, we are revisiting the interface to make it even more fun to play.  Of course, we are also planning to add many more new games in our relentless march toward 1000. 🙂

We have a new iOS upgrade for Demolish! Pairs (and later, Demolish! Pairs FTP) in the works.  We are adding (at least) one new play mode, by popular request, and several other new features.  (The exact list of features will be determined based on scheduling considerations.)  Of course, you can buy Demolish! Pairs on the App Store now and get the upgrade for free when it is released.

There are currently three more major projects in design and development, but I will announce each of those here at an appropriate (later 🙂 ) time.  Additionally, there are always a number of maintenance projects which, at this point, include changes to our iOS games mandated by Apple to be “optimized for iOS 7”, modifications to most of our Windows games to properly handle touch interface changes made in Windows 8.1, and of course, everything can use a fresh coat of virtual paint for 2014.

Rather than spend any more time typing about this, I should get back to actual development work, as 2014 is looking to be our most exciting year yet!

2013: Year in Review

Overall Performance Grade: B

Digital Gamecraft / SophSoft, IncorporatedAs the number of hours left in 2013 dwindles down to minutes, it is a good time to look back on the past year and do an honest performance review for the work we have done at Digital Gamecraft and SophSoft, Incorporated.

Major Events

#10: Lack of Ideas?  Really?

We created a roadmap of our upcoming development projects, which list “contains 30 games, in 6 different genres, spanning approximately one dozen platforms, plus a productivity application and an information web site.”  Toward the end of the year, we also did a reevaluation of our company purpose, vision, and mission, confirming our goals and how each of the above products help fulfill them.

#9: iOS Development

We finally released our first iOS titles this year, and once we started on the new platform, we shiped 12 SKUs for iOS (7 titles and 5 updates).

#8: Goodsol Solitaire 101 Touch Edition 1.0 / GSCITE 1.10

We released the initial iOS version of this collection of 101 favorite Solitaire games (plus 34 bonus games) on June 3, and we released a significant update on September 27.

#7: Most Popular Solitaire Touch Edition 1.0 / MPSTE 1.10

We released the initial iOS version of this collection of 30 most popular Solitaire games (plus 13 bonus games) on April 25, with a significant update on August 14.

#6: FreeCell Plus Touch Edition 1.0 / FCPTE 1.10

We released the initial iOS version of this collection of 8 FreeCell type Solitaire games (with 4 bonus games) on April 2, and a significant update on July 31.

#5: Pretty Good Solitaire Mac Edition 2.50

We released this update to the premier Solitaire program for Mac OS X, bringing the total to 500 games, after two previous updates, PGSME 2.42 (420 games) and PGSME 2.44 (440 games), earlier in the year; we also launched a major upgrade project to make the next version of PGSME, due fairly soon, even better.

#4: Pretty Good Solitaire Touch Edition 1.0 / PGSTE 1.10

We released the initial iOS version of our flagship Solitaire product with 500 games, the biggest Solitaire package available for iPad, on July 16, and then followed that up with a significant update on October 22, with 520 games (plus 72 bonus games).  We also refined our upgrade development process for this title.

#3: A Little Solitaire Touch Edition 1.0 / ALSTE 1.10

We released the very first version of this collection of 9 Klondike, FreeCell, and Spider Solitaire games, for iPad, on March 22, and published a significant update on July 26.  This was a major event not only because it was our first ever iOS game, but also because, on March 27, it became the #1 card game in the App Store.

#2: Demolish! Pairs FTP 1.0.1 for iPad

We released a free-to-play version of our arcade/puzzle game, Demolish! Pairs, on November 6.  This was the second SKU from Digital Gamecraft, and our very first venture into the “free” section of the App Store (with decidedly mixed results).

#1: Demolish! Pairs 1.0 for iOS

On June 18, we released Demolish! Pairs 1.0, our puzzle/arcade game for iOS, thereby reentering the self-publishing arena.  It was the first title published by Digital Gamecraft, and the last to contain fully custom artwork (and sounds) from our late artist, Rick Tumanis.  Although it was not the runaway success that it should have been, it provided a positive first step and, along with Demolish! Pairs FTP, gave us some very useful information about the iOS market.

What Went Right

Digital Gamecraft has remained a full-time independent game development company for (now) the 19th consecutive full year (stretching back into 1994, as Sophisticated Software Systems); this alone is a significant accomplishment.

Our product development continued apace, as did our strong affiliation with Goodsol Development, resulting in 15 SKUs released in 12 months.  We firmly established ourselves on the iOS platform, and Digital Gamecraft has published its own titles.

What Went Wrong

The video game industry, as a whole, is in a period of crisis, even though some “evangelists” continue to preach the opposite.  Continuing to survive in this depressed climate is a true challenge (though we strive to thrive).

We have seen falling sales and reduced revenues, and our entry into the iOS market with products on the App Store has done little to stem the negative trend.  In fact, it distracted us somewhat from Windows and Mac development, where the sales are slowing, but which are still a better investment than mobile platforms (for now).  Our experiments in free-to-play marketing suggest that it is not a general solution.

Final Evaluation

On balance, I awarded a grade of B (again) for overall performance in 2013.  My initial inclination was to grade our efforts as a C+, but when I looked back on what actually happened in the year, we met most of our development goals.  Digital Gamecraft released its first two games, and we broke into the iOS market with numerous titles.  Although reduced income does cast a pall over the year (and my mood), I determined that it should not count against our productivity grade.

That said, though, things will clearly need to improve in 2014, and we have already taken steps to achieve that, but this is a discussion for another post. 🙂

OUYA at First Glance

This inexpensive console has some real merit.

OUYALast week, as I was continuing to learn Android development, I was finally nudged into looking into the new OUYA console.  For those unfamiliar, the OUYA is an Android-based gaming console that sells for less than $100.  It got its start with a hugely successful Kickstarter campaign and, while it is not intended to compete with the PS4 and XBone launches, it is a legitimate player in the console market.

The reason that we considered the OUYA is that it is designed from the outset for open development, which makes it accessible not only for established indie developers like Digital Gamecraft, but also for anybody with an interest and just a little ability, and those who actually produce marketable games can find their titles listed right alongside AAA developers.  The unique thing about OUYA games is that all of them are free to try (so it is, in essence, a shareware console).

Acknowledging that it was a tiny investment, not to mention cheaper than most Android tablets or phones, we made our order on the spur of the moment, and 3 days later our OUYA arrived at the doorstep:

OUYA boxOf course, December is winter here in Michigan, which means that I had to wait a few hours for the electronics to come slowly up to room temperature.  During the wait, I contemplated how I had heard various complaints about the OUYA, but thus far, everything was very professional, exceeding my expectations.  Meanwhile, the contents of the box just sat on my auxiliary desk in anticipation:

OUYA package contents

The first thing that surprised me was how small the console itself was; it literally fits in ones hand, and it is smaller than the controller in two of three dimensions.  I was also surprised, and delighted, to find that the box included an HDMI cable, a very nice touch that is usually overlooked (cynically: deliberately left out to make more retail profits).  Indeed, if one counted the retail prices of the controller, HDMI cable, and batteries, the console itself was quite inexpensive indeed. 🙂

Finally, the time came to set everything up, and I ran into my first issue.  Therefore, I will start with the (few) cons that I experienced.  The OUYA is a bit short on traditional documentation, so there is nothing explaining how to install the batteries in the console!  I challenged our local console expert, and he was unable to figure it out, either.  (A Google search reveals that we were hardly unique in our confusion.)  Also, after a bit of use, it becomes clear that the OUYA has no ventilation to speak of, so it becomes a rather effective hand warmer in a chilly office, but this will likely be a liability in summer.  Returning to the initial complaint, it turns out that the black area in the middle of the controller is a touch pad (!), which fact I did not discover on my own.

On the other hand, there were more important pros.  The installation process, including the downloading of a system update right away, was embarrassingly simple, especially when compared to the PS3, as well as humorous (even in the license agreement).  The display is extremely clear, even on my poor 720p office/development television.  The whole interface is straightforward and easy to understand, and the purchase process is just about as painless as it could possibly be.  The controller (contrary to some opinions) is solid and comfortable to use, and, of course, this whole system was inexpensive.

The available game software is certainly the most fundamental aspect of a console, and unsurprisingly, this is a bit of a mixed bag, at least in my limited experience (so far).  You have top games, such The Cave (currently #1), which delivers everything that one would expect, and others, like Amazing Frog? The Hopping Dead (#3), which seems to have come up a few weeks short of prime time.  I really wanted Pinball Arcade to be as good as their attention to detail, but alas, the delay between clicking a controller button and the flipper reaction makes the game totally unplayable.  Conversely, and promisingly, the OUYA version of Galaxoid, by lone developer Jacob Davis, is loads of fun (for just a few bucks).  This variety makes the ability to try games that much more valuable.

The next step is development.  Though I spent a little time playing with the OUYA as a consumer would, I have been too busy with paying work to install the ODK (OUYA Development Kit) and build anything for this new console.  You can be sure that I will post more about the OUYA after that happens.

Curmudgeon Day 2013

Stay home, stay safe, and do what you wish.

Stay Home.  Do What You Want.This is the tenth year I have written on this blog about Curmudgeon Day, the Friday after (US) Thanksgiving Day which is traditionally observed by refusing to leave the house, instead staying home and doing whatever activity you choose.  The day has been recognized for decades, and others have tried to misappropriate it, especially recently, attempting to rename it and twist it to their wicked ends.  Nevertheless, I remained committed to the original intent and observe faithfully.

Click here for more information on Curmudgeon Day.

Alas, I awoke this particular Curmudgeon Day with a headache, probably due to too much poor television before bed time, but that problem is resolving itself now.  This post is the first significant thing I am doing today (after sleeping in), though I did some design for a project that is near and dear to my heart at the technical start of the holiday (before going to bed), and I plan to revise the design more and then work on implementation.  Since I actually under-ate yesterday, I am looking forward to lots of very tasty leftovers, too.

If you support the idea of Curmudgeon Day, please like our Facebook page.

Our local NPR station just referred to today with the words “traditional holiday” and then, in dishonor of those who are shopping, played the ominous Night on Bald Mountain, by Modest Mussorgsky. 🙂

A Dozen Days of Disappointment

Results show few opportunities for optimism.

When I wrote an earlier blog post, FTP: Early Results, I stated that it was too early to draw any conclusions from the very early data from Demolish! Pairs FTP.  However, now that we have almost two weeks of data from Demolish! Pairs FTP on the App Store, the results are beginning to look more conclusive.

Day-to-Day Play-by-Play

Here is a rundown of the basic results since the app has been available:

Day 1: [baseline]

As previously reported, the first full day of downloads was Thursday, November 7, 2013, which provided more downloads, from 24 different countries, than we had sales of the “paid” version, Demolish! Pairs; therefore, I will use that number as the baseline figure for downloads (i.e., 100%) and all other percentages are relative to this figure.

Day 2:

On the second day, we did not do any additional marketing in order to determine the approximate natural fall off.  The icon was no longer visible on either of the game category pages (and certainly not on the main game page).  Downloads were at 72%.

Day 3:

We announced the release (again) on the Digital Gamecraft page on Facebook, this time using ‘Boost Post’ to promote the message to two countries, the United States (our biggest market) and Australia (an unrepresented English-speaking market).  For $51.69, we “reached” 30848 Facebook users.  Downloads: 64% (none from Australia)

Day 4:

We stopped the Facebook post promotion and allowed for residual effects to accrue, which they did by virtue of Australian downloads outpacing US by one.  Downloads: 37%

Day 5:

This time, we tried a targeted Facebook ad, selecting for puzzle game players, in (6) English-speaking countries, who used iPads.  (Oddly, I could not find a way to target only mobile users, so some views would be on desktop systems. 🙁 )  Facebook reports our total reach to be 50541 (about 3% of the selected audience).  Downloads: 20%

Day 6:

After stopping this latest Facebook ad, there was an unexplained “blip” in the results, which could have been a residual effect.  Downloads: 27%

Day 7:

With the slight increase in downloads on Day 6 (and, frankly, with other priority tasks), we decided to wait another day to see if the upward trend would hold.  Unfortunately, downloads plummeted to the worst level yet:  Downloads: 4%

Days 8 through 12:

Risking “zombification”, we left the game alone to simply observe.  It continues to draw low levels of daily activity.  Downloads: 4%, 3%, 6%, 4%, 2%

Three Strikes

Clearly, the download figures were destined to drop toward a minimal level, with the Facebook marketing making no discernible difference.  However, there are three worse facts that make a big difference here.

First, although the number of iAd requests climbs steadily, the number of ad impressions is phenomenally low (as the fill rate remains below 3%), so advertising revenue is essentially non-existent; it has not yet eclipsed the $1 mark (total).

Second, despite the number of downloads, nobody has purchased any IAP product at all.  The game is being played, as shown by the iAd requests, but the conversion rate is 0.0% as everybody plays only for free.

Third, the existence of a free-to-play version has cannibalized “paid” sales.  Not only is nobody paying for any IAP, but sales of the original edition dropped to zero when the FTP edition was released, and it has not sold a single unit since.

Conclusions

Although I still have some things to try yet, my recommendation to anybody considering the mobile games market is not to waste any time on it.  In fact, I would suggest that anybody who is looking to begin a career in game development right now strongly consider a different line of work entirely.

Note: This is blog post number 405, which is the HTTP status code for “Method Not Allowed“.  Coincidence?  You decide.

FTP Design Thwarted

Problems with our free-to-play design emerged.

As we analyze the results of Demolish! Pairs FTP, the free-to-play edition of our fun arcade/puzzle game, Demolish! Pairs, this is good time to review the basic design of the IAP (In-App Purchase) products and other options we provide for continuing play.

The Original Design

The first complete plan included the following four IAP products:

  • Golden Ticket  [$3.99] – This product permanently removes all game restrictions and all advertising, providing the same unlimited experience as the “paid” version.
  • Silver Pass  [$2.99] – This product permanently removes all game restrictions (but leaves the advertising in place).
  • Express Pass  [$1.99] – This product permanently removes all advertising (but leaves the game restrictions in place).
  • Two Day Pass  [$0.99] – This product would offer a 48-hour subscription, or a 48-hour extension to a subscription, with no limits or ads.

As we considered the various views that might be necessary to provide notifications of game limits, as well as how we would offer products to eliminate ads, it became clear that one unified store view, which doubles as a notification message, would serve the purpose nicely.  (We plan to refine this idea further.)

Additionally, we added the idea of a button to extend play, for free, which can only be used once each 12 hours.  In practice, we implemented the countdown timer to only begin at the next restriction notification, to make the idea of “appointment” gaming work for us more clearly.  We also limited the extension to the current game (for each player).

The First Hurdle

In an earlier post, Free-to-Play Take 1: Rejected, I documented the initial rejection of Demolish! Pairs FTP due to the fact that the 48-hour subscription was against App Store guidelines, which require all subscriptions to be at least one week.

The original IAP was designed together, as a unit, so each of the buttons would function in conjunction with the others to create the desired “menu” of offerings.  The most expensive (read: still really inexpensive) option was deliberately the same price as the original (“paid”) edition.  The crucial part was to have a cheap option, at only 99 cents, which provided some value, and then another option at each pricing tier.  Once a player commits (mentally) to spending (less than) a dollar, it is only another buck to reach another level of value, and again and again, up to having it all for only $4.  A customer can purchase a middle level of value (Silver Pass or Express Pass) and then, later, obtain the equivalent of a Golden Ticket by purchasing the other one, but the ultimate price difference ($0.99) is the incentive to go for it all at once.

When the lowest tier caused rejection of the game, we quickly removed it, accepting that this destroyed the carefully considered equilibrium of the menu of purchase options.  Also, because of simple mathematics, we could not drop prices and make it work correctly.  We have now designed a replacement (non-subscription) product to provide that least expensive option, though that will take a little more implementation time.

The iAd Problem

As mentioned my last post, FTP: Early Results, the only thing that was absolutely wrong was that iAd had not started serving any ads, so that completely messed up the IAP design.  The Express Pass was pointless, and even looked like some kind of idiocy, because there were no ads to remove in the first place.  On top of that, of course, that also relegated the Golden Ticket to the same value as the Silver Pass, so essentially our whole menu of IAP products had been reduced to merely one logical choice.

Two or three hours after I posted that article, iAd suddenly began serving some ads.  I actually discovered it while playing the game on my iPad just for fun and, unexpectedly, getting an advertisement for Small Business Saturday, after which I was able to confirm a handful of ad impressions (for thousands of requests).  I had never been so excited to see an online ad, and it briefly looked better.

Unfortunately, though ads are being served occasionally, the fill rate is still far below 4% (i.e., 1 ad for every 25 requests), which is almost worse.  Now, the very irregular ad appearances make them almost novel, so there is no real incentive for an Express Pass (nor for choosing a Golden Ticket over a Silver Pass), and there is no indication that the fill rate is going to improve substantially.  As an unexpected twist, most of the few ads that do show up look fine and unobtrusive; in fact, the blue and gold of the most common banner, from Progressive Insurance, almost matches our menu color scheme exactly.

The Next Step

Our next step will be analyzing customer behaviors to see if we can glean any useful information from the limited number of downloads so far.  We have a custom analytics package (that I developed) built into the app but we were waiting to see how the initial release progressed before “flipping the switch” to begin actual reporting.  It now seems fairly clear that our server will not be overwhelmed…

FTP: Early Results

In a word: Inauspicious. 🙁

On Wednesday, Demolish! Pairs FTP was released on the App Store.  Here are the initial results for this launch, keeping in mind that, so far, it has been fairly low key to remain in line with the initial launch of Demolish! Pairs to allow a comparison between “paid” and “free-to-play” editions.

Day 0: partial day

The app was first available on the (US) App Store shortly after 5:00pm EST, and it became searchable/discoverable about a hour later.  Therefore, the results, which are reported around 7:00am the next morning, represent only a partial day.  I am not sure when a “day” actually ends in Apple-land, but I assume it is around midnight in the Pacific time zone (3:00am here), so this data probably represents about a third of a full day.  Also, this also means that the release only hit part of the globe in prime app time.

That last part proved particularly true, as all downloads for the first (partial) day were from only two countries, the United States and Mexico.  Interestingly, and disappointingly, when compared to first day sales of the “paid” edition (at $1.99 each), free downloads only exceeded this figure by ONE.  This is, of course, an apple and oranges comparison, but I still would have expected more downloads.

One primary reason for the low download count was the huge number of “free” releases every day (even relative to paid submissions), so while Demolish! Pairs FTP was on the category front pages, it was beyond the “fold”, so users would have to scroll right to even see the icon.  I also discovered that, unfairly, the free releases are not put in chronological order, but alphabetical order, so beginning with D put us off the visible part of the main page, and the poor bastards whose apps start with I through Z never have them appear on the front page at all.  This meant that, while the “paid” version had a couple of days visible on the main category page, the FTP edition never had that at all, and partway through day 1, it was swept off the page entirely by the next group of freebees.

Day 1: first full day

As stated, day 1 (Thursday) was the first full day of downloads, and things looked a little bit better.  The first indication, via hourly iAd updates, was that the number of countries requesting ads went up significantly throughout the day.  When the final results came in, there were downloads from 24 countries, which exactly matched the iAd country count (though, oddly, iAd also had a few “unknown” requests).

In sheer numbers, downloads for the second (first full) day were up 544%, which was more than double the expectations if day 0 were 8 hours (and downloads were level), so the trend is positive.  Also positive (I guess 🙂 ) is that the number of day 1 downloads exceeded total (lifetime) purchases of the “paid” version, which means that our free-to-play edition is now in more hands than the original (and, as iAd shows us, almost all of them have been played, not merely downloaded).

Now the Bad News: I have not mentioned IAP sales because, thus far, they equal precisely $0.00, so our game is being played more, but nobody has paid us anything.  Of course, some of the incentives may take a while to work, so I am not jumping to conclusions yet.  Not at all unrelated (as a causal factor) is the fact that iAd has received thousands of ad requests yet has served exactly 0 ads.  None.  Nada.  Not one.  I have lots of strong words and strong feelings about this, but I will compose them (and myself) in my next post.

Conclusion

It is actually far too early for any conclusions (except that the iAd 0.00% fill rate is a major problem), but the data is enough to decide to delay the next marketing step for at least one more day, to see what kind of falloff we get for a full day with Demolish! Pairs FTP not on the front pages of each category.  After that, experimentation continues!

For the scientifically-minded of you, please do not worry about skewing our data, and just download Demolish! Pairs FTP from the App Store already. 🙂