Wednesday, November 14, 2007

New Article on Additive Blending Effects

Now that Jorge at IsoInteractive has teased out how to use additive blending in Shockwave3D, I figured I'd put up a page in my Shockwave3D Developer's Center (sorry, I've taken the site down - do not use Adobe Director) showing how additive blending techniques can really enhance the look of a Shockwave3D piece.

Here's a screenshot of what the featured effect (called "FireJet") looks like:

Screenshot of the FireJet effect

Special Effects using Additive and Multiplicative Blending includes a discussion of what additive blending is, and includes exposition, details, and the source code to recreate the above FireJet effect.

It also has a demo that lets you click between several particle textures to see their effects in an additive context, which might give you some ideas for spell effects for your next Director-based RPG game. (Hint, hint!)

Tuesday, November 13, 2007

Frosty Demo Available

Okay, I've just uploaded the demo version of Frosty to the ImaginEERIEing site. Frosty is our new Christmas-themed digital puppet, for all you home haunters who start putting up animated reindeer and Santas after you tear down your animated zombies and witches.

Frosty

The puppet is not for purchase yet, since I want to get some testing done on it before I start charging. I'd appreciate it if you'd try it out and let me know whether you experience any bugs or problems with him. Thanks, and enjoy!

Monday, November 12, 2007

Strange Eons adds Arkham Investigations support

For those of you that play Arkham Horror, Chris Jennings' excellent Strange Eons, a Java program for creating custom Arkham Horror material, has a new alpha build available which adds support for Arkham Investigations casebooks and foldable tomes. Ia! Ia! Chris Jennings fthagn!

Friday, November 09, 2007

Gordo for charity, other testimonials

Gordo being put to good use
I've put up some testimonials on the ImaginEERIEing site which tell some good stories.

One is the story of a home haunter who charmed everyone from toddlers to parents, including some college girls in between, with the Magic Mirror.

But even more gratifying was the story of Gordo being used for a charity event for children and adults with severe disabilities. When we first built the Magic Mirror and offered it as a free download, we hadn't anticipated its use outside of the context of a home haunt, or possibly a haunted house attraction. But this was a great use of the puppet, because it was engaging and spooky enough to connect with the kids, but (thanks to Gordo's "happy face") not so intimidating that it put them off. Having an adjustable level of friendliness with moods really does come in handy for managing your performance to be appropriate for your visitors, on the fly if need be.

As stories come in about people using our digital puppets, I have to say: it's really great to know that our creations have spread smiles all over the country and beyond. It's a great feeling.

Thursday, November 08, 2007

Shockwave Additive & Subtractive Blending

Oh, happy day! Jorge Rodríguez at isointeractive has figured out how to do Additive and Subtractive Blending in Shockwave.

Tuesday, November 06, 2007

Video of the Madame Sarita Game for 2007

Okay, I got some video of kids playing the Madame Sarita game up on YouTube. Here it is:



All in all, it turned out pretty well - most of the kids seemed to really enjoy the custom controllers. The fact that they didn't have any wires, and that you didn't even touch them (except for the skull, which could be picked up off the table and still work), gave them a really mystical feel.

We did have a few technical difficulties during the night, but once we got through the first few sets of visitors, it ran smoothly for the remainder of the night.

Thursday, November 01, 2007

Digital Puppet Fun for 2007

It looks like ImaginEERIEing's digital puppets really contributed to some fun for kids outside of our own little home haunt this year. There have been a lot more downloads of the puppets this year than in 2006, and the reports are starting to come in about how they worked for people.

Dez, who lives in a not-very-Halloween-oriented town up in Canada, decided to get the ball rolling in his community by using the Magic Mirror to get kids interested in a spooky, fun tradtiion. He's wwritten a really good blog post with his mirror implementation and response, complete with video and photos. The facade he built looks great, and he describes how he built it. He had some interesting ideas on keeping the cost low for it - it's worth a read.

And Brent used our Yorick puppet to greet his guests with a really big pirate skull. The facade he constructed carried the theme through, complete with a treasure chest and iron sconces. Very nice!

As for our own haunt, the Magic Mirror remained an audience favorite, with people lining up all down our sidewalk to have a chance to talk to it. My buddy Rich provided the entertaining and engaging voice for it, and parents were telling us nonstop all night how their kids wouldn't miss the mirror on Halloween.

If you used the Magic Mirror or one of our "pro" puppets in your haunt this year, be sure to send us a note!

Wednesday, October 24, 2007

Haunted Mansion Interior for Madame Sarita's Spirit Parlour

Well, I have the second of two vignettes pretty much modeled out and ready for non-programmer art to be dropped in for the Madame Sarita's Spirit Parlour video game for Halloween. It's looking pretty nice. If I have time, I'm going to go back into all the environments and add spiderwebs and debris, but I'll be happy with this if I don't have time.

Moreover, this vignette is now fully playable. You enter the foyer, and a chill wafts over you. Suddenly, two ghosts come screaming out of the dark corners at you!
Ghost attacking

Dispatching them with your abjuration cards, you proceed towards the staircase, where the spirits offer to let you choose your fate.
Choose your fate

As you tentatively select one of the fate cards, you hear a horrible scuttling from behind! Spinning around, you gasp in horror as a swarm of spiders come skittering out of an open doorway! Your valor casting had better be up to snuff!
Spiders attacking

Was the other fate card a better choice? I guess you'll never know. Such are the vagaries of fate. (Or perhaps this will prompt you to strike up some conversations with other visitors to see what their experience in the Spirit Parlour was like...)

Sunday, October 21, 2007

More Progress on Madame Sarita's Spirit Parlour

Today, the crew came over and we did a lot of work on the Spirit Parlour. We got more walls made and hung up in the garage, we got a good start on the window frame, we got the crown moulding put over the window box, and we got the "casting cards" finalized for the game. Moreover, we managed to get in a test of the interface, and it revealed some problems which I have fixed tonight. The game now has very fine configuration controls that allow much more crisp responses to the players' actions, far better than before. This thing is really coming together well. I can't wait to get it in front of some kids.

Spirit Parlour Game Controllers

The "casting cards" are:
Valour
The card shows a knight vanquishing a terrible foe. When the Mage player places his or her hand over it, it casts a spell that smites your foes with fire and steel.
Abjuration
The card depicts an undead specter cowering in fear from the light beaming forth from a man's hands. When selected, it casts a spell that banishes the spirits of the undead.
Sinister Knight and Dexter Knight
These paired cards show skeletal knights facing left and right. They are used to communicate your wishes to the spirits of the dead.

The cards themselves were drawn by local artist Bob Diven, and look spectacular close-up. They are in the style of old Tarot cards from the dark ages, but are completely original, since we didn't want to actually use the Tarot, in case someone objects. You can get an impression of them in the photo above. They sit in small boxes, back-lit by small utility lights. Also in the photo above, you can see the new configuration screen, showing the current configuration of the system. It now has readouts of the current settings, ways to adjust thresholds and sensitivities, and feedback icons so that all game systems can be tested within the configuration screen. (You can see the circular targeter, the palantir HUD, and icons for the four cards.)

Spirit Parlour game coming along nicely

Spirit Parlour game controllers
Tonight, I did my first complete test of the controllers for this year's Madame Sarita's Spirit Parlour, and it works. It works! Yes!

All three control types for the game are now prototyped and working smoothly:
  • The Palantir of Abyssinia, a crystal ball filled with water from the river Styx, sits on the right, where the "Mystic" player waves his or her hands over it to generate mana.
  • Four Casting Cards that once belonged to Marie Laveau sit on the left, so rife with power that they glow of their own accord. The "Mage" player need only pass a hand over them to access their magical energies.
  • The Skull of Rasputin grins horribly in the center, where the "Medium" player will lay hands upon it to draw the team into the dark nightmare of the spirit world.


Now, all I have to do is make the game which uses the controllers. Erm...

Thursday, October 18, 2007

Sneak Peek at Carnival of Souls 2007

Warning: Spoilers for Carnival of Souls 2007 ahead! Don't read this post if you want to preserve the magic.

As many of you may know, we've lost a lot of volunteers for 2007. Among the regulars and semi-regulars you won't see haunting our house this year include: Holly, Byron, Jen, Dana, my parents, Barb's parents, Jim, Janice, and Stephanie. We've also got some tentatives and some not-heard-froms. Thankfully, we've recruited many volunteers to pick up the slack, but it still meant we got a very late start this year.

But does that mean we won't have any spine-tingling surprises for our visitors this year? No way! The Carnival of Souls crew are innovating a new garage attraction this year which should be a lot of fun and require fewer workers to maintain.

This year, Madame Sarita's Spirit Parlour will challenge our visitors to do some ghost talking of their own. Sarita is looking for apprentice guardians, and she needs Mystics, Mediums, and Mages to help her defend against the forces of darkness.

