Action Solitaire 1.12

This is our second product release of 2007, with more to come.

On Monday, Goodsol Development released Action Solitaire 1.12, an update to our arcade-style solitaire title. This version actually consolidates two different upgrades into one (which explains why there is no public version 1.11). Neither set of changes adds any new games, but there are still 52 styles of games, fifty-two being a good card game number. A 30-day evaluation version is available for download here.

The first set of changes to the product updated the internal help and marketing screens to use a different style, in line with the new look of the Action Solitaire web site. We also added an exit screen to encourage purchases, as well as some addition limitations on evaluations. These changes are all in line with previous updates to Pretty Good MahJongg (version 2.3) and Most Popular Solitaire. Action Solitaire was selected as the next update out door because it had not been updated since 2005.

The other group of changes for this release were the updates to add full Windows Vista compatibility, as with Pretty Good Solitaire 11.0.1 and two more upcoming product upgrades. This includes a beautiful new Vista icon, courtesy of artist Rick Tumanis, and a new HTML help file. To view some images, and get a little more information, see the recent post on Thomas Warfield‘s blog, A Shareware Life.

Of course, even after testing, very few releases go perfectly smoothly, and this one was not an exception. When I did the final quality assurance check, it turns out that the installer was not properly creating a user desktop icon, but was instead only creating a desktop icon for the administration account used for the install, yet another repercussion of the new Vista UAC (User Account Control) system. It took some tedious back and forth to get a properly working installer, but everything worked out fine in the end. There will almost certainly be a more detailed blog entry soon about this particular issue.

FireFixed

This Gamecraft blog now works with Mozilla Firefox.

Over the last couple of days, I received three reports (see recent blog comments) indicating that this site did not work correctly in Mozilla Firefox. The problem, correctly identified by readers, was that the mime type was not set properly at the server (“application/octet-stream” instead of “text/html”). This problem did not appear in Internet Explorer (nor Safari, as far as I can recall), so I had never noticed the issue. Since nothing here changed recently, I am not sure why this was never reported before, but that is beside the point.

Part of the problem is with Blogger, which does not use any file extensions on HTML files published on a remote server, except for the index page (which I probably specified myself with the .HTML extension). Therefore, the default page worked fine, but all links to other pages failed (in Firefox). I personally try to avoid having any files without file extensions, but this is not exactly an error.

The more significant problem was on the server end. It took me quite a while to find the source issue, after several unsuccessful tries with the mime configuration interface. Finally, I discovered a Microsoft Knowledge Base article entitled, Files without Extensions are Mapped to Application/Octet-Stream, which described the problem exactly. Under ‘SYMPTOMS’, this article says, “There is no way to change this behavior in the user interface.” I noted with interest that the entirety of the ‘STATUS’ section reads, “This is by design.”

Anyway, the steps in the article, although slightly inaccurate, provided a successful solution, so this Gamecraft blog now displays correctly in Firefox. I installed version 2.0.0.1 to verify the problem (always the first step in any diagnostic session), and after making the change and clearing the browser cache, everything seems to work properly now. Additionally, I now have the latest version of Firefox installed and ready for testing my other sites as they get updated (though I know that our SophSoft site works now).

I will take this incident to indicate that Mozilla Firefox is now officially a major player in the browser market, and it again emphasizes the importance of proper testing.

Busy times

It has been a very busy few days around here.

Since last Friday, it seems that I have not been able to slow down. There has been a whirlwind of activity here, including lots of development and testing, as well as some personal time that did not involve relaxation.

On the development end, we shipped four and a half products in a 27 hour period from Friday through Saturday evening. The impending general availability of Windows Vista has required several product updates. Individually, these are not loads of work, but when one piles several together, multiplies the effort by 4.5, and completes them in just over a day, there is definitely something of a camera blur. Granted two of the updates were for the same title, one a scheduled marketing upgrade that had been in development for a while and the other the Vista compatibility update, but it was still an accomplishment.

