The Leaning Tower of Tires
There's no point to any of this, it's just stuff on my mind at the moment. Vanity blogging at its finest.
A few weekends ago, I was at my college pal Mike Stemmle's wedding, talking to fellow groomsman Hal Barwood about game development in Flash, where he seems to be having a grand time cranking out casual games for the web-based gamers. I'd been planning on investigating Flash in the form of Flex -- given the inroads Flash has made in online video, I'm already way behind the curve in failing to embrace Flash in some form -- but he encouraged me to just blow the $400 and get the visual development tools and work with the real thing. Probably a good idea.
One of the Flash games I mentioned was Casa Della Tires, a game based on the animated movie Cars, in which you move Guido, the forklift character, back and forth to catch and stack flying tires, then launch the stack to collect your points. My point to Hal was that it perfectly points out the hazards of "doubling"-based scoring systems for games. Specifically, your stack of tires scores you 100 points for the first tire, 200 for the second, 400 for the third, etc. You also get one second of bonus time for each tire you toss.
How many points do you suppose you can get on a good day? A couple good stacks and maybe you can get to a million?
Try 223 billion. Enough to blow out the space reserved for the score label.
How do you do this? Exploit the doubles. Forget about making nice stacks of 10 tires, and instead play the entire game to get a single stack of 30, enough to go to the top of the screen. Once you have about 10-12, move to the left (where the tires come from), and stop moving - you won't be able to avoid piling the tires up to the top of the screen. Boom: billions of points. Because of the mathematical nature of the scoring system, you can accomplish in one massive throw what would take a week of shorter stacks.
The same thing is true of Skee Ball. My thinking there is that a decent Skee score starts around 300 -- every three balls, if you hit two 40's and a 20 (meaning your 40 missed), nine balls gets you a 300. That's fine, and you get decent tickets for that. But a lot of places now have a progressive jackpot that's often set at 500 points... very makable with a new twist, the "Skee Ball Lightning" feature that doubles point values at random (about 1 out of every 5 balls). You'll probably never hit five 100's in a nine-ball game, but if you play enough games, you can probably hit two that get doubled, which gets you 400. Hit these early in the game, and you can use safe shots to get your 500. When one of my son's plushy toys was falling apart, I took $10 to the local Skee Ball joint and used this approach to hit the jackpot and get a new toy.
OK, forced Java analogy, but there's a bit of concept of the "jackpot" in technology buzz. If each adoption of a technology gets two more people to adopt the same technology, the exponential growth can be breathtaking. We've seen this in the last year with Flash for online video -- in the 18 months or so since YouTube hit the scene, Flash video has been popping up everywhere. All the various developer chat sites (JavaPolis videos, even the SDN Channel) use it, and I increasingly see sites abandoning the usual media players (Real, Windows Media, and QuickTime) in favor of Flash (the Adult Swim Fix is a particularly prominent example of this, having abandoned Windows Media for Flash). Anyways, one site goes Flash for their video, others see it and they go Flash, others see those, etc. And suddenly, Adobe has 223 billion points.
How did we manage to not accomplish this with Java, despite the 10-year head start? After all, YouTube video is basically bastardized H.263, and even the all-Java JMF can play that. I suspect the distribution/deployment story is a lot stronger than any of us appreciate or care to admit.
Worth noting: Flash does nothing to advertise its presence. There's no Adobe/Macromedia loading screen in modern Flash presentations, and you generally have to look at the page's source and search for
.swf to verify if something is Flash. Is it possible that the starburst "Java" logo when loading applets is a bad idea? Or is it bad just because it takes so long to load the JVM and an applet that you need a loading screen?
And then there's Blu-Ray. Which I rather infamously hated at last year's JavaOne (oh look, I'm the number five result when you Google for javaone and blu-ray... I'm surprised I haven't gotten corporate hate mail). The funny thing is, despite what I saw as a miserable performance last year, Blu-Ray is back in a big way at JavaOne 2007, combined with Interactive TV and basically getting their own mini-track on Thursday, and a special page on the JavaOne site. I just hope they think to tailor this year's presentations to developers and not to content authors, because there are a lot more of the former than the latter at JavaOne. Blu-Ray has already ruined the PlayStation 3; don't be messing up JavaOne too (oh, I'm getting comments for that...).