Mystics will use the crystal ball to generate the mana required to fuel magic spells. Mediums will use their "third eye" to project their vision into the spirit world. And Mages will cast the spells to put down that which should never be called up.

Here's a shot of the new spirit parlour construction:
home haunt construction
You can see the window box we're building. That will house a 4' wide rear-projection screen where the adventure is displayed. An Apple laptop will control the action. You can see the crystal ball which one player will use as a game controller. The "Mystic" player will wave his or her hands over the crystal ball to generate magic power. The skull on the table is a tentative stand-in for the Ouija Board cradle which the "Medium" player will use to control progress in the spirit world.

Here's a shot of the gameplay:
home haunt game
Now, if we can only get it done before Halloween...

Quickly view HTTP headers

Found this little gem today. Web-Sniffer.net allows you to enter a URL and it will display the HTTP request and response header.

Friday, October 05, 2007

Thanks, AT&T

I just got this text message from AT&T: "As of 10/7/07, text messages sent to 505 area code will not reach you and sender will not be notified. Advise contacts of your new 575 area code."

Ah, such great service.

So, all you friends of mine who are subscribed to my blog: update your numbers for us in your address books to area code 575, please. Our other service providers are giving us a grace period of a year, so while you should update all your numbers for me, text messaging is apparently more urgent, since apparently, AT&T can't be bothered to forward you or notify you that I'm not going to get the text message you just sent.

Creating Accessible Flash Content

WebAIM has posted an article on making Flash content accessible. Widely it is asserted that Flash is accessible, but the reality is that it's not unless you make a Herculean effort to make it so. Thus, a how-to guide is good to have.

In addition, it has a good overview of general accessibility issues for any web content, not just Flash content:
  • Hearing disabilities
    • Provide synchronized captions for any audio that conveys content
  • Photo epilepsy
    • Remove strobing content that flashes between 2 and 55 times per second
  • Motor disabilities
    • Ensure the Flash content is keyboard accessible
    • Do not require fine motor skills
  • Cognitive disabilities
    • Give users control over time sensitive content
    • Provide easy to use controls and navigation schemes
    • Be consistent
    • Use the clearest, simplest language appropriate to the content
  • Low vision
    • Provide plenty of contrast
    • Allow the Flash content to scale to a larger size
  • Blindness
    • Ensure screen reader accessibility or provide an accessible alternative
    • Ensure keyboard accessibility
    • Do not interfere with screen reader audio or keyboard commands
    • Provide textual equivalents for all non-text elements that convey content or provide a function.
This list of accessibility items is always a good thing to look at when you are faced with a site that you need to update or design. Keeps you in check when you (or someone else) is looking to get funky with AJAX, general Javascript, or Flash on the web.

Tuesday, October 02, 2007

Flash "memory leak" in Director

For our current project, I've been trying to nail down what appeared to be a memory leak in Director with respect to Flash members. It's not technically a "leak," per se, but the end result is the same: memory gets allocated that cannot be de-allocated. After some investigation, here's what is going on.

I was using Flash members to store bitmap graphics for a project which required cartoony characters. These character graphics were 256x512 pixels in size, so I could either use 16k to store a Flash member that contained all the frames for the animation, or I could use 512k per frame of animation to store the bitmaps. No brainer, right?

Well, there's a problem. Apparently, if you use "the posterFrame" property of a Flash member, Director's engine will become unable to unload it. My guess is that this is because it is flagged as "changed" in the same way that a bitmap cast member cannot be unloaded after you change its image using its image property. I suppose this makes sense, because the posterFrame set would be lost if the member was unloaded.

So, basically, we have a situation where, if we store graphics in a Flash member and extract them via the posterFrame property, you can never unload them.

What to do? As with most things in Director, there is a workaround. Since the Flash member can never be unloaded when you set its posterframe, the trick is to not set its posterframe, but instead set the posterframe of a duplicate. Make a copy of the Flash member, yank the posterframes from that, and then erase it. The original Flash member can remain unloaded in this case, and the member which cannot be unloaded is instead erased. Here's the code:

on getFlashImage theMember, thePosterFrame