Half of a product, though? It turns out that as we shipped one of the “final” release updates for a title, we inadvertently cross-shipped with a specifications change. We had to make an update to the update before it ever got prepared for public release. The change was a protection improvement that took little effort, but required the full deliverable preparation again. Imagine that we figured out a way to feed the voltage from a computer power supply back through the mouse of any thief who enters an illegal registration code, giving the crook a very nasty shock. (ObLegal: This is a joke, stemming from my frustration at having our intellectual property, and my livelihood stolen. Even if this method were possible, which it absolutely is not, we would still never use such a thing.)

After the flurry of deliverables, my attention turned to a different type of flurries, the snow variety. Winter finally set in here, when it looked like it had forgotten us this year, so it looks like we will actually have an ice racing season in 2007. Therefore, I made arrangements to go pick up my new ice racing car, although it is funny to call a 16 year old beater, with no interior, that one can buy for a couple hundred bucks “new“. I had quite an adventure, including a roadside battery change at well below freezing temperatures and a brake failure in city traffic, but ultimately made it home safely and, importantly, ready to race.

Monday brought more testing, as one of the titles (and I will leave it to you to guess which one) was being prepared for final release. The first installer candidate failed to install properly under a limited user account on Vista, so we spent a few hours going back and forth, testing different installations until we had one working exactly as intended. Trust me, I am getting very tired of Vista right about now. Fortunately, there was no major drama, and we finished in time for my previously scheduled activity.

The personal activity for yesterday evening was another taping of QuizBusters. This time it was my son competing for East Lansing High School, one of four starters, in the division quarterfinals. They were matched against cross-town rival, Okemos, which was one of very few local teams that has beaten them in quizbowl league play this year. It looked likely to be a close match, so it was very exciting, but not relaxing.

[BEGIN SPOILER]
My prediction for a close game was not realized, however, as East Lansing tripled up Okemos by a score of 630-210. It was a truly phenomenal game between two great teams, though, as there were only a handful of wrong answers given during the entire contest. There has not been official confirmation, but it is believed that a combined score of 840 is the highest in 17 years of QuizBusters competition. My son was quite proud that he “powered” an answer off of the clue “Feathers McGraw in Wallace & Gromit in the Wrong Trousers“: Penguin.
[END SPOILER]

It looks like the frantic activity is destined to come to an end today, though, as it feels that I am starting to get a migraine as I am finishing this post, and migraines are never conducive to productivity.

Activation sucks

Just when I thought Vista was actually working, it quit.

Fast forward through a few days of development on Window XP, blissfully unconcerned with Windows Vista for the moment. Having resolved the critical issues with Vista, I was able to wait until it was convenient for me to pick up extra hardware at the local computer store. See, I realized that it would probably be more efficient (and flexible for the future) if, instead of tearing into this system to replace the still functional (under anything except Vista) network card, I would simply pick up a USB wireless network card. So I did. (A fortunate byproduct of this is access to a second, faster, network from my development machine when and if I choose to use that capability.)

There I was, USB network adapter in hand, ready to finally get this Vista system connected. In the back of my mind, I was aware that I could also get rid of the activation reminder once that was done. That thought quickly came to the forefront, though, when Vista refused to start. Apparently, leaving the Vista system unplugged while obtaining the necessary hardware was not sufficient, and Vista wanted attention NOW!

I was greeted with a message (which I failed to document) that oh-so-helpfully gave me a few options, such as the ability register online (“I would love to, thanks”) or, if that was not working, a link to help… online, of course. Vista penalizes me for its inability to recognize my network card, and then there is no option that would allow me to install the new hardware in order to comply. After a fruitless search for the ‘Hey, this is your fault, Vista’ button, I had no choice (short of reinstalling Vista) but to call Microsoft.

To be perfectly fair, the telephone registration process is not as onerous as one might expect, and it is totally automated, but having to read (not type) numbers into the phone, one at a time, and then listen for a couple dozen digits coming back, while being required to respond “Yes” after every group of four, does get very tedious very fast. I am certain that any people monitoring the calls are likely to hear a whole range of creative expletives, including one or two stemming from my frustration. In the end, though, it only took five or ten minutes to complete the activation process this way.

Microsoft, unfortunately, left a rather obnoxious bug in Vista. As soon as one is warned that the operating system needs to be activated immediately (the next step from an almost ignorable balloon), Vista tattoos ones desktop bitmap with the friendly message, “This copy of Windows is not genuine“. Liar! This copy is genuine, merely unactivated. However, after activation, this message remains for the duration, until one turns off the machine, even though the copy of Windows is genuine and properly activated. Better still, Vista hides the option for actually shutting down a system, prolonging the farcical message.

