Blog Archives

 2005 
Months
Apr

Links

Kevin
Charles
Thatcher
Aaron
Ryan
Ignacio

Oddworld

So, this has been reported elsewhere, but Oddworld will be shutting it's doors as of Friday, the Eighth of April. I had already lined up my next gig (with Zipper) before this, due to the planned move to the Bay area, but this still makes me sad. Not only is it extremely disruptive to the people who were already working on the next game, but all of our hard work will basically fall on the ground. For various reasons, Stranger was never properly marketed, so it's never going to receive much attention. The follow-on project was a chance to capitalize on all of the foundation that we had laid. Arg.

Luckily, it looks like everyone will land on their feet in relatively short order. Not surprising, given the caliber of the folks on the Stranger team. Theoretically, the company will continue to exist, but it's not going to be in a form that is competent to utilize the tech and pipeline that we made. This will be company number two that has shut down very shortly after I lined up my next gig. Spooky.

Feeling Much Better Now (from Redmond)

Now I know why I don't turn on the news in the evening. I should just stick to Tivo-ing FoodTV. Alton will never anger me, he just wants to teach me how to roast a beet or drain the alkaloids from an eggplant.

Honestly, how do professional politicians do what they do without killing each other? There must be either some skill, or some brain deficiency that exists that allows them to continue without going absolutely crazy at the sausage-making aspects of being a professional pol.

Oh, and if someone could manage to drop something extremely heavy on Larry King, I would greatly appreciate it. From about 30 or 40 feet ought to do it. Why does this idiot still have a primetime show? Could we just replace him with Charlie Rose, and be done with it?

Unhealthy (from Kirkland)

From my last post, it's clear that it's not too healthy to watch CNN for long periods of time. However, I've just found something worse: "Next time on Entertainment Tonight: Terri Schiavo. Murder, or Mercy? The stars weigh in! Then: Brad and Angelina's sexy new scenes!"

Somewhere, a latter-day Gibbon is writing all of this down...

Vanity (from Kirkland)

On my flight to LAX, the greying man of about 55 or so sitting in the seat across from me was wearing the following items, roughly in this order.

  • Purple sweatsuit
  • iPod Shuffle
  • Headphones, with adjustable headstrap
  • Bad toupee
The strap for the headphones went under the toupee. He walked into the cabin with the jack in his hand. At the end of the flight, clearly unable to remove the headphones without removing the whole hairpiece, he unplugged the jack from his Shuffle, and walked out with it in his hand as well. We are all of us strange, sad little monkeys. When it comes my turn, I can only hope I can deal with age more gracefully.

Or, at the very least, more competently.

Oh, great.

Orrin Hatch is still in charge of writing copywright legislation in the Senate. I can't even hope for a Democratic takeover of the Senate to fix this problem, because Subcommandante Leahy is the ranking Dem on the sub-committee. Fan-freaking-tastic.

GJK

The incomprehensible little screenshot at the right is my first GJK implementation running in test mode. I'm actually kind of disappointed in how straightforward the algorithm is once you drill past some poor notation in the standard papers. I remember that I put off playing around with GJK a couple years ago because I had the impression that it was High Voodoo. Apparently, not so. Gino van den Bergen's paper is a comprehensive account of what you need to know to implement the core of the algorithm, especially when augmented by examination of FreeSOLID, but the notation makes me groan.

Once you get past that, the idea is really quite elegant and straightforward. I especially like the way the underlying representation of the hull is completely opaque to the inner loop. Quadrics, boxes, polymeshes, whatever. If it's convex, toss it in and it Just Works. Sweet. Want to sweep out linear motion? Twiddle the return value of one of the support points based on the dot product of the direction of motion and the support vector. Done.

The depressing part, of course with all object interference detection is the messy reality of implementing such a nice, clean, algorithm in dirty, nasty, single-precision floats. This stuff isn't currently very robustinated against precision problems, I'll eventually do that if I ever figure out what I'm going to use this for.

Fun with KD-Trees

I've been playing around with KD-trees at home, trying to come up with something novel. I started out trying to fit an Oddworld style "loose-kdtree" (a concept too boringly esoteric to get into here) into 4 bytes per node, but I can't convince myself that the tree can handle large models with only 14 bits of offset for the child pointers, so that's right out. It may be possible to do this with a short/long offset approach, but that's a test for another day. It requires a more convoluted packing process, and an extra conditional inside the node-traversal loop, which is definitely A Bad Thing. Still, the gains in cache-efficiency and tree size might be worth it, there should be only a small subset of nodes that have child offsets that exceed 16k.

Next up, cache-efficient subtrees, as outlined by Crister Ericson (in this talk). I was trying 3 element subtrees, so 3 nodes of the KD-tree would be packed into 16 bytes. This turns out to be a royal PITA to code nicely, dealing with internal nodes in a way to preserves traversal orders while not requiring explicit recursive function calling is too annoying for my tastes. The capper was that when I looked at the average memory cost of an internal tree node for some real test models, it wound up being almost exactly 8 bytes. So much for subtrees, I can write much easier to deal with traversal code for simple 8-byte non-packed nodes.

It's possible that I'd get proper space savings and better cache-efficiency for 7-element subtrees, but the hassle simply doesn't seem to be worth it at this point. We'll see how the 8-byte nodes turn out, I think it should be comparable in cache-efficiency, so long as the layout process is sensible. The builder is generating some fun images at this point at least, the image to the right is a section of the KD-tree built for the Bunny. (Stop groaning back there!) Click for the full deal...

French and German

Stranger's Wrath
[Amazon]

Did I actually say slide out the French and German versions? Oh, merde, my aching kopf!

On the plus side, I've held a copy of the English (well, Region 1 NTSC English, actually, the King's English PAL version is still pending approval) version in my disbelieving hands. Now go do your part and Shop Retail, America!