-- We can accept either a literal member reference, a string, or a number.
if (theMember.ilk = #member) then m = theMember
else m = member(theMember)

-- Duplicate the member, and set its posterframe
theTempMember = member(m.duplicate(), m.castlibnum)
theTempMember.posterframe = thePosterFrame

-- Grab the image
i = theTempMember.image.duplicate()

-- Erase the temporary member
theTempMember.erase()

-- Unload the original member
m.unload()

-- Return the image
return i

end getFlashImage

Friday, September 28, 2007

Smooth Move, NBC

So, my wife and I have been buying The Office (among other shows) on iTunes for the past two seasons. With a toddler, it was impossible for us to catch prime time television, so we had resorted to getting it online. It cost money, but we were willing to pay it to be able to watch the shows we were trying to follow on our own schedule in a convenient format.

Unfortunately, NBC recently threw a hissy fit with Apple about not wanting to, oh, have a reasonable, consistent price for digital media at the Apple Store. Apparently they think that their content should cost more than everybody else's content and that Apple should pay them more money for the right to deliver it. They took their ball and went home.

So, looking on the Apple Store for the new season, it's not there. I can't pay $2 an episode to Apple and NBC because NBC are being a bunch of petulant children. Instead, we go to NBC.com to watch it fer free!!! That'll show Apple, right?

Wrong. A show like The Office is all about comedic timing, and since you can't actually download the episode, out of some paranoid fear of who-knows-what, you have to watch it streaming. Except that their media player is crap, so it cuts out, stutters, and even fails, which makes the comedy fail. And their chapter browser doesn't even work - when we selected chapter 5 for the fifth time because the video cut out, it kept starting back at chapter 1. It stops being funny if you have to watch it several times in a row.

Indeed, I ended up thinking, while watching a frozen frame of two characters in mid-sentence talking to each other for several minutes, "You know what? This show isn't really worth the effort, even if it's free now." The extra hassle made what was once an enjoyable treat after the kid goes to bed into a frustrating experience which I eventually abandoned. I'm not going to follow The Office any more.

And do you know something else? The Daily Show actually IS on iTunes. And they let us download it (granted, with DRM, but that's never going to change so long as the content owners continue living in the fantasy land where they can hate and love their customers at the same time). So NBC just lost a paying customer. If we hadn't been forced to watch the painful first episode of The Office separately on NBC.com, we probably would have bought the season pass. But now, that cash is going to go to a different network. Apple's still getting their cut, NBC's not.

Bye, bye, NBC. Call me if you ever pull your head out of your ass.

Tuesday, September 11, 2007

9 JavaScript Tips You May Not Know | Ayman Hourieh's Blog

Ayman Hourieh has provided a nice overview of 9 JavaScript Tips You May Not Know. I knew almost all of these, but there were a few nuggets in there I thought were clever, such as the way to model linked lists with arithmetic, and the static local variables trick.

Preloading Both Images AND Scripts in Javascript

We've lately begun developing content for the iPhone and other mobile devices, so I'm starting to get into Javascript programming more.

For an educational game I'm building, I wanted to show a loading screen while the device is downloading all the script information over the slow EDGE network. Unfortunately, while there is a lot of information on the web about preloading images for faster response time in Javascript applications, there's not much about preloading Javascript scripts. In fact, I saw several "it can't be done" type responses.

It turns out it can be done, and quite easily, by leveraging the power of Prototype's AJAX calls. Because Prototype will eval() any AJAX response that comes back with a Javascript MIME type, you can essentially use it to deliver your scripts, rather than using the typical <script> tag, and provide a pretty download bar as it goes.

Here's some code:

//   asset_loader.js
// This object handles all the assets for the page.

// First, the master list of application assets to preload.
// All images are considered to be optional unless required is set to 1.
// All scripts are considered to be required unless optional is set to 1.

var assets = {

// List images here.
// Each image is an associative array with:
// id: an identifier
// url: a url to load the image from (can be relative)
// required: (optional) if '1', calls failure callback
// if there is an error loading this image
// (Thus, all images default to being optional.)

images: [
{ id: 'an_image', url: 'images/an_image.png' },
{ id: 'another_image', url: 'images/another_image.png' },
{ id: 'required_image', url: 'images/important_image.png', required: 1 }
],

// List scripts here.
// Each script is an associative array with:
// id: an identifier
// url: a url to load the script from (can be relative)
// optional: (optional) if '1', does not call failure callback
// if there is an error loading this script
// (Thus, all scripts default to being required.)

scripts: [
{ id: 'required_javascript_thing', url: 'javascripts/important.js' },
{ id: 'optional_thing', url: 'javascripts/optional.js', optional: 1 }
]

};

// The preloader object.
// This object handles the job of preloading everything.
// Usage:
//
// preLoader.startLoading( preloadSuccess, preloadFailure, preloadStatus );
//
// Where:
// preloadSuccess: the function to call when preloading was successful
// preloadFailure: the function to call when preloading failed
// preloadStatus: the function to call to report status of preloading in progress
//
// Scripts grabbed in this manner are eval()'d by Prototype.

var preLoader = {
errors: { images: 0, scripts: 0 },
errortext: '',
progress: 0,
startLoading: function( completeCallback, errorCallback, statusCallback ) {
this.success = completeCallback;
this.failure = errorCallback;
this.status = statusCallback;
this.loadNextImage();
},
loadNextImage: function() {
if (this.progress >= assets.images.length) {
this.progress = 0;
this.loadNextScript();
return;
}
imageObject = new Image();
imageObject.onload = function() { preLoader.imageLoaded(); }
imageObject.onerror = function() { preLoader.imageError(); }
imageObject.src = assets.images[ this.progress ].url;
assets.images[ this.progress ].image = imageObject;
},
imageLoaded: function() {
var perc = Math.round((this.progress + 1) * 100 / assets.images.length);
assets.images[ this.progress ].success = 1;
this.preloaderMessage( perc, 'Loading Images', assets.images[ this.progress ].url );
this.progress++;
this.loadNextImage();
},
imageError: function() {
var perc = Math.round((this.progress + 1) * 100 / assets.images.length);
assets.images[ this.progress ].success = 0;
this.errors.images++;
this.errortext += '<div>Error loading ' + assets.images[ this.progress ].url + '</div>';
this.preloaderMessage( perc, 'Loading Images', assets.images[ this.progress ].url );
if (assets.images[ this.progress ].required == 1) return this.failure();
this.progress++;
this.loadNextImage();
},
loadNextScript: function() {
if (this.progress >= assets.scripts.length) {
this.progress = 0;
this.success();
return;
}
this.ajax = new Ajax.Request( assets.scripts[ this.progress ].url, {
method: 'get',
onSuccess: function(transport) {
preLoader.scriptLoaded();
},
onFailure: function(transport) {
preLoader.scriptError();
}
});
},
scriptLoaded: function() {
var perc = Math.round((this.progress + 1) * 100 / assets.scripts.length);
assets.scripts[ this.progress ].success = 1;
this.preloaderMessage( perc, 'Loading Scripts', assets.scripts[ this.progress ].url );
this.progress++;
this.loadNextScript();
},
scriptError: function() {
var perc = Math.round((this.progress + 1) * 100 / assets.scripts.length);
assets.scripts[ this.progress ].success = 0;
this.errors.scripts++;
this.errortext += '<div>Error loading ' + assets.scripts[ this.progress ].url + '</div>';
this.preloaderMessage( perc, 'Loading Scripts', assets.scripts[ this.progress ].url );
if (assets.scripts[ this.progress ].optional != 1) return this.failure();
this.progress++;
this.loadNextScript();
},
preloaderMessage: function( perc, header, msg ) {

this.status( perc, header, msg, this.errortext );

}

};


...and here's a sample usage which tries preloading the given elements, and displays a "Failure" or "Success" message depending on whether the items were successfully loaded. (In practice, you'd probably not burn out all that innerHTML each frame, but this works as a demo.)

<html>
<head>
<title>Javascript Preloading Demo</title>
<meta name="viewport" content="width=320, user-scalable=no" />
<link rel="stylesheet" href="css/main.css" type="text/css" media="screen, tv" />
<script src="javascripts/prototype.js" type="text/javascript"></script>
<script src="javascripts/game_loader.js" type="text/javascript"></script>
<script>
// <![CDATA[
// Sample preloading code.

function initialize() {
preLoader.startLoading( preloadSuccess, preloadFailure, preloadStatus );
}

function preloadStatus( perc, header, msg, errors ) {
$('preloader-message').innerHTML = '\
<div style="text-align: center; font-weight: bold; color: #999; margin-top: 80px;">' + header + '</div> \
<div style="margin: 0px 20px; border: 2px solid #00f; position: relative; height: 16px;"> \
<div style="position: absolute; left: 0px; top: 0px; width: ' + perc + '%; height: 16px; \
background-color: #008;"></div> \
<div style="position: relative; text-align: center; color: #999;">' + msg + '</div> \
</div>';
$('preloader-error').innerHTML = errors;
}

function preloadFailure() {
$('preloader').innerHTML = '<div style="text-align: center;"><h1>Failed to Load!</h1></div>';
}

function preloadSuccess() {
$('preloader').innerHTML = '<div style="text-align: center;"><h1>Success!</h1></div>';
}
// ]]>
</script>
</head>
<body onLoad="initialize();" style="border: 1px solid #666;">
<div id="preloader">
<div id="preloader-message"></div>
<div id="preloader-error"></div>
</div>
</body>
</html>


If you're not using Prototype, this same principle could be applied using a standard XMLHttpRequest.

Update

Some notes on the usage of the above code. As is typical with eval()'ed code, objects that you create in the global namespace using the above method will not persist. Depending on how you've architected your code, you may not be able to just "drop in" your Javascript and have it work.

However, this is easily remedied. All you need to do is create an object that will persist, and then attach your objects and methods to that. (This is generally a good idea anyway, rather than cluttering up the global namespace.)

For instance, you might add, to the loading script code above, a global object called "app". Then, if you wanted to add a "mainMenu" object, do "app.mainMenu = { whatever };" Since app persists, so too would app.mainMenu.



Update#2

See Andrew's comment below for an alternate method for preloading scripts. (Thanks, Andrew!)

Monday, September 10, 2007

Update to Gordo

I've released a new build of our "Gordo" digital puppet which includes a new feature suggested by one of our users.

Basically, it extends the "keypress performance playback" control mode by letting you control Gordo using the keyboard (not the microphone) when a performance is not playing.

This way, you can have a prerecorded performance with a soundtrack that can be triggered with a keypress (say, for the introduction to a show), but you can still have Gordo interacting with your visitors while they are getting themselves seated.

If you try it out, let me know whether it works for you, or if you have any other troubles. Thanks!

Friday, September 07, 2007

Frosty: a New Digital Puppet in the Works

Here's a teaser for the new digital puppet I'm working on for ImaginEERIEing:
Frosty the Snowman
I hope I didn't scare off any of my fellow home haunters, but my wife thought that people would be interested in these puppets for the holiday season, too. As you can see, I've been working on a singing snowman with a top hat. I will probably name him "Frosty" for obvious reasons.

Question: What would you use a Christmas-themed digital puppet for? I know what Halloween-themed digital puppets are used for, so I can customize the controls and other features to the use that they'll be put to, but I'm less sure about what a Christmas-themed digital puppet would be used for. If I had an idea of how Frosty might be used, I could probably have a better feature set.

Tuesday, September 04, 2007

Gordo Available For Purchase

Well, the Gordo demo has been out for quite a while, and I haven't received any problem reports, so I've released Gordo for sale.
The Many Moods of Gordo
Gordo is our new digital puppet for 2007, a new addition to our existing line-up of Yorick and Mirror digital puppets. It's a haunted pumpkin that has a friendly, tot-friendly side and a corrupted, angst-ridden-teen-friendly side. You can spook or delight your visitors, or do both - Gordo can switch between modes instantly to accommodate all your visitors.

There is a free demo you can download to try it out. The full version is $15.

If you like Gordo, or Yorick, or any of our offerings, I'd appreciate it if you spread the word a bit to your fellow home haunter friends. We're not getting rich off this; it's just helping to offset the costs of our own home haunt each year.

And, as always, if you use Gordo in your home haunt, please send us a link where we can check out videos or photos of it in action - we're always amazed at the creative uses people put our products to.

Happy Haunting in 2007!

Monday, September 03, 2007

The Perils of Virtual Playtesting

I thought I was so clever.

For the Carnival of Souls Board Game I released yesterday, I had done a fair amount of playtesting, so I was pretty confident that the game balance was pretty good.

However, the playtesting was done by myself using a small Javascript application that modeled the game, and allowed me to run through many playtests quickly.

We played the physical game "for real" for the first time tonight, and one thing is clear: virtual playtesting doesn't get you all the way there. While the game balance was right on, with the game coming right down to the wire, it was the physical game components that bogged the game down and needed work.

It's a good object lesson that the "twiddly bits" of a game are not merely conceptual, but need to be experienced to understand their impact on the gameplay. You just can't tell what the tactile experience of the game will be until you play it.

In the case of Carnival of Souls, I have a lot of little chips representing different resources, which you earn every turn. Then, you spend them every turn to take on different challenges. This means that whoever is banker ends up shuffling these little chips around incessantly, which became rather annoying to that player.

The fix, I think, is to introduce character cards, a'la Arkham Horror, which have little sliders for each resource type, so that each player can keep track of his or her own resources, and eliminates the need for a banker. (In the interim, until I release a fix, you may want to track your resources on paper if you decide to play the game.)

I also learned some other things about the physical game, such as the need to print out and assemble more than one of each die. They were being passed around too much. (If you decide to play, print out the die sheet two or three times and assemble more dice.)

On the flip side, there were some pleasant surprises. It was the first time the boards had been assembled together, and it made for a nice little layout. The crypt doors and the gravestones worked better than I thought they would, because they had a nice tactile feel to them; I might change the others to be similar, so that you're flipping things over in all cases.

On the whole, the game worked pretty well. I still need to come up with a mechanic that makes the end of the game not end up having so many turns of just trading in resources for other resources. I have a few ideas about that, but the game is still pretty well balanced, so it still works as a good diversion, I think. I enjoyed it.

If you play the game, let me know what you think.

Saturday, September 01, 2007

Carnival of Souls Board Game

Carnival of Souls Board Game Logo
Continuing the tradition of releasing other fun things for our Halloween visitors besides candy, we've made a fun board game about the Carnival of Souls that you can print out and play at home.

It's a cooperative, rather than competitive, board game, where the players take on the roles of the spirit guardians who defend the mortal world from the evil ghosts of the vile Blackwood family, who seek to slip out of the spirit world and plunge us into a nightmare world of darkness. With the help of Madame Sarita, the players work as a team to defeat the forces of evil, taking on challenges like fighting werewolves, befriending the Magic Mirror, and exploring the Blackwood Family mausoleum.

We're releasing a draft of it now in hopes of some people trying it out and letting us know how it plays. We're going to be handing out URL's at Halloween where people can come and get all sorts of information about the Carnival of Souls, and the board game will be one of the site's offerings. If you try it out, please let us know how it works, whether good or bad.

Enjoy!

Sunday, August 19, 2007

I Phone

I got an iPhone today. This is a big thing, because not only is it the sexy cool, but also because, up until today, I have managed to live my life without a cell phone at all. I've eschewed the little buggers all this time, watching other people get tied down and tripped up by them as friends call in the middle of conversations, classes, movies, etc. I've watched people merrily jabbering away on them at restaurants, completely ignoring the person across the table from them. I've watched people turning into complete fools when it rings, freaking out trying to find where it is. I've watched people start driving like drunk monkeys as soon as they hold the phone to their ears. And the one time I borrowed my wife's cell phone while going out on an errand, I got three calls (for me!), all of which added extra errands to my trip. I haven't seen a lot to advise for it beyond emergency situations.

I admit it. I'm an introvert at heart. I don't particularly enjoy being connected to someone every moment of the day. I like holing up in my office and pounding away on some code, or curling up on a weekend with a good book or other personal project. Cell phones, to me, do not appear to respect this human need for disconnectedness. And here I am, buying a cell phone today.

Why? Because it's an Apple product. It's not that I'm so fanboyish that I had to have it because of the brand. Actually, it's the other way around - I like Apple because they consistently meet my expectations with grace, simplicity, and an eye to integrating into my lifestyle. I spent some time with the demo model iPhone today and convinced myself that the iPhone is no exception, and down plunked the cash. I'd always suspected that if anyone could lure me into the world of worrying about roaming charges and checking my personal gadgets before movies start, Apple could. It looks like I was right. I knew it within minutes of picking it up - this is not my wife's clunky cell phone. It's art. It doesn't have everything I want (cough cough API cough), but it's a quantum leap beyond every other cell phone I've seen, and that's enough. And I know how to write web apps, so I'll be able to do plenty of stuff with it.

Still, I'm going to make a conscious effort not to let having a cell phone change my life. I'm going to stick it away and ignore it sometimes to keep my sanity. So, those of you who know me may be able to start ringing my cell. Just don't get annoyed if I don't pick up all the time - it's nothing personal. I could just be reading a book.

Tuesday, August 14, 2007

ImaginEERIEing.com opens its doors

Thanks to Apple's new domain name support, I can now host my haunt-related stuff on its own separate domain, and have the digital puppets not look like such a fly-by-night operation.

Introducing: imaginEERIEing.com.

As part of the launch celebration, our new digital puppet for 2007, Gordo is now available for download as a demo version.

It has not been extensively tested yet, and this is why it's not available for purchase yet. I hope to get some feedback and testing done on it over the next several days, after which point, Gordo will become available for purchase. If you try out Gordo, please drop me a line and let me know how it works for you. Gordo has a higher-resolution model than Yorick or Mirror, so it will probably demand higher system requirements than the other puppets did.

Speaking of our other puppets (Yorick and Mirror), they are still available and have their own pages on the new site.

Enjoy, and happy haunting!

Sunday, August 12, 2007

Gordo, everyone. Everyone, Gordo.

Here's a preview of the next digital puppet we're brewing up at ImaginEERIEing for 2007...
Image of Gordo
His name is...Gordo.

(If you're interested in helping out on the beta test for Gordo, drop us a line.)

Tuesday, August 07, 2007

.Mac upgrade

Well, Apple just gave me a big gift today. Not only did they drastically bump up the bandwidth and file size limits for my web site hosted with .Mac, but they also added support for domain names, so I can finally start working on a more professional site for our haunt products.

Just in time for the haunting season, too - my peak bandwidth time. Thanks, Apple!

Tuesday, July 24, 2007

There is no Fold

I have recently been called to account, in two separate occasions, for a link on a web page being "below the fold."

"Below the fold" means roughly "below the visible part of the page when it first renders." Or, "stuff you have to scroll down to see." There is an urban myth going around that you shouldn't put anything of any remote importance "below the fold," because, apparently, the web is rife with drooling morons who haven't been able to get the scroll bar to work.

The problem is that a lot of non-web-designers have somehow got it into their head that this is the ultimate litmus test on whether you have a good page design: are there any links they like "below the fold" as it is rendered on their personal computer? If so, well, why don't you go back and redo that page?

The problem with this is that there is nothing you can say to this without sounding defensive or uncooperative. If you say, "well, it's not below the fold on my computer," you're being flip. If you say, "if your content is good, they'll scroll," you're just saying that to avoid doing work (as if moving a link up the page is some Herculean task).

That's why I was glad to see this article about the myth of the fold line.

It actually goes over the research that examines the validity of the "below the fold" argument, and the research is pretty damning. Not only has research shown that scrolling been pretty much universally understood since the late nineties, but there is also evidence that the vast majority of users actually do scroll down web pages.

One juicy tidbit is that there is no fold. When you make the argument that it's dumb to base design decisions on the fold since there are so many factors that influence its position (browser, OS, browser features, browser settings, device, screen resolution, default font size, etc.), you get the argument "yeah, there will be a few pages that don't, but you can take the fold location that most users have." However, research shows that this percentage of users is about 10%. In other words, if you plan your page layout for a specific fold line, only 10% of users maximally will see that optimal design. Even if you lump in fold lines that are close together, you only account for 26%. There is no such thing as a fold line for "most" users.

But the best part of the article, actually, was in what one of the commenters on the post said. She pointed out that every novice user she's introduced to the web intuitively began scrolling without any problem, but she always sees them "back right out from a visual overload without thinking to seek lower." That's the real point here. By embracing this "fold line" nonsense, we may actually be driving people away because bad, cramped design does more to deter users than having to scroll to get to information.

Now, how do I get these armchair web designers to read this article?

Wednesday, July 18, 2007

Chore Wars

Chore Wars is a great example of using a gaming aesthetic to improve the experience of a non-gaming activity.
Chore Wars Splash Page
Say you are living with a bunch of roommates. You all create characters on Chore Wars, and together create a set of "adventures," such as taking out the trash, doing the dishes, folding laundry, etc. Each adventure has an associated experience point award roughly equal to the number of minutes it takes to do the activity.

As your roommates do their chores, they gain experience points, and start leveling up. The character class mimics the types of chores done - for instance, someone who does a lot of heavy lifting chores, like moving furniture, will become strong like a warrior, while someone who does a lot of "smarts" chores, like balancing the checkbook or paying bills, will become smart like a wizard.

Even better, you can assign fun treasures and monsters to each adventure for a little bit of fun.

The resultant mechanic is no different than just keeping a spreadsheet of chores, but it's much more interesting this way, and provides a built-in competitive incentive to do chores. And by letting your roommates measure the chores done, you can easily tell who should have to clean up the dog vomit in the middle of the living room floor...

Friday, July 06, 2007

Full Performance of Madame Sarita's Spirit Parlour 2006

I've just uploaded the full performance of Madame Sarita's Spirit Parlour 2006 to the ImaginEERIEing site.
Dark Powers of the Earth threaten Marius Blackwood and Sarah Beaumont
This year, things take a darker turn as Sarita, desperate to stop Marius's evil plot, is forced to make a pact with the Dark Powers of the Earth.

Thursday, June 28, 2007

Bug Fix in the Code Thumbnailer

It came to my attention that there was a bug in the Code Thumbnailer code that was up on my Shockwave 3D Developer's Guide page. It doubled-up the type names on the thumbnails, instead of showing it once, and then including the rest of the member name.

Anyway, it's been fixed on the thumbnailer page. The updated version will also be included in the next release of the MVC Framework which I'm working on.

Sunday, June 24, 2007

Interesting Site Statistics

I've been tracking my site statistics using Google Analytics and StatCounter for quite a while now, and I sat down tonight to really look at some of the data. It's quite interesting. Here are some fun facts about the traffic my site receives:
  • Microsoft ain't doing so well. Internet Explorer browsers only make up half of my pageviews, which is quite a bit lower market share than I had been led to believe. The other half is made up of Firefox at around 40%, and Safari taking the lion's share of the remainder.
  • Moreover, MSN search yields the merest pittance of page referrals compared to Google and Yahoo. MSN referred about 1% of pages that came in via search engines. Google referred 80%, and Yahoo about 18%. Also, MSN appears to be the least able to connect people with relevant content, because MSN yielded the lowest pages viewed per referral out of all the major search engines. (For example, AltaVista, which referred about the same number of visitors to my site, generated over five page views per visitor on average, while MSN generated barely over one. In other words, AltaVista connected me to people who were actually interested in my content, while MSN connected me with people who immediately left.)
  • If browser hits are to be believed, Mac is gaining market share. According to the browser agents, at least 12% of my traffic is coming from Macs. Granted, Mac types may be more attracted to the creative stuff featured on my site, but none of the listed incoming traffic keywords have anything to do with OS platform stuff except for searches that either list my domain (people typing my URL) or looking for software (Magic Mirror for Mac).
  • Only 20% of my traffic comes from search engines, which means that the remaining 80% of traffic comes from direct links - either people actively bookmarking my site or clicking on a link on a web page somewhere. In fact, 25% of my site visitors have no referring link, which I am guessing means bookmarked locations or referred to from other sources, like an email client.
  • My "depth of visit" statistics are odd. The graph looks like your typical falloff chart with a lot of one-page visitors, less two-page visitors, even less three-page visitors, etc. But I get a spike at the end of the chart with a lot of visitors visiting 20+ pages. Now, that's probably the effect of the "long tail" talking, but I also get a spike around 9 pages, and another spike around 16 pages. Somewhere on my site, there's about nine pages of content of interest to a group of people somewhere, and another set of sixteen pages of interest to another group of people. My guess offhand is that my ImaginEERIEing site is the sixteen, and my Shockwave3D Developer's Guide is the nine. (My home haunt page has about 30 subpages, half of which is tours of previous years and the other half being how-to's, and my Shockwave3D site has eight subpages.) I think that means that when someone finds my site who is interested in the content I offer, they consume all of it, but maybe that's reading too much into the data.
  • However, the above assumption is supported by the fact that almost 6% of my visitors spend more than an hour reading my site when they come. That's good - it means that trying to have a detailed, content-rich site is worth the effort, because people are reading it.
  • Finally, I have a pretty international audience. Only 70% of my traffic comes from the U.S. That surprised me, since I have a lot of content that is not only solely available in English, but also concerns a largely American holiday: Halloween. Still, I get a lot of hits from Asia on my Shockwave3D stuff, and I get hits from Europe on my Arkham Investigations stuff. (This latter content actually includes some localized content, thanks to the efforts of some fellow Arkham Horror fans.)
Anyway, hope you found some of these statistics interesting. I think other people who have their own web sites should share stuff like this. Do you have any interesting tidbits in your server logs to share?

Saturday, June 23, 2007

New Arkham Investigations casebook: Whispers in Darkness

A new Arkham Investigations casebook is available on the Arkham Investigations web site.

Based on Lovecraft's story The Whisperer in Darkness, the case is called Whispers in Darkness. When a torrential rainstorm brings to light a deadly mystery, you will travel to the Vermont countryside to face otherworldly horrors that lurk around the Akeley farmhouse.

It was originally written in Italian by a fellow Arkham Horror fan named Jocularis. The English version is available from the casebook archive.

Tuesday, June 19, 2007

Winding down the "Double Creature Feature"

The "Double Creature Feature" ACE/NETC Conference has wound down, and boy, are we exhausted. Being the host state for a conference of about 500 communications professionals and the IT professionals who support them can wear you out! Despite the rather impressive battery of sessions available, I was only able to attend about three, since I was proctoring, monitoring, and troubleshooting for the rest of the conference. However, there were still many highlights:
  • Awards Banquet - While we had a slow year in the ACE awards for projects, the New Mexico crowd picked up three of the Professional Skill awards. Me, my wife, and our former boss all came home with best-of-discipline achievement awards, and it felt pretty great to have the appreciation of your peers. (Our boss's award in particular was good, since his contribution to the ACE organization has been very high, and the excellence of everyone in our department that picked up awards is directly tied to his unceasing support for continued professional development. I don't believe he is going to get recognized for those accomplishments in his home state, but I think it speaks more coming from a professional organization, anyway.)
  • Attendees - The attendees at ACE/NETC, almost to a person, were friendly, knowledgeable, clever, and sharp. I enjoyed almost every conversation I had with people, and that's saying something coming from an introvert like myself. And they all seemed to be having a great time - I often heard that this was the best ACE/NETC conference yet. It feels great to put on something that makes people happy and which they appreciate; it's the same feeling I get when we do Carnival of Souls.
  • Sessions - I didn't get much time to just go to sessions and listen, but I did manage to see firsthand some great sessions. My clear favorite was presented by Alessandro A. Bellina, from University of Illinois Extension, speaking about AJAX. It's not that AJAX is this new thing to me, but the web crew from Illinois are one of the few web groups I've seen in ACE/NETC that really are doing some well-designed and well-thought-out stuff. They don't just mash tech together for the propeller-geekery of it, as certain groups that attend ACE/NETC appear to do, but instead are putting real thought into solving problems effectively. I saw them present on their custom CMS for the Illinois Cooperative Extension System years ago and was mightily impressed - in fact, their vision of a CMS solution has highly influenced some of the solutions I have built since then for NMSU. It was great to see what they were up to, and I'm gratified to discover that we're doing a lot of the same stuff now.
  • El Pinto – The night we all went to El Pinto was nice. Great weather, great food, great music, and a chance to go visit where my wife and I tied the knot 10 years ago. It was fun.
  • Hanging with the crew - I spent a lot of time sitting around talking with people from work at this conference, and it was a lot of fun. It was fun chatting with people between sessions or around the impromptu Guitar Hero party in the hotel atrium one night. It served as a powerful reminder that I work with some really awesome people, and it struck me (as it often does) what a value it is to truly enjoy the people you work with.
All in all, it was a success, and everyone seemed to enjoy it. We're off the hook for hosting now for about 40 years. Yay!

Wednesday, June 13, 2007

Introduction to 3D Game Scripting

I've added a twenty-three-page tutorial to my Shockwave3D Developer's Guide page called Introduction to 3D Game Scripting.

Thumbnail of first page of 'Introduction to Low-Polygon Game Asset Texturing
It takes the new or novice Lightwave user through the process of exporting Lightwave content to Shockwave3D format for use in Director, and using my Model-View-Controller Framework (below) to begin adding interactivity to 3D scenes.

This document was uploaded in preparation for my presentation on the development of Science Pirates at the ACE/NETC "Double Creature Feature" Conference we're hosting in Albuquerque this coming weekend. If you'd like to learn more about developing Shockwave3D games - or any other aspect of communications from web to print to video (see the massive list of sessions) - it's not too late to register and attend!

El Paso Times article on our games lab

The El Paso Times ran an article on NMSU's Learning Games Lab today.

Tuesday, June 12, 2007

Introduction to Low-Polygon Game Asset Texturing

I've added a fifteen-page tutorial to my Shockwave3D Developer's Guide page called Introduction to Low-Polygon Game Asset Texturing.

Thumbnail of first page of 'Introduction to Low-Polygon Game Asset Texturing
It takes the new or novice Lightwave user through the process of texturing 3D geometry, with a particular emphasis on UV mapping objects for 3D games built with Shockwave3D. You do not need to have Director to follow along with the tutorial, but you do need Lightwave.

This document was uploaded in preparation for my presentation on the development of Science Pirates at the ACE/NETC "Double Creature Feature" Conference we're hosting in Albuquerque this coming weekend. If you'd like to learn more about developing Shockwave3D games - or any other aspect of communications from web to print to video (see the massive list of sessions) - it's not too late to register and attend!

Scream in the Dark Updates

Scream in the Dark is hands-down the coolest of any home haunt projects I've seen. While it doesn't have budget, and most of the "scares" are apparently store-bought props, the cool factor comes from a lone guy building a an honest-to-god garage dark ride for his daughter and the neighbor kids. Today, I found out that since the original article was posted, he's sent in some updates and photos from subsequent years of Scream in the Dark.

If I had the energy and technical know-how, there would be one of these at Carnival of Souls.

Friday, June 08, 2007

Introduction to Low-Polygon 3D Modeling for Games

I've added a twelve-page tutorial to my Shockwave3D Developer's Guide page called Introduction to Low-Polygon 3D Modeling for Games.

Thumbnail of first page of 'Introduction to Low-Polygon 3D Modeling for Games'
It takes the new or novice Lightwave user through the process of creating 3D geometry, with a particular emphasis on creating objects for 3D games built with Shockwave3D. You do not need to have Director to follow along with the tutorial, but you do need Lightwave.

This document was uploaded in preparation for my presentation on the development of Science Pirates at the ACE/NETC "Double Creature Feature" Conference we're hosting in Albuquerque next weekend. If you'd like to learn more about developing Shockwave3D games - or any other aspect of communications from web to print to video (see the massive list of sessions) - it's not too late to register and attend.

Thursday, June 07, 2007

George W. Bush as an Arkham Horror Investigator

In honor of the release of King in Yellow, I figured I'd go ahead and release a custom investigator I designed that is strangely appropriate for the occasion. Introducing George W. Bush as an Arkham Horror investigator:
George Bush as an Arkham Horror Investigator
Click to Enlarge

Note that you will need both expansions to play with ol' George here. (I guess there just wasn't enough evil in the base game to accommodate him as a character.)