My opportunity for being upset at Microsoft soon closed, as the next Vista surprise was served courtesy Creative Labs. Remember the beta sound drivers that I had to install (you know, in my last blog post)? Well, these expired, too, with a nice blunt error dialog and, of course, no sound. No warning, either. I figured that this was just par for the course, and that I could solve everything with my trusty USB network adapter.

Guess what happened next. You probably guessed incorrectly, as my new NETGEAR USB SuperG wireless 802.11g network adapter worked perfectly. There were no problems, very unlike similar products I have purchased in the past from a company whose name starts with BEL and ends with KIN. It took a little Vista familiarization to figure out how (or, rather, where) to select a network, and then how to make that selection automatic, but with a minimal amount of work to allow the adapter access to the router, thanks to the MAC address being shown on a sticker right on its side, I was up and running.

OK, with a smooth installation under my belt and a nearly working copy of Windows Vista Ultimate at my disposal (having accepted that the dualing video cards would not peacefully cohabitate), I set out to regain my audio. I exercised my base vocabulary again when I found that the Creative Labs web site had creatively gone AWOL at a time when all of the beta drivers had stopped working, too. This downtime continued for long enough (read: hours) that I was able to clean my office, the supplies cabinet, and the closet, where I finally found the original driver disk from a few years ago. Thankfully, the old installer functioned fine, albeit with UAC going ape throughout, and my sound returned.

I had a fully working Vista system! All that was left was a full test of all major functionality, including game saving and online high score/statistics reporting, of Pretty Good Solitaire, Pretty Good MahJongg, Action Solitaire, and Most Popular Solitaire. All passed the tests with flying colors, needing only the improvements already identified (such as new icons and HTML help files). There were no major gotchas. Whew!

One final discovery as I shut down the Vista system for a while: Not only did the NETGEAR wireless adapter work perfectly, but it also made a nice hand warmer as the winter air settles in (though that may not be a good thing).

Windows Vista Ultimate installed

After some frustration, I finally managed to wrangle Vista.

My previous post was a horrific tale of trying to take things cautiously and it winding up being a huge waste of time. However, I needed to have Windows Vista installed and running the new Aero glass theme. What I did not mention is that I had to take the occasional break to cool off, and I spent some of this time installing Vista in Virtual PC on my development system. I felt (correctly) that I had no real chance of getting Aero there, but there was a significant period of time during which the operating system got further in Virtual PC than on its own system and hard drive. This told me that Vista would work, but something was misconfigured.

Without going into too many details, suffice it to say that I figured out that the problem was with ACPI (Advanced Configuration and Power Interface) support. For those not familiar with ACPI, it is the way that Windows can turn off a computer without somebody pressing the power button, or that two expansion boards can fight over the same hardware resources and both fail to work properly, although the latter is not exactly the phrasing that Intel uses in the specification.

Anyway, it turns out that Windows Vista requires ACPI, which this test system fully supports. However, for the purposes of diagnosing a hardware problem, Windows 2000 had been installed with ACPI deliberately disabled. (This is something that cannot be changed in Windows without a new system kernel.) The XP upgrade helpfully installed its non-ACPI kernel, and then Vista apparently used this to determine (incorrectly) that the system did not support ACPI. Of course, the huge piece of bloatware that I had run to verify that the system was compatible with Vista did not bother to identify the lack of ACPI support (or, alternatively, worked correctly but failed to acknowledge this bug in Vista).

So, what have we learned? In order to use Vista, one must agree to give Microsoft complete control of ones system, both software and hardware. Cynical, perhaps, but reasonably accurate.

Problem solved, so we move on to the next one. I reformatted the drive and installed Microsoft Windows Vista Ultimate from scratch, and this time it actually worked (at least to the point of being installed). Only one monitor was working, and I had neither sound nor network functionality. Fortunately, I had the foresight to have already downloaded the (huge) driver files from a working system, but since the network card was a generic 10/100 one with a driver from Windows XP (i.e., supplied by Microsoft), it never occurred to me that I would need to get that, too.

