Showing posts with label software development. Show all posts
Showing posts with label software development. Show all posts

Thursday, November 6, 2014

Finally, Solitaire Till Dawn

A while back, when I realized that most followers of this blog were more interested in the progress of Solitaire Till Dawn rather than anything in my personal life, I created a new blog for my solitaire development and stopped posting about Solitaire Till Dawn here. Since then, nothing very noteworthy has happened to me other than solitaire development, so I haven't been posting here at all!

I'm going to break that rule now, because Solitaire Till Dawn is finally available in the App Store, and this is a personal achievement for me. It is the culmination of over five years of work, rewriting Solitaire Till Dawn from the ground up for modern Macs. Apple released the Lion version of OS X in 2011, and until yesterday that meant that you couldn't run Solitaire Till Dawn on any Mac with an up-to-date OS. Now you can: the new release is good for any Mac OS from Snow Leopard (10.6) up through the latest Yosemite (10.10).

It's been a long grind. The previous version of Solitaire Till Dawn was the result of 15 years of steady development; you can't re-create something like that in a weekend. And I was slowed at first by the requirements of my day job, and later by the exigencies of moving house to a new state. But for the past year or more I've been able to give it lots of attention, and we've finally reached the big milestone: the release of version 1.0.

The first version of Solitaire Till Dawn was released in 1991, at about the same time that the Internet was being created. It ran on the Mac Plus, as well as the Mac II (the first Mac with a color monitor). If you're interested, I put an article about the app's history on the Semicolon LLC website: The History of Solitaire Till Dawn. (I've also completely redesigned the website. Go admire it!)

In one way, I feel as though I'm owed a vacation now. But it doesn't really work like that, and anyway I don't want one. Once the dust from the initial release has settled, I will be adding new features and fixing any bugs that turn up, and putting out upgrades. And I hope to begin work on an iPad version soon, although I'm making no promises about that for now!

I'll make one plea here: if you decide to buy a copy, please leave an honest review and rating at the App Store. That will help sales if the review is good, and help me make improvements if it isn't. Thanks!

Monday, August 20, 2012

Solitaire Till Dawn: The Last 90%

I am nearly at the end of a three-week "working vacation", time off from my day job which I have spent working full-time on Solitaire Till Dawn instead. It has been both productive and fun, and although Solitaire Till Dawn for Lion (and beyond) is still not done, I've made a lot of progress.

In these three weeks I've accomplished the following:

  • Made the animation system sane and well-behaved
  • Implemented a full preferences system for saving your settings and scores
  • Created the "Players" feature, so you and your family can keep separate, personal settings and scores
  • Implemented automatic saving of your game when you quit, and automatic resume when you start again later
  • "Sandboxed" the app, to obey Apple's new security restrictions
  • Wrote the code to import your old scores and settings into the new version
  • Created a half-dozen new cardback images, with high resolution for modern screens
  • Implemented the Décor panel, so you can choose royalty, cardbacks, and background images
  • And made loads of miscellaneous bug fixes and user interface spiff-ups.

So where do we stand?
Fair question, especially after all that gloating and bragging. I'm afraid there's still a lot left to do.

Some wag once observed that the first 90% of the job takes 90% of the time; and then the last 10% of the job takes the other 90% of the time. He was right. At this point, nearly all of Solitaire Till Dawn's major features are basically working. There are a couple of time-consuming items left to do: for example, I still have to implement the "extended statistics", and I have to write all the built-in help pages. But most of what's left is just a whole lot of tedious testing and bug-fixing.

At this point, I expect some of you are wanting to volunteer to help with the testing. I'm grateful for all the offers, but I'm still not accepting testers (not even a waiting list, so please don't clog my in-box with requests, thanks!). Managing beta testers is itself a big, time-consuming job, and I'm not going to start it while I still have a big list of bugs I've already found and can test myself.

When testing is complete and I think the product is ready for release, I will submit it to Apple's App Store. This will require getting my descriptive text and screen shots ready and packaged up, which is another task that will take some time. I've never done this before, but from friends I know that acceptance may take weeks, especially if Apple find problems they want me to fix.

Will there be anything missing in the first release?
Yes, a few features from the old version will almost certainly not be in the new version. I am deliberately leaving some things out in order to get the app done as quickly as possible. The list of skipped features may include:

  • Magnetic Mouse
  • "Cheat" features
  • Custom cardbacks from your own photos
  • The clock timer
  • "Save Game" and "Open Game" menu items (but your current game will always be auto-saved)
That list is not final. And if one of your favorite features is on it, please don't worry. If it isn't in the first release, I will add it in a later update.


Enough, already! We just want to know when it will be done!
Sorry, I don't know! Testing, bug-fixing, and submitting to the App Store are all things that will simply take as long as they take, and I can't predict how long that will be.

My vacation will be over in a couple of days, and I'll be back to having only evenings and weekends for this. I've used these full-time weeks for the "big ticket" items, stuff that really requires hours of uninterrupted concentration and a mind that isn't end-of-the-day exhausted. Those items are now finished, and most of what's left should not require such deep focus. I'm hoping I can be reasonably productive even in those late-night snatched hours. I'll continue to keep you posted on my progress, of course.

What about Mountain Lion?
I won't release Solitaire Till Dawn until it is compatible with both Lion (OS X 10.7) and Mountain Lion (OS X 10.8). That won't delay things much, I think.

I had originally intended to keep this release compatible with Snow Leopard (OS X 10.6) as well. That may yet happen, but if it looks like it would seriously delay the release, I will abandon that. Snow Leopard is now out of date by two major OS X updates, and the old version does still work in Snow Leopard if you install Rosetta.

Thursday, August 2, 2012

Midsummer Fair Winds

The title of this post is kind of lame, but never mind. I was trying to draw a contrast with my previous Midsummer Doldrums post. Very shortly after I posted that, unexpected events changed my situation quite a bit.

I am now, unexpectedly and suddenly, on vacation (or what I will try to call "vacation" without falling down laughing). It's really just a break from my day job, a couple of weeks off that I will mainly spend working on Solitaire Till Dawn.

This means that instead of trying to snatch an hour or two in the evenings, when I'm bushed and can't think straight and have a zillion distractions, I can instead work a full eight-hour day on solitaire. While I don't expect to finish the project during this stretch, I do expect to make a metric ton of progress.

And here's the first fruit: on my first full day I have already finished off that architecture issue I was moaning about! It's another redesign of the animation subsystem (I think this is at least the third time I've done that), and it's working better than it ever did, with much simpler code. Tomorrow I have a bit more cleanup to do on that task, then it's back to real forward progress again.

P.S. Unhappily, the "unexpected events" I mentioned were not all good for all concerned. That story isn't mine to tell, but I wouldn't want those who know the story to think that my only reaction was unalloyed joy. As for me and mine, we're okay; we're just feeling sympathy for friends and trying to find a silver lining or two amongst the clouds.

Sunday, July 29, 2012

Midsummer Doldrums

It has, once again, been too long since I've posted any kind of an update. I am starting to see signs that some of you are worried that I am dead, or tired of working on Solitaire Till Dawn—that, in short, the project has been abandoned.

This is not so; I'm still here and still working on it. But it is true that progress has been stalled for some time. This has not been a good year for the general health of my family: nothing life-threatening, but there have been a succession of events that have taken up a good deal of our time and attention, and that have prevented me from focussing on software.

Also I have been stuck on a design issue. I was dismayed to find, at this late date, that some lingering bugs weren't just a matter of tracking down a minor problem and making a fix. Instead I have had, once again, to re-think some core matters of Solitaire Till Dawn's architecture. I haven't been posting about it because it's not the sort of thing that can be simplified down into a paragraph or two. I haven't known what to say about it; that, plus the general lack of progress, have left me silent for too long.

I apologize for that silence, and I'll try to do better. I am finally starting to regain the time I need each week to work on this, and I am starting to make progress again on the architectural issue, although it is certainly not done.

I can only plead with you all, once again, for faith and patience.

(Nearly forgot: some have been worried that Solitaire Till Dawn, when it is finally released, might support Lion but not Mountain Lion. I don't think that will be an issue.)

Saturday, April 14, 2012

The Mummy's Curse

Nearly a quarter of a century ago I wrote Scarab of Ra. Scarab was my first Macintosh game program. It was written for the Macintosh Plus, a machine with a very small black and white screen. In it, you become a "lowly undergraduate student in archaeology", and you are exploring the unknown and hazardous interior of the newly-discovered Great Pyramid of Ra.

Scarab of Ra was fairly advanced for its time. It offered a 3D adventurer's-eye view of the pyramid's interior, complete with some cheesy graphics tricks to make it harder to see details of items in the dim distance. It wasn't animated or realtime, but it kind of felt like it: every time you pressed a key to take a step, a little time would pass and certain hazards including cobras, monkeys, lions, and the horrible Mummy would change position to sneak up on you. The Great Pyramid was laid out as a series of mazes, each one larger as you got deeper in the Pyramid. In every game the mazes and the arrangement of traps and treasures was different.

I released it as shareware, which made it the very first product of Semicolon Software. This was all back before even the World Wide Web (man, that makes me feel old), so Scarab's distribution relied upon the kindness of strangers. People would upload it to their phone-in bulletin boards for others to find and download; they would give copies to their friends (Scarab's copyright notice explicitly allowed this), and Macintosh User Groups would put it on floppy disks along with other sharable programs to hand out to members at their monthly meetings.

This made for slow distribution and a fairly small audience, especially since there were not many Mac users at all back then. I charged $10 for it and left it to people's honesty to pay me if they liked it. I probably sold a total of a few hundred copies. That was nice, back then: it was just a hobby for me, and the proceeds from Scarab helped pay for new development software and Mac peripherals.

About three years after introducing Scarab I launched the first release of Solitaire Till Dawn. At first that too sold only slowly. But at about that time the Web appeared I coincidentally gave STD a major facelift, and its sales really took off. As a result, I continued to concentrate my efforts on Solitaire Till Dawn and never got around to updating Scarab. As chronicled elsewhere, changes in Apple's choice of CPUs and operating systems, coupled with the abandonment of the development software I'd used, left Scarab unable to run on modern Macs. It became "abandonware".

So you may imagine my surprise when, a few years ago, I began to run into evidence that Scarab of Ra is regarded in some circles as a "classic of Macintosh shareware" and that many people are nostalgically longing for its return. I do get the occasional email asking about it, but that's a trickle compared to the flood I regularly get about STD. But Scarab is featured prominently on web sites about classic Mac OS software, and a few months ago I discovered that it has a Facebook page of its own with several hundred "likes". Today I dropped in there (a vanity visit, I admit it) and discovered a link to another Facebook page which was an even bigger surprise.

The Revive Scarab of RA page documents a project to recreate Scarab of Ra. They are writing all-new code in Javascript so that you will someday be able to play Scarab of Ra in your Web browser. This also means that you will be able to play Scarab on any platform: Mac, Windows, Linux. That's pretty cool!

You might wonder how I feel about this: somebody else "ripping off" my product without so much as a how-d'you-do. I'll admit it makes me feel just a little bit itchy; but I'm going to rise above that and wish this guy and his collaborators all success. For one thing, it's not illegal to clone somebody else's product, so long as you don't violate copyright by stealing or copying the original product's code, graphics, or text. The code is no problem since they're writing theirs from scratch. They have not gotten as far as adding test or images yet, but the page's author has made it plain that he understands the copyright law and intends to provide new images and text, and produce something with an updated look and feel.

And I have to admit: in the past, a few people have asked me for permission to create new versions of Scarab. I've told all of them that I have no objection so long as they honor my copyright. This fellow (I don't know his name, it's not on the Facebook page) may well have been one of them. And even if he wasn't, I have no reason not to give him the same answer.

So more power to him! If he brings it off, it will be quite a tour de force—and I will be very stoked.

I even clicked "Like" on the Facebook page!

Tuesday, March 20, 2012

Fonts of Wisdom

Previous versions of Solitaire Till Dawn have always used carefully-drawn bitmap images to display the indices (the rank and suit of the card, shown in the upper-left corner). I did this because in the old days (you know, when we all used steam-powered computers), pixels were large and screen space was limited. I needed to know exactly where each numeral or letter would be placed, how tall it would be, how wide it would be, and how it aligned vertically and horizontally. I couldn't leave that to the vagaries of a computerized typesetter; if I did, all kinds of things wouldn't be right. The 10's would be absurdly wide; the suit symbols wouldn't line up vertically in columns; the letterforms wouldn't be thick and black enough for instant recognition; the fonts wouldn't look good at tiny sizes... you get the picture.

But it's a new age, people. I may be slow in realizing it, but I get there eventually. Bitmap images are a bad idea these days, precisely because they don't scale well as screens get larger and pixels get smaller. Using the system's text-display features takes care of that. And it turns out that the Mac's (and for future reference, iOS's) font tools are really flexible. This evening I finished substituting genuine font-drawn letters and numbers for my old bitmap images, and they look great.

To get the pixel-perfection I demand, I had to do some strange things. These included building tables that yielded the exact font size and baseline height needed for each separate card size; calculating string widths carefully for precise horizontal positioning and then adding offset adjustments for certain characters; and squeezing or widening some characters so their widths wouldn't differ so much. I even played with kerning to adjust the distance between the 1 and the 0 in "10", though in the end I found that I didn't need to do that.

I'm pleased with the results. The new letters and numbers almost precisely fill the space of the old ones, and are much better-looking. I think you'll like them.

I haven't done the suits yet. That comes next.

Sunday, February 26, 2012

Gettin' Stuff Done

Nope, Solitaire Till Dawn is not done yet. But I have made a lot of progress in the last few weeks. Here's a rundown:

Buttons are now fully implemented and working. These are the buttons that actually appear in the play area. They implement some special functionality that can't be triggered by the usual click-and-drag stuff. Most games don't have or need buttons, but Accordion has a "Deal All" button, Pyramid has a "Discard Pair" button, and Puss in Corner has a "Redeal" button.

Partial decks are implemented, needed by games like The Wish that don't (ahem) play with a full deck.

Tight fans, for games like Thirteens and The Wish. Also "anchored" fans: never mind why I call them that, but these make Fortress and its variations playable.

The deck now shows correct numbers: usually the number of cards remaining in the deck, but for some games it shows the number of deals remaining.

The displays and messages in the status bar are more complete and correct.

Keyboard focus is better-behaved, so you don't have to click in the Games Drawer or in the play area in order to use keyboard shortcuts.

The behavior of the available-card-highlighting feature is much improved (still need some work on the graphics, though). The find-card feature (press '5' to highlight all the visible fives, or '5s' to highlight all the visible fives of Spades) is also working now.

And lots of little things I won't bother to list individually: stuff I've implemented and/or fixed in the solitaire engine itself.

I've completed an initial test of all 100 games now. 87 of them seem to be working, while the other 13 still have some issues to be worked out.

What am I doing now?
This week I'm working on supporting different card sizes. Up till now, I've only been using the "normal" size. The game needs to allow selecting card size from a menu, and changing card size to match the window when you change the window's size. This is perhaps half done.


What's Left?
Lots of stuff, I'm afraid. A partial list:

  • Several important toolbar buttons, including the Autoplay features and Magnetic Mouse.
  • The built-in Help and the game rules display.
  • A number of the preference settings and their implementations.
  • Sound effects.
  • A number of graphics effects.
  • Score and statistics keeping, and display.
  • New artwork.
  • Separate scores and preferences for different players on the same machine.

And there's more; those are just some of the highlights.

I will not be implementing every single feature for the first release. Some of the old version's features will have to wait. I'll get all the really important ones in, and then add the rest over time, in free upgrades.

There you go: that's the status. I'm working hard; I want this out the door as badly as some of you want it in your hands. We'll get there!

Saturday, December 3, 2011

That's the Sound of the Men...

I see it's been a while since I've posted anything other than the little updates in the box to the right. That's because I generally save these larger posts for larger subjects or events, and lately there's been nothing of that nature to share. But I also know that Solitaire Till Dawn's amazing legion of fans can get antsy if they don't hear something new once in a while about the progress of the project, and I don't want to leave everyone hanging. This is just a little update post to reassure you all that I haven't forgotten about you.

And the news is just this: It's not done yet. I don't know when it will be done. But I am still working on it, as hard as I can given my other responsibilities.

The work I've been doing doesn't lend itself to quick descriptions for the non-programming public, and if I took the time to try to explain, it would be time taken from actually working on the upgrade. I hope you'll accept instead my assurance that I've made some good strides forward lately. I completed a major architecture change recently that brought a great improvement in the program's behavior, and I tracked down and slew a couple of nasty but well-hidden bugs just the other day.

I know it's been a long wait, and no one (certainly not me!) will be happy as the wait grows longer. But I appreciate your patience, and I'll keep at it.

Monday, September 26, 2011

A Little UI Work

I see it's been over a month since my last post, so I thought I'd put something out to show that I haven't been idle. I've been doing user interface (UI) programming, and I have something new to show.

Solitaire Till Dawn offers 100 different kinds of solitaire. That makes a bit of a problem: how to present 100 different games to users in a way that makes it easy to find the games they know, yet also easy to find new games they might like. In the pre-Lion version, your "Favorites" are listed in a popup menu in the toolbar, and you only have to select one to start a game. To see all 100 games, you would select "Choose from All Games..." from the same menu, and that would open the Game Chooser window, which was a rather complicated affair.

The left edge of the window

I've learned that a lot of users didn't realize that "Choose from All Games..." was an option rather than just a label, and I'd get emails asking me where all the other games were hiding. So in this new version, I'm trying to make that more obvious. Here's a screen shot showing part of the left edge of the game window.

There on the edge, you can see three tabs labeled "My Favorites", "All Games", and "Goodies". These tabs are always visible, but usually take up just that small amount of space on the side. It should be obvious (I hope!) that you can click them to get something interesting to happen.

If you click any of the buttons, a "drawer" will slide out from the left edge. The next image shows what you might see after clicking the "My Favorites" button.

The drawer is open




You can see a list of 16 games, which are the ones selected as your favorites out of the full list of 100 games. This is what you'd use to select a game you already know you like.

You can select a game by clicking with the mouse, or by typing the first few letters of its name. If you double-click your selection, or press Enter or Return, a game of your selected kind will start immediately.


The All Games list, with a game selected


Now here's what you get if you click the "All Games" tab: the full list of games, scrollable of course. You can select games and start playing in exactly the same way as in the "Favorites" list.

In this image, you can see that "Baker's Game" has been selected, and this reveals another new feature: the small green i-in-a-circle that appears by the selected game. In the image below, you can see the Game Info panel that appears when you click the green i.

The Game Info panel
The Game Info panel shows full information about the selected game, everything but the actual rules; and you can see the rules by clicking the "Show Rules" button near the top-center.

If you change your selected game, the Game Info window will move to match your selection, and show you info about the newly-selected game.

Finally, you can dismiss the Game Info window by clicking the small x in the upper-left corner (I'll probably change that to actually say "Close this window"). The whole business including the drawer will disappear back into the left edge if you click the highlighted tab, or click anywhere outside the panel and the drawer.

This isn't final

I'm sure there'll be changes before this ships. For one, there's nothing in the "Goodies" tab yet, and I'm not sure what might go there; it might vanish altogether.

Here's a change I'm thinking about right now: I may get rid of the little green i and instead just have the Game Info panel appear whenever you select a game. That's because I'm worried that some people won't realize the green i can be clicked, and they will miss ever seeing the Game Info window. On the other hand, if you know what game you want, you won't need to see that panel, and it would be annoying to have it flash into existence and then instantly disappearing as your new game starts. Perhaps it should appear only after a brief delay?

I'm not sure yet. What do you think?

Sunday, August 14, 2011

Solitaire Till Dawn Update

I get mail—lots of mail—asking me about Solitaire Till Dawn and Lion. Some people seem to be worried that I don't know that the current release won't run under Lion.

Really, I know. Really. I know!! And I continue to work on a Lion version, when and as I can.

There are kind of two parts to getting it done. The first and hardest part is rewriting what I call the "solitaire engine" and updating the screen-drawing and animation code. This is rocket science, of a sort. The engine is complex (which is why Solitaire Till Dawn can present so many and such varied games), while animation is an exercise in concurrent programming. If you don't know what that is, never mind: just trust me that it's hard to get it right.

Today I hit a milestone: the engine and the animation are now working correctly. That's not to say that there isn't more work to do on them; but the really important fundamental stuff is done. (I will now pause, so that those of you who are so inclined may cheer.)

This means that I can now begin working on application stuff: buttons, controls, prefs window, saving and resuming games, and all the bells and whistles to be found in the menus and toolbar. This stuff is generally easier to do, but there's a lot of it to get through. I will be leaving some of the old features out of the first release, just so I can release a little sooner and get you something that will run under Lion and get you your solitaire fix. Any missing features will likely be added back in later, in updates.

There is still a lot to do, and I still don't know when it will be done. But take heart: I am working on it, I am making progress!

(And yes... I know the current version doesn't run under Lion!)

Tuesday, April 12, 2011

Unplanned Obsolescence

My software product Solitaire Till Dawn (STD) has had a long history. It is now 20 years old! During that two-decade history, I have had two processors (the Motorola 68000 and the PowerPC), one development environment (Metrowerks CodeWarrior) and one operating system (classic Mac OS, versions 7.0 through 9.whatever), all shot out from under me.

The First Dead Horse
When Apple switched from the Motorola family of CPUs to the PowerPC family, I didn't have to do anything: Apple was conscientious about backward compatibility, and STD ran nicely under emulation. Most users never knew the difference. I did get a lot of concerned mail from users who did know the difference and wanted a nice "efficient" native version, but the truth was that there was no need. STD did not run slowly, and did not use enough CPU even under emulation to noticeably affect the rest of the system. A couple of years after the switch, everybody forgot about the issue and I stopped getting mail about it.

The Second Dead Horse
Then Apple switched operating systems, from the classic Mac OS to the shiny new OS X. This time, it mattered. Technically you could still run STD unmodified, even though it was compiled for a different CPU and written for a different OS (Apple works very hard at backward compatibility). But in this case, it did run slowly and perform poorly, and it would also crash easily (something it never did under classic Mac OS, I hasten to add). It also looked very old-fashioned. I had to re-write STD for OS X and PowerPC. And, as previously chronicled, I made a mistake. I used the Carbon API instead of going all the way to the fully-modern Cocoa, and I stuck with the good old reliable CodeWarrior development system instead of using Apple's new Xcode.

The Third Dead Horse
Then Metrowerks decided to stop supporting CodeWarrior for the Mac. CodeWarrior still ran, and for a while I was able to continue making changes and updates to STD (now STDX). But as OS X evolved, good old CodeWarrior did not keep up, and over time became more and more "old" and less and less "good".

The Fourth Dead Horse
After that, a new blow: Apple switched processors again, abandoning the PowerPC in favor of the Intel line of CPUs. CodeWarrior could not compile Mac code to Intel-native executable. I was now unable to produce a native version of STDX. (Apple claims that Xcode can import a CodeWarrior project and take it over. I tried this, more than once. I never got it to work.)

But although it was now venerable in "computer years" (kind of like "dog years", they go by fast), the latest version of STDX still worked just fine. When OS X 10.6 came out, the PowerPC compatibility layer (called "Rosetta") was no longer installed by default, but Apple made it easy to install if you needed it, so most STDX users were still good to go.

The Fifth Dead Horse, and a Live Lion
But now OS X 10.7 "Lion" is on the horizon. And although it's not released yet and there's time for changes, it seems almost certain that Lion will not support Rosetta at all. If so, the current-yet-antique STDX simply won't run on Lion. For the first time in 20 years, an up-to-date Mac user won't be able to play Solitaire Till Dawn.

My only recourse now is to rewrite STDX using Xcode. I actually started this project quite a while ago, but it goes slowly: it's a big project (you'd be surprised), and I haven't the spare time (and energy) I used to have. I've learned a lesson about clinging to old standards, so this time I'm trying to make the code base as modern as I can; but that also adds time to the project.

My current goal is to create a (not-so)-quick-and-dirty STDX, fully modern and Intel-native, but not containing all the myriad whistles and bells of the previous versions. That will help me get it out the door faster, the sooner to relieve the withdrawal symptoms of STDX fans on Lion. Then over time I'll add old features back in, along with new ones perhaps, until it is once again at its full glory. (All this for the desktop, with iPad and perhaps iPhone/iPod  versions to follow if all goes well.)

I really am working on this, and so is Helen, who has a parallel project taking a different approach. But it really is going slowly. The chances that we'll be ready when Lion is ready are just about nil, so there will be a gap of time. But watch this space, and keep an eye on http://www.semicolon.com for news. It will happen someday, if I can make it happen. In the meantime, your patience and understanding is appreciated.

Saturday, July 24, 2010

Another progress report

My posts seem to be coming farther and farther apart. I apologize for that. I think there are a couple of reasons for it. One is simply that I've been very busy, and have had little time (and when I have time, little energy) for posting. Another is that I haven't been doing anything worth the waste of bandwidth: nothing to say. But I think I've accumulated enough tidbits to make a new post worthwhile, so here goes.

Railways of the Western U.S.
I haven't had much to say about this because my part in it is nearly done. (There's even a page up at BGG for it: Railways of the Western U.S.) But I can report that we (myself and the folks at Eagle Games) have been proof-reading digital copies of the board, the rules, the cards, and the box art, and it's looking really good. The board has been designed to match the Eastern U.S. board esthetically as well as physically, and I think they'll look great together on the table.

The rules are receiving the last few tweaks. My Fuel Depot rules have been tossed in favor of some different ones that the Eagle Games folks dreamed up, and I agree that theirs are much better. I'm eager to try them out myself, now that I know what they are! I'm hoping to get the game on the table at Pacificon over Labor Day weekend.

And after the digital proof-reading is done, it's back to being patient while it goes through the cycles of printed proofs, final approval, printing, assembling, and shipping. (Still waiting for my instant gratification, here!)

Solitaire Till Dawn X
It's been hard to work on this because I do 8 hours or more of programming at work, five days a week, and I'm often feeling pretty burned out by the time I get home. But I am making progress. Today I got some very insidious bugs out of the BooleanTest class (which is used for things like deciding whether you're stuck, or have won the game), and in the process greatly sped up the program's ability to peer into the future of the game as you play it. That could be very useful—we'll see!

New Game Designs
Yes, I have a couple of new designs! With Rottweiler mostly out the door, I've been able to spend some time thinking about such things.

I actually have three that I'm turning over in my head. All are in very early design stages; only two have even been mocked up to try a solo game on my own, and that has happened only once for each of them. But they each feature one or two newish ideas that interest me.

Without going into a lot of detail, one is centered around buying your resources from a "futures" market: if you think you can wait to get them, you can get them cheaper. Of course, there will be time pressure to get them more quickly, and damn the expense!

A second grew out of an idle notion to make a game with Genghis Khan as a theme. The Great Khan was not just a warrior, and there were some interesting economic things happening in his empire. Instead of a battle game, I began to wonder if there wasn't an interesting area-majority game lurking in there somewhere. Area majority has been done before of course, but for this game I'm hoping to introduce a trading-with-foreigners twist.

The third new design grew out of the second. I was looking for an interesting scoring mechanism for it, and thought of one so interesting that it turned into a whole new game. This is the one that has my attention at the moment, and it has been developed more than the other two (not that that's saying much). It is also an area-majority game, with twists in both the area-majority mechanism and in the scoring.

I always have high hopes for any new design, and they usually turn out somewhere between rather dull and utter garbage. We'll see about these.

Tuesday, April 27, 2010

Solitaire Redux (yet again)

In 1991, almost 20 years ago now, I launched a new software product in my Semicolon Software line of tools and toys for Apple Macintosh computers. It was a package of nine solitaire card games, called Solitaire Till Dawn. Helen and I put a freeware demo out on the BBS and user-group circuits (there was no World Wide Web yet!), and mailed the full version on a floppy disk, with a printed manual, to anyone who sent us a check or cash for it.

Solitaire Till Dawn sold a couple of copies per week over the next year or so. It was the product that convinced me that I should write a lot of small products rather than a few big ones, because all of my products seemed to sell about two copies per week. Putting a lot of effort into one or two big products didn't seem cost-effective, when my smaller and quickly-developed tools were making just as much money.

The Competitive Instinct

A couple of years later, the TidBITS online newsletter reviewed a competing solitaire package, and compared it to Solitaire Till Dawn. The competing package was obviously better, but sales of Solitaire Till Dawn went up. (Apparently it's true: there's no such thing as bad publicity!)

But I didn't like being outdone. I put a lot of work into Solitaire Till Dawn, and released version 2.0 in 1994. It was a big improvement, but this version's real significance was that it was designed to be distributed and sold on-line. The Internet was growing, and we became one of the earliest adopters of Kagi, perhaps the Web's first on-line store. We gratefully stopped fussing with printed manuals, floppy disks, and mailing envelopes, and sat back to watch the money roll in.

And it did roll in! Sales went up by a factor of ten. I changed my plan: I never developed another new Semicolon Software product after that, and instead concentrated on improving Solitaire Till Dawn.

Aggressive Development

The good news was that we were now making significant income from our home business, where before it had been pocket change that I used to buy the occasional new computer or software package. The bad news was that I no longer had a hobby; I had a second job. The income belonged to the business and not to me. We were relying on that extra income (we had kids now!), and I couldn't use it for mad money any more.

But I was still having fun. I continued to add new games and features to Solitaire Till Dawn for several more years, until Apple threw me a curve by introducing Mac OS X.

The Mistake

Solitaire Till Dawn wouldn't run on Mac OS X. For a while that didn't matter. Most Macs still ran the classic Mac OS. But OS X usage grew, and our sales declined. So I sat down once again to do some real development work.

And here I made a mistake. I didn't have a Mac OS X machine myself. So rather than dive into Cocoa and Xcode (the OS X native development environment), I used the Carbon framework instead and stuck with reliable old Metrowerks CodeWarrior. Using Carbon meant I could run my new version on both classic and Mac OS X, which meant I could do most of my testing on my old Mac. It seemed like a good idea at the time.

The Consequences

It took me two years to complete the new version. But by then, the pent-up demand was enormous, and our sales were huge. For a while, especially the first couple of years, we were riding high.

But I'd built an Achilles heel into Solitaire Till Dawn X. CodeWarrior had been the best Mac development environment you could get for years, but nothing lasts forever. Metrowerks eventually stopped supporting the Mac. Okay (said I to myself, said I), my old copy still runs just fine. But then came the next bomb from Apple: the switch to Intel processors in 2006.

Bad news indeed! CodeWarrior could not compile for Intel chips. Theoretically you could take an old CodeWarrior project and import it into Apple's Xcode, and compile it for Intel. But I could never get that to work, and even if it had worked, it would have been just another stopgap, leaving Solitaire Till Dawn still dependent on Carbon. Carbon doesn't support some nifty new OS X features, and someday (I am sure) Carbon itself will fail me, when Apple eventually decides to abandon it.

Our Hero Leaps Into Action

Now was the time for me to get busy again! I needed to re-write Solitaire Till Dawn in Cocoa. I set right to it... and bogged down within a few weeks. I was burnt out! I'd written an unreleased predecessor to Solitaire Till Dawn in 1989 or so. I wrote version 1.0 from the ground up in 1991, and worked on it almost continuously for ten years. I wrote it from scratch again in 2001-2002 for OS X. I'd had two CPU chips, one operating system, and a development environment shot out from under me over the course of 15 years. And I found that I just couldn't face writing yet another solitaire program—never mind one that would have to be bigger and better than any of its predecessors!

Apple has always been good about backward compatibility, and it gave me an excuse to be lazy. To this day, Solitaire Till Dawn X runs quite well on Intel Macs, using Apple's "Rosetta" compatibility layer. But users want Intel-native apps. And now Apple has shipped Mac OS X 10.6, in which Rosetta is not automatically installed. It's still available, easy to install, and free; but it's another barrier to new customers for Solitaire Till Dawn.

The result of all this has been a steady decline in sales, and it's my fault. I made a bad decision when I first built Solitaire Till Dawn X, and I ran out of steam when it was time to fix that mistake. Now I'm four years late.

Our Hero Leaps Into Action (again)

Why am I blathering at you about this? For the same reason that some people talk about their diet plans and New Year's resolutions: in the hope that the fear of public shame will keep them on course. I have resurrected my old attempt to re-write Solitaire Till Dawn in Cocoa, and I have made significant progress with it. But it's going to take a while—months at least—and I'll need to keep my resolve and work on it every night that I have at least an hour of free time. If I succeed, I can hope for resurgent sales, and our household economy could certainly use that.

And maybe... just maybe, I'll have energy left to look into making an iPad version. It's clearly the new wave: there is likely more money in that than in Mac software. But here I am again, unable to afford the hot new hardware and unwilling to try to develop for a machine I can't test on. So I'm going to do the OS X version first. If I finish that, it should be a good starting point for an iPad version, because iPad apps are also built with Cocoa. I am making no promises about iPads yet, but I'd like to own one of the shiny things, and this would make a great excuse.

I just have to keep my nose to the grindstone, and hope that Apple doesn't shoot yet another processor, platform, or development environment out from under me.


[Read more about the history of Solitaire Till Dawn, if you're interested. I'll post small updates about my progress at the upper-left corner of this blog, and perhaps some longer dissertations as regular blog posts from time to time.]