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.]

Thursday, April 8, 2010

Coast-to-coast live!

This weekend we held the first live playtest of Continental Rottweiler: "live" means that we had four actual human beings playing the game, as opposed to just me, or Helen and me, pretending to be more than one person each. I'm pleased to report that it went very well.

The game lasted about six hours, and was contentious from beginning to end. I had been hoping for a fifth player, but the game worked quite well with four. The fact that everyone wanted to cross the "border" between the east and west tended to crowd players together; on the Western board, the Rockies were another barrier that focused nearly everyone's efforts. I think there's room for a fifth player, but surprisingly, six may turn out to be too many.

The new rules for handling the "income trough" seemed to work well. We used a rule that Helen had proposed: at mid-game, players may give back any number of the bonds they've taken out at a penalty of 2 VPs per bond. This rule is intended to walk a careful tightrope. I want players to be able to take out lots of shares without worrying about surviving the income troughs later on. On the other hand, it should cost something to get rid of a bond at mid-game; otherwise, it is too easy to take out bonds just before mid-game, knowing that you will soon be rid of them. In addition, it gives players another interesting decision to make: keep the bonds and avoid the extra VP penalty, or dump them and avoid the income penalty?

I have one reservation about giving back the bonds: in this session nearly everyone gave back all their bonds, and the one player who didn't regretted it. It may be that 2 VP is too cheap, and at that price you should nearly always give back all your bonds. But I'm going to let a few more games go by before I try increasing the penalty. That will tell me whether the cost is really too low, or whether it was just the way this one game played out.

My other concern is the Rail Baron cards. I put together a set specific to the Continental game, having found in previous playtests that the ones from the Eastern and Western games don't work as well on the combined boards. For the most part the new barons were good, but there were a couple of false notes. One is that the VP bonuses in the base game and its other expansions are about 10% of a typical final score. But final scores in the Continental game are much higher; if the Rail Baron bonuses aren't increased to match, players will not have much incentive to try to achieve their Baron goals. I think therefore that the Continental Baron bonuses need to be significantly larger than those for the base game. The other issue is ensuring that those bonuses are balanced. There were indications that some of the goals are much harder to achieve than others. A little of that is okay, but the differences shouldn't be huge.

All along I've been worried that the Continental game would take too long, and outlast its welcome. But the players stayed after the game for well over an hour, vigorously discussing their strategies and the reasons for their decisions. Nobody got bored, and they all want to play it again. Whew! Obviously, not everyone will want to play a six-hour game no matter how good it is, but I think we've got something that at least a real RotW enthusiast will enjoy.

More playtests will follow, as soon as I can get them together!

Monday, February 8, 2010

Coast-to-coast again

This weekend we tried another coast-to-coast session of Rottweiler. This was only the second such session. Because of the holidays and nearly two months (and counting) of major home renovation, I haven't had the time or the table space to lay out so large and long a game.

But on Saturday we managed it. And it was a pretty good session, in two senses. First, lessons learned from the first session led to noticeable improvements. And second, we learned a lot about what still needs work.

The first session had two major problems. One was that it didn't last long enough; the far coast was barely reached and wasn't developed, which didn't feel right. We solved that this time with a tweak to the end-game trigger rule. The other was the issue of the "income trough", as follows.

We have been using the score/income track from the base game. In Railways of the World, your income is tied to your current score. It rises for most of the game, then begins to fall again at a point somewhere after midgame. Typically it never rises again, but if you score above 100 points you wrap the scoreboard and you begin to repeat the cycle.

For the base game, this works just fine. The income curve is calibrated to keep money tight throughout the game, so that players must always think about their budgets. For much of the game you need money for expansion and development, but in the end game you are usually busy milking what you have already built rather than spending on new track, so you don't need as much money.

For the coast-to-coast game, this falls apart. The high score in this weekend's session was a whopping 240 points: that player wrapped the scoreboard twice. This means that his income started at zero, rose to a high point, then fell to zero again, and then did it all over a second time, finishing with a rise to a third high point. The trouble with this is simple: the coast-to-coast game requires players to continue to expand for at least twice as many rounds as the base game. Unless you have managed to become rich, you're going to be starving for money when you are in the "income trough". You can even get into a horrible debt spiral if you have issued very many bonds, because you must pay dividends on them and this can exceed your income by quite a bit.