I installed the latest drivers for the non-working graphics card, but it made no difference, so I then installed the latest drivers for the working video card, hoping that it would help. Nope, I only had one working screen. Oh, well, I only need one monitor to actually test, as long as it shows Aero. I moved on to installing the only Vista sound drivers for my card, which happened to still be in beta (even after RTM for the operating system). After some seemingly unnecessary reboots, I finally had sound, though I would later regret the driver “choice”.

A quick status review: Only one of two graphics cards was working, but I had audio. The network card was not working at all, and with no network card, it is really hard to search online for drivers.

On the video front, I did not see anything that appeared “glassy” to me, so I assumed that Aero was not turned on. I did the research and found out how to enable the Aero theme, running straight into one of the Vista interface failures. The screen on which one chooses the Aero settings simply does not appear if the theme is not selected and the Aero theme selection is simply absent if Vista determines that the system does not support it. It took a while to discover this combination of issues that violates one basic principle of good interface design: never hide user options, even when they are disabled.

Again, here I will edit out lots of diagnostics, research, and reboots. I learned that the Aero requirements demand 1G of RAM (in addition to fairly hefty video cards, which I have), and this test system only has 640M. Before I went out to purchase more memory, I tried a BIOS change, swapping the video card boot order between AGP and PCI and got a marginal improvement. The working card stopped functioning, but the non-functional card came to life. Better, I now had an Aero option (despite the “limited” memory) which, when enabled, actually worked.

On the networking front, I downloaded the latest drivers for my generic network card, which were (of course), not updated for Vista. Rather than just having older drivers, though, Vista just simply refused to install them at all. No Internet for you!

At the end of the day(s), at least I finally had Windows Vista on my test system, even if it was hampered somewhat. I was able to test our current products with Aero, verify and diagnose one particular graphics issue (caused by Aero), and identify a few program changes that would be necessary. The network testing would have to wait until another day, but we (thankfully) had no major problems. It was really helpful that we had already designed the games to support a limited user account on Windows XP.

It was finally time to make the minor updates for Vista compatibility.

Microsoft plumbs the depths of Bloatware

Theoretically, this is where our Windows Vista journey should begin.

In preparation for Windows Vista, I started where Microsoft suggests that a user start, on the Windows Vista: Get Ready page. This is the site where a prospective customer is supposed to learn all about Vista, including what (possible) reasons there may be to upgrade, how to distinguish among the too many different versions of the operating system, and what the hardware requirements are. Presumably, this site is designed to convince users to decide to upgrade, though I do not find it too persuasive.

There is only one argument I need: The bulk of my income comes from products that run on Microsoft Windows, especially those for the mass market, and this is very soon going to be the only operating system that most of our target audience will be able to buy. Our products need to function under Vista.

So, part of the way down the page, there is a link to the Windows Vista Upgrade Advisor. It seems that this is a utility that will quickly let me know whether or not my test system can run Windows Vista. This would appear to be a good idea, but appearances can be deceiving.

First of all, the download itself was about 30M [*], which is pretty fantastically large for a utility that essentially just checks processor, memory, and hard drive specs. I implemented similar functionality in the installer for Star Trek: The Next Generation, “A Final Unity”, more than twelve years ago and that executable size was measured in the dozens of kilobytes. 30M? Wow!

Wait! There’s more… Running the installer revealed that the .NET 2.0 Framework was required to run the Upgrade Advisor, which added another 22M, and then it also needed the latest MSXML, so add another 8M or so to the total. So it took somewhere in the neighborhood of 60M worth of downloads in order to simply check my system against a list of requirements and supported drivers.

[*] To be fair, I just checked, and this download is now only 6.5M (my guess, they included .NET in that previous build), which brings the download size below 40M. Woo hoo!

Well, it is just bandwidth, right? No, not really. The observant among you readers may have noticed this little Additional Information note below the download link:

“The Windows Vista Upgrade Advisor works with 32-bit versions of Windows XP and Windows Vista. It will not work with Windows 98, Windows 2000, or Windows XP Professional x64 Edition.”