I didn't write the back story because, well, I think we sadly all know the back story by now, eh?

Wednesday, June 06, 2007

The King in Yellow rises

Hastu...

Whoops, don't say his name.

The "King in Yellow" has arrived. According to the online store, anyway, the latest expansion for Arkham Horror is hitting the streets as we speak.

According to the prereleased rules, this expansion adds some cool new mechanics, such as heralds (sort of a sidekick for the Ancient One) and blight (a mechanic to add some real teeth to the Terror Track, something that's been needed for a while).

Overall, it looks like a sweet expansion which will add interesting new challenges to the core gameplay. I'll be picking this one up as soon as I see it on the shelves.

Friday, May 25, 2007

Nostalgia Games: Dungeon

I played Dungeon with someone else only a handful of times. The time commitment to play, plus the large space needed and the (relatively) complicated rules left it out of interest for most of my friends. But that was okay, because unlike Creature Castle, Dungeon lent itself to solo play, so long as you didn't care much for objectives; instead, I just tried to get as many treasures on the map as I could. As a simplified version of Dungeons and Dragons (it was even published by TSR), it basically involved controlling an explorer who would gradually grow in power and be able to descend into deeper levels of the dungeon and face ever-stronger monsters.

There were several versions of the game. I'm not sure what the differences were between the different printings, but the one I had was the one which looked like this:

Dungeon Board Game

I remember keeping a little notebook tracking my accomplishments in this game, in trying to assess the likelihood of winning and seeing which character was the most efficient. I quickly got bored with that, though, and instead came up with new treasures and new monsters that you could fight, and new spells the wizard could cast. This was probably the most extensive game board modding I did as a kid.

Monday, May 07, 2007

IE 8 to require web designers to "opt in" to standards compliance

Microsoft is saying that IE 8 will have better standards compliance, but will require web developers to "opt in" to standards compliant page rendering.

First of all, why the #%@!? is Microsoft still planning on making a browser that intentionally renders HTML wrong?

Second, why the #%@!? is Microsoft going to make it not default to rendering pages correctly?

And finally, why the #%@!? is Microsoft going to make web developers add even more cruft to their web pages to support their design flaws?

Damn!

Don't get me wrong, I'm glad to hear that we will be able to flip a switch that says, "Oh, and tell Internet Explorer to not suck (as bad)." That is much better than having to deal with guillotines and peekaboos for hours and hours.

But really, when are they going to grow up and not assume that all web developers have the time, patience, and willingness to treat their browser as a special case? Suck it up, Microsoft! Admit your software was crap, and fix it. Don't let it continue to sit there broken, and don't force us to learn even more ways in which we have to treat IE as a special case when making a web page.

If some web developers opted to write broken pages to look nice in IE but which totally break when rendered in standards compliant browsers, then it's their own damn fault for betting on the wrong horse. Let them take on the burden of opting in to the broken renderer of IE 8.

Fix the software, Microsoft. Make it work correctly by default. Don't give us an endless stream of Backward Com-crap-ibility.

Friday, May 04, 2007

Nostalgia Games: Creature Castle

Being the only kid in the house meant that two-player games didn't do much good for you. Still, Creature Castle provided hours of entertainment for me. When I saw this photo of the game board:

Creature Castle Board Game

...I remembered not only the hours I spent drawing my own versions of the creepy monsters in the castle (the mad scientist and the executioner were my favorites), but also a vague recollection of having adapted the rules to work as a one-player game. The one-player rules were nothing clever - basically, I played the role of two players, with one player being "the good guy" and the other player being "the bad guy" to see who would win - but I remember being pretty proud of myself for having figured out a way to play it one-player. I do have a vague recollection of expanding the rules in some fashion, but those innovations are lost in time to me now.

Wednesday, May 02, 2007

New Arkham Nights version available

French Hill Streets Booklet
I've just uploaded a new version of Arkham Nights, my expansion for Arkham Horror which adds encounters to street locations.

This version changes the way the casebook is organized. Instead of having all the location encounters in a single casebook, there are now individual half-size booklets, one for each street location. This reduces the space needed on the table for them, allows multiple players to manage their encounters at once, and generally adds more fun and atmosphere to the game than the original, thanks to the stylized nature of the booklets. (They also match the Tomes expansion.)

This version also fixes a few typos and fixes the card sheet which was printing out at the wrong size.

You can get the new expansion at the Arkham Investigations site.

Monday, April 30, 2007

Foldable Tomes release

De Vermis Mysteriis
I've released the "foldables" version of Arkham Book Club, which gives you a cool foldable tome booklet to replace each tome in the core Arkham Horror game. These little babies are more fun, more atmospheric, and easier to use than the original casebook release, so be sure to check them out.

You can get them at the Arkham Investigations casebook page.

Saturday, April 28, 2007

Nostalgia Games: Haunted Mansion

By far, the coolest board game I ever owned as a kid (yes, even cooler than Mousetrap), was the Haunted Mansion board game. Okay, yes, I'm a sucker for all things Haunted Mansion. But I think this one was cool even without that added bonus.

Haunted Mansion Board Game

What was cool about this game was that the board had a series of gears underneath it which rotated circular parts of the game board, changing the paths you can take to the exit. In addition, attached to the circular parts were ghostly standees that hung out over the edge of the circle, which, when turned, could swing around and knock your pawn off of its place. This was particularly well-suited to the ballroom-dancing ghosts from the ride, for instance. For a kid's game, it had some pretty fun mechanics, and worked quite well with the theme. Add to that the spooky stand showing scenes from the interior of the mansion, and you have a creepy little experience. I wish I still had this one - it would probably fetch a pretty penny on eBay, but I don't think I would sell it.

The new Cthulhu Movie

Maybe this is the one, I thought to myself when I heard that a movie named Cthulhu was filmed and working its way through post production. There have been many adaptations of Lovecraft's work to film, but there has yet to be one which is faithful to the narrative (with the possible exception of this fan-created movie).

So I went to the IMDB page for it, and without even seeing the movie, I think I can safely say that it's probably not going to fare much better than its peers. Here's why:
  • Unknown, first-time writers
  • Unknown, first-time director
  • Tagline: "Welcome home...to the end of the world." (Huh?)
  • The plot summary includes the words "...with whom he has a long-awaited tryst." Since when do Lovecraft stories have romance aspects to them?
  • Plot keywords are: Cthulhu, Horror, H.P. Lovecraft, Gay, and Queer. Since when do Lovecraft stories have gay romance aspects to them? (I'm hoping this was a miscategorization.)
  • Two words: Tori Spelling.
Yup, it's gonna be a stinker. Why won't someone do it right? The closest I've seen is Dagon, but even that could have been much better. It's probably just as well, really, since Lovecraft's horrors are probably better left undefined.

Nostalgia Games: Which Witch?

While poking around BoardGameGeek recently, I stumbled upon some games that I had owned as a kid which I had totally forgotten about. Over the next couple of days, I'll be posting about them, just to take a little walk down nostalgia lane. (You may notice a common theme to the games I had growing up, which may help explain a few things.)

The first "blast from the past" game is Which Witch?. I had totally forgotten about this game until I saw this photo:

Which Witch Board Game

This was a fun little game wherein hapless visitors to a haunted house try to go through all four hazardous rooms and climb the stairs to the attic. The game was largely lame, except for the single fun mechanic where you were prompted to occasionally drop the little metal ball down the chimney. The chute split into four directions, which would send the ball down into one of the four rooms, in all likelihood triggering a trap. If your pawn was standing in the wrong place, the trap would hit it, and bad stuff happens to you. The only real reason to play the game was dropping the ball to see what happens. Would it come barreling down the stairs to the attic, knocking down the player who is about to win? Would it hit the broom, or trigger the secret door? Who knows?

Of course, it's just a random event like anything else in these simple kiddie board games, but the kinetic, visceral nature of this random event was immensely more satisfying than the notion of rolling a die. I recall spending quite a bit of time experimenting with the chimney to see if dropping the ball a particular way influence where it came out. Turns out there wasn't, but dropping the ball was fun enough that it kept me occupied for a good while.

Friday, April 27, 2007

Advanced Lingo For Games released for free

Gary Rosenzweig, a skilled Director developer and active online community member, wrote a book called Advanced Lingo for Games back in 2000. The book is now out of print, and the copyright has reverted to him, so he put Advanced Lingo for Games up on the web to read for free.

The title is a bit of a misnomer, I believe, since it seems to bring newbie Director game developers up to an advanced level, but it has a lot of examples with full source code, and includes downloadable projects for your own use. Some of the content is no longer applicable to current Director development, but it looks like it will give a hobbyist who is just starting out a step up.

Kudos to Gary for being so generous with his book!

Want some Bhut Jolokia?

Bhut Jolokia
The NMSU Chile Pepper Institute is going to be selling the world's hottest chile pepper, the Bhut Jolokia, at their Annual Spring Plant Sale starting on Monday at 9:30am in Gerald Thomas Hall room 265 on NMSU's Las Cruces campus. It costs $5 per plant. (For more information on the world's hottest chile, see Saga Jolokia - Searching for the new "World's Hottest Chile".)

In addition to the Bhut Jolokia, they will be selling all sorts of other chiles for $2.50 a plant, along with varieties of tomato and cilantro. So come out and support the Chile Pepper Institute and get some delicious salsa fixin's, too!

(For my Las Cruces friends, if you want me to pick up some plants for you, just drop me a line. Otherwise, for more information, call 505-646-3028.)

Wednesday, April 25, 2007

Clever Javascript techniques

Seven Javascript Techniques You Should Be Using Today is an interesting little article where I picked up some clever tricks I didn't know before, such as this clever little gem for using a double-bang to read and store a flag so you don't have to keep checking for DOM capability:

var w3 = !!(document.getElementById && document.createElement);

The article contains clever little blips like that and also some more design-patternsy stuff to help you constrain scope and write more efficient code. A good read.

Wednesday, April 18, 2007

Foldable Tomes

De Vermis Mysteriis
It figures. Only after releasing the Arkham Book Club casebook do I really get an idea for replacing the tomes in Arkham Horror with a more fun mechanic.

These foldable tomes replace the tomes in the core Arkham Horror game. When you draw a tome during play, discard the tome card and pick up the foldable tome instead. The foldable tome allows your character to pore over its mysteries for days, learning spells and unique skills peculiar to the individual tome.

The link above shows the first draft of two tomes: Ludwig Prinn's terrible De Vermis Mysteriis, and the strange and alien Dhol Chants detailing a visit to the awful Plateau of Leng. More to follow.

Monday, April 16, 2007

Arkham Book Club

I've just released a new Arkham Investigations casebook called Arkham Book Club.

The idea for this casebook is to give the tomes in Arkham Horror a stature more in line with tomes in Lovecraft's literature. In the original stories, tomes were the source of dark spells for summoning awful creatures, and the source of knowledge for scholars opposing them. This casebook adds some mystery and power to tomes, giving a unique character and story for each one, and a set of new spells and skills that can be derived from them. You can get the new expansion from the Arkham Investigations casebook page.

Here are some teasers from the expansion:

Lambency of Yith spellLifting of Darkness spellLight of Madness spell

Thursday, April 12, 2007

New Arkham Investigations tidbits

The last few days have seen a few new items added to the Arkham Investigations site:
  • Version 1.3 of the rules set has been uploaded. This version tweaks some of the multiplayer combat rules, and clarifies some other aspects of the game. (Thanks to Thelric, maker of Strange Eons, for the suggestions.)
  • A new version of the Cthulhu casebook is available which fixes some minor bugs and typos. (Kudos to Thelric for this one, too.)
  • The German version of Arkham Nights: Street Locations is now available (thanks again to Stefan).

Thursday, April 05, 2007

It passed!!!

Neph does a happy dance. It looks like Spaceport America is coming. The spirit of JFK's race to the moon lives on in the populace of New Mexico.

Of course, as close to oblivion this project came with this vote, this was the easy part. Now comes the real challenge. We have the resources and will in place, but now we have to actually do it. Now that we've decided to do this thing as a state, I'm hoping the opponents and proponents can come together and try to make it work. I think we all understand that this is a financial risk for the state, and that if it fails, it will cast a long shadow over future economic development of any sort. No one wins if we build it and no one comes.

So please continue supporting the aerospace industry in New Mexico however you can. Most of us don't have much opportunity to make a difference directly, like we did on this voting measure, but we do have some small ways to help. Make sure to attend the X Prize Cup and related events when they occur, and support the advertisers and sponsors of aerospace events - especially local ones. Teach your kids about the space program, and generally stay in touch with the space effort. The sooner the space program becomes part of our state's identity, the stronger base we'll have to build upon moving forward.

And if you voted for the measure, thank you! This was a very close election, and your vote mattered. If you ever watch a spacecraft lift off from the New Mexico desert, think back - it all could have easily ended right here in a whimper.

Wednesday, April 04, 2007

Down to the Wire!

Wow, the Spaceport America vote here in New Mexico is going down to the wire. Last night, it was looking like the anti-Spaceport crowd was going to have their way and end New Mexico's chances at playing a part in the future of space exploration and cashing in on math and science industry benefits for our kids' education (25% of the tax proceeds will go to aerospace-based math and science initiatives in our area schools).

But in the evening counting, the pro-Space vote pulled ahead. It's now almost neck-and-neck with 50.6% for and 49.4% against, a difference that is less than 541, the number of provisional ballots cast. We have a 204-vote advantage, so it's looking good, but it's too early to call. This is one close race.

It's also a pretty emotionally charged race. When one of the NMSU administrators endorsed the measure (a reasonable thing, I think, considering the measure provides direct funding for education AND practically guarantees an injection of students in aerospace topics), we had some rather nasty-toned emails go out in opposition.

I won't go so far as to say there are no reasons to vote against the measure. There are legitimate gripes, such as questioning the environmental impact of a spaceport and wondering how much risk this project entails when compared to the possible competitors to Spaceport America. What strikes me about the arguments against the measure is that they all come down to a risk-versus-reward question, and those opposed seem to think that there is negligible reward to a spaceport.

I guess I can understand that, if you discount the increased math and science school funding (something that is desperately needed across America as a whole, but in our communities in particular), because not everyone really appreciates that this isn't (entirely) about taking a risk to create high-paying jobs here. It's not merely about growing a completely new industry for New Mexico. And no, it's not about Bill Richardson's bid for the presidency (lots of people have been working for a very long time to bring this project to fruition, thank you very much - this is not a recent marketing stunt).

Spaceport America is about New Mexico having the courage to embrace man's greatest adventure: space exploration. Yes, there's risk. Yes, it's hard. Like JFK said in perhaps the greatest, most adventurous political speech of our times,
We choose to go to the moon in this decade and do the other things, not because they are easy, but because they are hard, because that goal will serve to organize and measure the best of our energies and skills, because that challenge is one that we are willing to accept, one we are unwilling to postpone, and one which we intend to win...
I want New Mexico to step up to the plate and commit itself to trying to reach for the stars. We're a great state, filled with great people, but for too long, we've languished in the shadow of low achievement, low expectations, and lack of courageous vision. Space exploration is one of those things that can serve as an identity for our state, redefining us as a cutting-edge, tech-smart state, in the same way the film production initiatives are paying social and economic dividends on the creative side. We can be known for this if we have the will to embrace it.

But the real value, for me, comes from the personal aspect of brining space travel here. It will be well worth one cent on every four dollars to watch my son grow up in a school with strong math and science programs, with great local opportunities for field trips and guest speakers. It will be worth it for my son to feel connected to the space program growing up, rather than it being some otherworldly thing that you see detached exhibits about at the Smithsonian Air and Space Museum when you visit D.C. It will be worth it when I can stand with him to witness the awesome power of a space shot with our own eyes as a handful of people sit on tons of burning explosive fuel hurtling skyward for the sole purpose of adventure. It will be worth it if my son has the opportunity to experience space travel when my generation did not.

I just hope this bill passes.

Wednesday, March 28, 2007

Introducing Arkham Nights: Street Locations

The second casebook for Arkham Investigations, my custom expansion rules for Arkham Horror, has been released.

It's called Arkham Nights: Street Locations, and basically just provides encounters for the street locations, for those of you tired of sitting around in the streets while your buddies go having fun adventures in Arkham locations and other worlds.

It introduces some new cards, notably reputation cards, which are cards which track the town's knowledge of your investigator, and several new ally cards based on Lovecraft's (or Sandy Petersen's) writings. Here are some samples:

Informant CardFather Merluzzo Ally Card


Check it out, and let me know what you think.

Monday, March 26, 2007

PS3 versus XBox360

An interesting juxtaposition of events today. First comes news that you can allow extra cycles from your PS3 to be put to work for cancer research via folding@home. The linked article exhorts you PS3 owners to "Leave your PS3 on for a good cause this Sunday night!" And it's working - folding@home via PS3 is accounting for 666 TeraFlops of the folding effort, some 72% of the total, wiping up the leaderboard.

Not surprisingly, the XBox360 fanboys are chafing a bit, and are pleading with Microsoft to let them fold, too. The purported reason is that it will help save more lives, but I think we all know what happens when fanboys of any stripe get out-clocked.

Anyway, it does lead to one interesting question: so why isn't the Xbox360 capable of being left on overnight to participate in the folding competition? We had one possible explanation happen to us in the game lab today. One of our Xbox360's got left on overnight running Lost Planet. When our lab administrator came in the next day, he discovered that the Xbox360 had gouged the disc into an unreadable, bubbled mess! The game, which we had had only a few days, was now unplayable, $50 down the drain. This is the second XBox360 we've had that has eaten games - the first one ate one of our driving games.

One of the guys at work mentioned that some industry analysts are putting Xbox360 hardware failure rates at near 50% (anyone got a link?). And clearly, Xbox360's are not meant to be left on overnight. These two things combined could lead to a marketing disaster for Microsoft should they try to participate in a scientific modeling effort where lives hang in the balance. If crashing, burning Xbox360's cause troubles for the folding@home effort, that would be pretty embarrasing. Better to just leave the Xbox360 as strictly a home entertainment vehicle.

Wednesday, March 21, 2007

Why I am not a Republican

Here's yet another example of why I cannot connect with the Republican party platform. In this LA Times story about the investigation into Republican political edits to global warming science, it was revealed that Republicans
...disputed [the scientist on the stand's] contention that taxpayer-funded scientists are entitled to free speech. "Free speech is not a simple thing and is subject to and directed by policy," said Rep. Chris Cannon (R-Utah).
To my view, free speech is a simple thing. So long as you're not inciting a riot or yelling "movie!" in a crowded firehouse, you should be able to express your views. And sharing the results of your scientific findings doesn't even come close to an edge case. But Cannon is correct about one thing. Free speech is directed by policy: the U.S. Constitution.

I wonder...what part of being a taxpayer-funded scientist, in Chris Cannon's mind, makes one ineligible for free speech? Chris Cannon himself is taxpayer-funded, so he certainly couldn't be so hypocritical as to suggest that being supported by taxpayer funds makes one ineligible. So it must be the mere fact that he's a scientist. Says a lot.

Tuesday, March 20, 2007

Overwhelmed

I'm getting a bit overwhelmed at work lately. Stacked crises, paired with important yet seemingly unassailable issues, tripled with constant minor emergencies have conspired to practically ensure that responsibilities flow in faster than I can knock them back.

Here's a snapshot of what a typical day has looked like for me lately. I come to work thinking that I'm finally going to get that scholarship form redone, or that online catalog started, or that Pirate Science scene programmed, or that CMS built. But there's just a quick thing that needs to get done. Months ago, we built a conference web site, and because we can't accept credit cards yet, we had to outsource the registration form to another university, and that registration has to go live ASAP. But before we can let the registration form go live, we have to get the session descriptions from the program committee and put them up on the site we're building, so that they can be linked to off of the registration form. Because, you know, that would make the form too long.

But the sessions are not in a usable format for import into a database ("I've got it in a Word file..."), so I have to massage the data by hand to import it so I can write some quick PHP code to display it. I get that done, but oh did we mention that the sessions are still being tweaked? So I'll have to scrap the current data and re-massage it again later.

Then we're supposed to give feedback on the form, so we look at the actual registration form that was built. When printed, it's nine pages long, filled with literally hundreds of redundant fields you have to fill out. Many of the controls are inscrutable - some are literally unlabeled. But they think it's awesome because "it's all on one page."

Worse, the registration form was supposed to also communicate the schedule, but it really doesn't because it's just looks like an Excel spreadsheet of session names and times. It begins to dawn on us that we have to put up a session schedule, too, marked up in a way that lets people understand which sessions are opposite which events, admin meetings, and workshops, so that when they go to actually register, they can make sense out of this awful sisyphean form.

So we design a page layout that will communicate the complicated session schedule. But the schedule isn't firmed up yet, either, so we'll have to redo pieces of that, too.

And how to respond to the request for feedback? I have to decide whether to tell them that nine (printed) pages of dense form filling is just too much - which would probably just piss people off and end up with me building the registration form - or to just let it go and have the whole thing reflect poorly on us. Some choice.

Oh, and because they don't want to count the first-day workshops, tours, administrative meetings, and receptions as a conference day, we have to change the logo graphic. Meanwhile, three new responsibilities have come in via email which I've only been able to fire off "yeah, yeah, I'll get to it when I can" responses to. Then I look up and it's five o'clock two days later, sixteen hours of my professional life gone, and that much closer to all the other deadlines that loom like the Eye of Sauron on the horizon. Gah.

I'd say I need a vacation, but I'd just come back with even more pressing deadlines...

Picora

Picora is a lightweight MVC framework for PHP from LivePipe.

Sunday, March 18, 2007

Control.Tabs

Control.Tabs from LivePipe is a nice, clean method for adding tabs to your web pages.

Monday, March 12, 2007

Quest Article on Game Accessibility

KQED QUEST has an interesting article on videogame accessibility, including game accessibility advancements shown at GDC.

Saturday, March 10, 2007

More work in Cocoa

I've been tinkering more with Xcode and Cocoa, working on making a utility to help people write casebooks for Arkham Investigations. Here's a screenie of progress so far:
Casebook screenshot thumbnail
(Click to enlarge)
Not all the controls you see here work yet, but it is letting you click back and forth between the table on the left and paragraphs on the right to edit. You can also shift-click on the table to automatically add a paragraph reference to the clicked-on paragraph to the currently-edited paragraph, something that took me quite a bit of reading to figure out how to do (and I'm pretty sure there are better ways to do it, but I'm just not familiar with the framework yet).

Friday, March 09, 2007

CodeIgniter

I've been tinkering with different PHP frameworks lately, and CodeIgniter, an open source web application framework, is looking pretty nice. It's nice without being super bloated, and seems to have the nice MVC separation I've been looking for but have not really had the time to code up in a reusable, consistent manner.

Microsoft makes money off of their own screwups

Microsoft is making the lives of IT professionals hell this week, because the Daylight Savings Time change is forcing Microsoft suckerscustomers to do a lot of manual updates for multiple programs. Imagine having hundreds of machines in your fleet to manually update. This is why Microsoft support costs the industry so much.

And here's another reason. From the article:
For those customers still running products like Windows 2000, Exchange 2000 or the earlier Exchange 5.5, are no longer in Microsoft mainstream support and are thus not covered under standard support agreements, the situation is even more dire, as it will cost them $4,000 for all the DST updates.
That's right. Microsoft charges you four thousand dollars for their screw-up.

I am continually boggled why people continue to use Microsoft products. How many times do you have to be burned before you learn not to stick your head in the fireplace? Apple fixed this with a simple patch that came in automatically via software update. And it didn't cost me a dime.

First Steps with Cocoa

I decided the other night that I need to start widening my knowledge of computer programming, and I decided to start learning Objective-C / Cocoa.

This sort of decision is good in theory, but often the learning curve very quickly discourages you, and you wind up giving up and reverting to what you know. But the only way to find out is to dive in.

So I started writing my first objective-C Cocoa program tonight, using XCode from Apple. To my surprise, I was able, on my first night, to get a pretty feature-rich application working. It has a table view that manages multiple objects which can be edited in a text editor on the side. I'm really impressed not only with the Objective-C language - with its very clear and friendly syntax - but with the NextStep-based code library Apple provides for creating applications. Although it took a bit of reading, the organization of the elements I've investigated is clear and powerful.

Maybe this won't take so long to get feeling comfortable with after all...