In the first session, I saw this as a problem that might be acceptable as part of the strategy of the coast-to-coast game: you need to build up a fund of cash during times of high income, so that it will see you through the low-income periods. But in both sessions, at least one player failed in this; and the consequences are severe. Such a player falls badly behind and cannot catch up, and has to play for another three hours not only unable to win, but even unable to make any progress. The fact that the second session lasted through two income troughs makes it even worse.

So I'm going to have to think about the income curve for the coast-to-coast game. A number of solutions have been proposed, but I haven't had time to think them all through yet. The ideal solution will be one in which most players must budget carefully throughout the game, but without quite such severe penalties for failure; and it will allow players to issue plenty of bonds if they need to. (If you think I'm being too soft-hearted toward my players, think again. It's one thing to lose; it's quite another to be so wedged that you can hardly even play, especially in so long a game.)

When I've got a good-sounding solution for the income problem, I may be ready to try a "live" game with a full table of real players. So far it's just been Helen and me, each pretending to be two different people in order to make up four simulated players. Helen is tolerant, but I don't want to burden my other playtesters with a six-hour unplayable horror of a game, so I want to get this smoothed out at home before taking it out in public.

Tuesday, January 26, 2010

WebComics: Dave Kellett's "Sheldon"

I've loved the funnies all my life. I learned to read from a Peanuts comic book, and have been reading the funny pages in the newspaper ever since. One of my grandmothers, the one who lived some distance away and who we therefore couldn't see very often, always brought me another Peanuts collection whenever she visited. (That was not the only thing I loved about her, but it certainly didn't hurt!)

My dad loved Pogo, which is still my nominee for the greatest comic ever. Walt Kelly provided wit, contemporary satire, brilliant artwork, and deep and endearing characterization, every day for decades.

It was only relatively recently that I discovered that you could get quality funnies from other sources than the newspaper and the bookstore. The Web has made it almost trivially easy for a wanna-be comic artist to start a strip and get it in front of eyeballs. I stumbled almost by accident into a world of literally hundreds, if not thousands, of strips I'd never heard of.

Most of them will never appear in a newspaper (even if that venerable institution survives, which seems less likely every day). The major reason is that most of them are awful: bad art, little wit. Sturgeon's Law applies, and perhaps with even greater force because the barrier to entry is so low.

Some will never appear in a newspaper because newspapers are aimed at families. Quite a few web comics are aimed at adults, and their content is unsuitable for an audience of all ages. Of these, Sturgeon's Law applies again: many are merely in poor taste, but a few handle adult subjects with grace and wit.

My favorites are listed in a sidebar over on the right-hand side of this page. I need hardly say that I recommend them all, with the caveat that several of them do deal with mature subject matter.

The occasion for this post is my discovery of Dave Kellett's Sheldon. Sheldon actually is a family strip, in a couple of senses of the word. I don't really care about that, either way. Sheldon appeals to me because it achieves what I think of as the comic strip hat trick: it has good artwork, good wit, and appealing characters.

It took me a while to reach that realization. When I started reading Sheldon, I thought of it as competently done but unexceptional. I almost gave up on it. I kept reading largely because I was all caught up on other strips I liked better, and needed that funnies fix. And over time, I began to realize its quality. An example: one of the characters in the strip is a lizard named Flaco. The only thing Flaco ever says is "squee." You might not think you could squeeze (sorry) very much juice out of that; at least, I didn't. But over time, Flaco's character has grown in depth. He has a distinct personality and his own style of joie de vivre; and you would not believe how much expressive range "squee" has in Kellett's capable hands. He hand-letters the strip and brings the words (even "squee") to vivid life with creative typography.

So I'm now a convert, and I thought it only fair to bring your attention to this understated, marvelous strip. Sheldon now runs six days a week, with Saturday given over to Kellett's new sci-fi storyline, "Drive". (Kellett promises that his web site will eventually give Drive separate-but-equal housing with Sheldon, but for now it's just the Saturday installment on the Sheldon site.)

In future posts I will probably devote attention to some of my other favorite online strips and graphic novels. For now I'll just mention Kukuburi, which has not been around very long but which promises to be fantastic.

Enjoy!

Tuesday, January 19, 2010

Zen and the Art of Second Cornet

A couple of weeks ago I again had the pleasure of performing with Ted Shafer's Jelly Roll Jazz Band, and as usual these days, I played second cornet to Leon Oakley's lead. Rae Ann Berry was on hand to film part of the last set*, which gives me a relatively rare opportunity to listen to my performance from the audience's viewpoint.

Lately I've been wishing that I'd had more opportunities to hear recordings of myself over the years. Recordings are devastatingly honest. When you are playing, you tend to hear what you meant to play, but a recording relentlessly makes you listen to what you actually played, and  gives you a more balanced view of how it fits (or doesn't) with what the rest of the band was doing. It can be painful but is very educational.

And I need this education... and not because I want to play first cornet, but because second cornet is hard.**

The JRJB is a two-cornet band, in the style of King Oliver's Creole Jazz Band of the 1920's and Lu Watters's Yerba Buena Jazz Band of the 1940's. Most trad bands have only one cornet, along with the usual one trombone and one reed in the front line. That gives each player a fair amount of freedom, because those three instruments are expected to play independent lines more than close harmonies. But twin cornets have to play together . That's a word that covers a lot of ground.

Theory

You might expect harmony to be simple, and often it is. Trad jazz tunes usually have simple chords and progressions. The second cornet could just play the root of the chord when the melody is on the third, and the third when the melody plays anything else; but this gets boring for player and listener alike. Fortunately there are things you can do to spice it up. Leading tones, suspensions, passing tones, and notes that suggest a more complex chord progression all add flavor and make the two-cornet sound lively and interesting. I'm also fond of "moving" lines: harmonies that almost sound like another melody.

Phrasing is definitely not simple. In a symphony orchestra you take your phrasing from the lead player for your instrument or section, and you have rehearsals in which the phrasing is first decided, then practiced by all. In a jazz band, you have to take both a longer and a shorter-term view. "Longer" because, instead of getting used to a particular phrase, you have to get used to the player himself, and learn how he thinks. "Shorter" because you can still be surprised, and you have to keep your ears open and make adjustments on the spot in live performance.

Counterpoint is both a staple and a last resort for the second cornetist. It is a staple because good counterpoint is wonderful and worth doing for its own sake. But it can also be a last resort because you really can't always play tight harmony. If the lead decides to improvise wildly, a normal harmony line will just sound lame. So instead, you improvise melodies and interjections of your own. It has to be something that will fit the chords and the mood, and that won't overpower or clash with whatever the lead is playing. (The latter usually means staying low while the lead plays high, and quickly moving to a different note when you find yourself in unison.) Often a good technique is to play "fill". Cornets are wind instruments: as if speaking, they play distinct phrases with predictable pauses for breath. The second cornet can pause when the lead is playing, and play during the lead's pauses. There may be considerable overlap, which is fine; but the offset phrasing minimizes collisions and gives the second cornet a distinct voice and identity that's often lacking in tight harmony.

Practice

Playing second cornet can be a strain. It's more complex that the major points I've outlined above, and it has to be done in real time—the band won't wait while you figure out what to play. And music theory isn't the only hurdle you have to master; there are practical considerations as well.

The JRJB plays arrangements out of a book, in which the lead and second cornet parts are carefully written out, note for note. Because I only play with the band a few times per year, I'm effectively sight-reading these tunes. I'm not too bad a sight-reader, but what I'm reading is usually a 40-year-old, fourth-generation Xerox copy of an original written by someone whose copy hand wasn't that good to begin with.

The copyist has felt free to summarize entire sections of the tune with notations like "B3 as B1" which makes you suddenly have to hunt back over sections D, C, and the interlude to find the "B1" mark; by the time you've found it, you're three or four bars into it already. The copy you're reading from has decades of wear, tears, discoloration, coffee**** stains, and fading. It has been scribbled on in pen and pencil to fix mistakes, insert or delete choruses, change intros and endings—and many of these alterations are out of date. Just reading it correctly is no easy task.

And reading it correctly isn't always correct! Those carefully-designed harmony lines in the second cornet part only work if the lead plays his carefully-designed written-out part... and he often doesn't. (And he's not supposed to. Jazz, remember!) When the lead decides to wander too far from what's written, or when I've gotten lost on the page, then I have to fake something. Usually Leon will stay fairly close to the page in the opening choruses; I don't have to fake much unless I get lost, and then only until I can find my place again. But later in the tune, especially on the out-choruses, Leon often just closes his eyes and plays what he likes. Then I just have to listen extra hard, and get creative, and be ready to return to the written music when we reach the hook, which should be given plenty of punch...

Nope, not easy. But if I do it well, nobody may ever know that I wasn't blithely reading the entire thing. I can just stand there and look smug when the tune is over!



* Salty Bubble and Tiger Moan came out pretty good, I think.

** "Dying is easy; comedy is hard." — Sir Donald Wolfit***
     "Math is hard!" — Barbie

*** Or somebody else.

**** I guess.

Saturday, December 12, 2009

Rottweiler: Coast-to-Coast

I see I've been lax about blogging lately. That's mostly because I haven't been doing much that I felt would be of interest: some gaming, some music, a nice Thanksgiving with the family. Recently we've begun remodeling the house, and that may prompt some commentary at some point.

But last weekend, Helen and I pushed the Rottweiler map edge-to-edge with its matching previously-published map, and we played our first "continental" game. I'd cobbled together a rule set for what would clearly be a long game, and knew that it would need playtesting to get right. The results were mixed: some good news, some bad.

The good news is that it was an interesting game. It definitely felt different from any other RotW game we've played (and we've played them all), and the new strategies it evoked were challenging and fun. I also felt that it wouldn't need much tuning to really get it right—although that may be unjustified optimism. But there were a few issues that will have to be addressed.

One issue is the income/score track. RotW and Railroad Tycoon veterans know that your income goes up as your score goes up, until a bit after mid-game when your income begins to decline as your score continues to rise. Thematically this represents the overhead of running a large railroad; from a game design standpoint it's to keep cash scarce and make players budget. If you perform well, you can wrap the scoring track and your income begins to rise again. Normally this happens late or not at all, but in the continental game it will happen at about mid-game. It's a bad time to be short of cash.

In our one playtest (Helen and I managing two players each) one player hit the trough just wrong, with no saved cash and no cheap prospects for getting out of the trough; that player finished last. Another player had to build track aggressively, to delay entering the trough until he could rush past it in a sudden flurry of deliveries; that player finished second-to-last. The other two players were either already past the trough or had enough cash on hand that it wasn't an issue; they finished first and second.

The continental game is long, and I don't want miring players in the income trough to be a frequent occurrence. They'd have to spend a couple more hours finishing the game with no prospect of winning. But it may be that it's never necessary for an experienced player to be stuck, if you know to plan ahead. One simple solution is an optional rule for beginners: once your income first climbs above $10 or $15, it never falls below that level. Experienced players can use the unmodified income/score track for a more challenging game.

The biggest actual problem we encountered was a shortage of pieces. There are simply not enough goods cubes, track tiles, or even control locos in a single base set. I'll be talking with the publisher about how to handle this. The decision will be up to them, but the obvious possibilities include putting the extra bits in the expansion, making a "Continental Pack" available separately, or simply requiring the bits from two base games.

Progress! I hope to try the continental game again soon with real players, but Christmas may intervene. When it happens, I'll post again.

Sunday, November 1, 2009

JRJB Now Available Online

As I'd hoped, the new album I recorded with Ted Shafer's Jelly Roll Jazz Band can now be purchased online. You can find it at Worlds Records Music Store, and you can click here to go straight to its page. (Links to product offerings can change over time. If that link stops working, go to their main page and search for "Ted Shafer", then find the album with my name in the personnel list. Ted's other albums are good too!)

There's been a bit of back-and-forth about the album's title and cover art. The title used to be just "New Orleans Jazz"; but Ted and Leon decided that the album just looked too much like earlier JRJB albums with similar covers and titles. Now the band is billed as the "2009 Jelly Roll Jazz Band" on the front cover, and under that, "with Guest Artists Leon Oakley and Ray Skjelbred". The cover art is also different. Some of my, ah, more elderly and/or better educated readers may recognize the source of the new artwork.

The World Records store Web page shows the original cover art, and lists the CD under the name "New Orleans Jazz Volume 3". I don't know which cover you'll actually get if you order from them. All very confusing: but it's still the same album with the same music!

I've just learned that the pianist on the album, Ray Skjelbred, has a Web site which lists the recordings he's made over the years, and has links for purchasing them. Ray is an amazing performer. It's a real thrill for me to hear his distinctive piano style on the JRJB album after listening to it for years on recordings by Turk Murphy. Ray has recorded several solo albums as well as sessions with Turk, Bob Schulz, Hal Smith, Clint Baker, Bob Helm, and more. His range includes bluegrass and western as well as trad jazz. Head on over to Ray's Recordings page at www.rayskjelbred.com and check them out. The new JRJB album will be listed there soon, too.