OK, so where are we now? If you want to use this utility to let Microsoft sell you a new operating system, you have to download 40-60M of files, install three software packages, but only if you already have the latest operating systems. If you want to run this on Windows 2000 (as was previously on my test system), you have to first upgrade to Windows XP (SP2), to find out if you can then pay money to upgrade to Windows Vista, but be sure not to upgrade to a 64-bit version of XP, because that will not work, either. At least we can all rest peacefully knowing that we can easily test for Vista compatibility if Vista is already installed.

That is an impressively bloated system, and I am not sure that I could do better (worse) without seriously absurd levels of effort.

Before anybody thinks that this kind of ridiculous bloat is limited to Microsoft, I will point out that this system has two video cards, one from ATI (now AMD) and one from nVidia, plus a sound card from Creative Labs. The total amount of required downloads for these three sets of drivers was more than 125M, not including an additional 85M of multimedia support downloads. I have written fully functional hardware drivers in the past, and I would be hard-pressed to make a full installation package even 1M, so this is impressive.

Anyway, I upgraded from Windows 2000 to Windows XP Professional, downloaded about 60M of software to determine if the system would support Windows Vista. The Windows Vista Upgrade Advisor said that everything was fine, so I downloaded the 125+M of driver bloatware in preparation for the upgrade. With everything finally in place, I began the upgrade to Microsoft Windows Vista Ultimate.

Punchline: Windows Vista Upgrade Advisor was wrong. Vista itself reported that my test system was insufficient and refused to install.

Stay tuned for the next installment, in which our intrepid developer manages to tame Vista Ultimate.

Pretty Good Solitaire 11.0.1

This first release of 2007 is just the start of a flurry.

Goodsol Development has just released Pretty Good Solitaire 11.0.1, the latest version of its flagship product. A 30-day evaluation (dare I say, shareware) version is available for download here. This version contains 660 different solitaire card games (that’s “more than 600,” Doc), though this particular update does not introduce any new games.

Instead, this release adds full Windows Vista compatibility to the title, prior to the general release of Vista scheduled (this final time) for January 30. This means using a new look program icon, replacing WinHelp with HTML Help, and fixing bugs caused by the Aero glass look and by restricted access to folders (one of each).

Although my code ships with this product, in DLL form, my function for this update was as lead tester, first getting Vista installed and then identifying and researching various issues to work well within the new operating system. Originally, the conversion to HTML Help was thought to be the main issue, but at the end of the day (actually, weeks), that was the one aspect that went fairly smoothly. This process has given me tons of material for upcoming blog posts, amongst the various release announcements.

Nothing with Windows Vista was straightforward, but now that we have identified the issues with icons, help files, limited user accounts, the Aero appearance, and Game Explorer, the rest of the releases should flow like rain. (How is that for a mixed metaphor?)

[knocking on wood]

Michigan Mo-Cap

The list of Michigan development talent and resources continues to grow.

Last night, the first 2007 chapter meeting of the Southern Michigan IGDA (International Game Developers Association) was held, and I was scheduled to miss it due to a prior (and priority) commitment. However, unforeseen circumstances caused the other event to be postponed, so at the last hour I was informed that I would be able to attend this meeting after all. It worked out quite well.

I had been disappointed by the time conflict because this meeting was being held at a brand new, state of the art, motion capture studio located in Detroit, Michigan. The meeting was presented in conjunction with SEMAFX, the Southeast Michigan ACM SIGGRAPH Professional Chapter, which has a mission similar to that of our IGDA chapter, to advance digital arts (as opposed to specifically game development) in this area.

The location was Dangerous Moves, a.k.a., Critical Moves [warning: loud link content], a motion capture studio located within Detroit proper. My arrival was slightly late due to the inability of MapQuest to account for an evening traffic jam on I-696, but fortunately, the presentation had not begun yet. The turnout seemed to be pretty good, probably around 50 attendees, and a poll early in the gathering suggested that more than half were game developers (including aspiring game developers).

When we got started, we were cautioned not to touch any of the rigging while taking our seats because the cameras were very precisely calibrated. (As one technician told us later, “If a mouse farts in here, we have to recalibrate.“) The movable rigging, like a scaffold, supported 46 specially placed cameras that, we were informed, were accurate to within the thickness of a sheet of paper. This is precise enough that it can be (and has been) used to capture facial expressions during a performance. It was suggested that the recalibration process would take around 45 minutes to complete.

The stage itself, as configured for our visit (to accommodate a room half full of chairs), was about the size of a standard conference room, but could be expanded to at least four times that size. Light in the room was low, to avoid reflections, and the stage was lit primarily with many deep red LED light clusters. It was explained that the visible light was for our (human) benefit, but that these lights also transmitted infrared light, which is the frequency range captured by the cameras, after bouncing off of reflective “ball” markers.

When the heart of the presentation began, a lovely performer dressed primarily in black, but covered with a few dozen reflectors, walked onto the stage. The software display, thoughtfully projected on a screen for us, showed a series of dots on black. As a technician took the performer through her range of motion moves, the dots moved around the 3D space in real time. It was neat, but they were only dots

As we watched, the points, or rather, the connections among them, were mapped to lines, and soon, there was a colorful stick figure prancing around the screen along with the performer. Then a humanoid model (i.e., a 3D stick figure) was loaded and taken through the original range of motion capture, following by a stock model of a typical female video game fighter character doing the same. It started getting really interesting when this model then started performing the same movements throughout the 3d space at the same time as the woman on stage. We watched a preliminary marketing video showing off this ability, and as entertaining as that was, a linear (edited) medium simply could not fully convey that it was done in real time.

For the final part of the stage show, a little wooden triangle with reflective markers was placed on stage, along with the performer. While the women of stage and screen continued to dance in unison, a technician was doing something in the software. Ultimately, the wooden triangle became a makeshift quasi-virtual camera, and the 3D images were rendered from the perspective of this “camera”. A kid in the audience, maybe 12 years old or so, was encouraged to try it, so he walked on stage and “filmed” a sequence in his impromptu directorial debut. (He was not comfortable telling an adult woman what to do, though.) Our hosts captured the session and are rendering the results to a custom DVD for him. Very cool.

The whole studio is actually multipurpose. It is a large sound stage with full stage rigging (including catwalks), and in addition to the motion capture area, there is also a room prepared for green screening, complete with rounded corners, evidently to avoid seams and abrupt changes in lighting. I overheard somebody mention that local Rock and Rock Hall of Fame inductee, Bob Seger, had used the studio to set the stage arrangement for his current Face the Promise tour.

The IGDA gave away some door prizes, and everybody spent quite a while at Critical Moves talking about all kinds of groovy things, until many of us retired to the SEMAFX “afterglow” gathering at a bar with live music just down the street. The band asked that we spread the word about them, which leads me to…

Fundamental rule of marketing: If you want people to spread the word about you, you must make sure that you tell them who you are.

On-site working

We have successfully finished our off-site meeting for 2007.

The main takeaway point from this planning meeting, as far as logistics are concerned, is that getting away is important. However, that includes not merely avoiding common distractions of the office (and home), but also avoiding distractions from external sources. In this case, our chosen venue was overrun by a glut of prepubescent children, and a seeming dearth of associated parental supervision. Of course, there was nothing inherently wrong with kids being noisy, and they were (for the most part) quiet during late hours, but we did not expect to have to discuss business with a background clamor. We will almost certainly select a different location next time.

Nevertheless, we concluded a very successful off-site meeting, having identified more than 200 separate issues, large and small, that should be addressed during the next year. Each issue was written on an index card with a general category, without regard for scope or urgency of the task(s) involved. We then selected and prioritized the most important twenty projects, of which (by coincidence, not design) exactly half are development projects expected to be completed within the next six months. Ten titles will amount to lots of programming work, though some of these will be releases (for better Windows Vista compatibility) that are essentially already in the can as I write this. The other items I mentioned in my previous blog post are also, not surprisingly, in the Top 20.

It was nice to realize that, despite an extended time since our last comprehensive planning meeting, we had not strayed far from the intended course, so our direction is positive. Conversely, it was disappointing to see the number of projects that had slowed or stalled in the past couple of years. Any associated regret is now consigned to the past, however, except insofaras we are more committed to maintaining momentum for all of our viable projects.

Not to waste any time putting the revised plan and priorities into practice, I am already taking care of a smaller final step on one of the bigger projects. We may be down to only 19 major issues by our next regular project meeting.