F E A T U R E S    Issue 1.05 - September 1995

This is Not Totally Entertaining. This is Insane

By Graeme Devine

In 1993, Trilobyte's gothic CD-ROM The 7th Guest amazed a generation of gamers. It sold 1.5 million copies and changed the stakes of the PC game industry forever by adopting the 640-by-320 letterbox (the format found in feature films) and by combining dazzling graphics with partial-motion video played back at 15 frames per second. Behind all of this stands Graeme Devine, the compulsive co-founder of Trilobyte. His mission? To push interactive entertainment forward by reinventing multimedia's basic tools. Devine was the visionary, the one with the "we can do anything" attitude who directed the project with an equal disrespect for the mediocre standards of the industry and the accepted limits of technology. Not content with The 7th Guest, which is still riding high on bestseller lists two years after its release, Devine and his 14-member "crunchcrew" of programmers worked day and night for more than two years on the sequel, The 11th Hour, due in stores by September. This excerpt from Devine's daily e-mail journal chronicles the project's gruelling final months. With its TV-topping 24-bit high-colour resolution and true full-motion video (playing at 30 frames per second on any home-class computer), The 11th Hour could, quite possibly, break the industry's cardinal rules all over again.

I talked with a reporter today about our video compression. He was pretty impressed - it was as if he had found Livingstone in the deepest darkest jungles or met someone who had invented a time machine. I guess sometimes we live so deep in our own hole that we have no idea what everyone else's hole looks like.
My life has become a tap dance.

I get up in the morning with the first e-mail; it makes a "craaaaw" sound and I instinctively head down the stairs, baby in arm, to see who is hailing me so early. I drink a cup of instant coffee (twice the normal dosage) while feeding Roque and peering at the screen. I tap a response and then several salvos of my own making into the aether. I tear into the code that decided to give up the ghost two seconds after I left it last night. I swear, bugs just start to happen; it's as if bit loss was a natural occurrence in the world of computers. What is 99.997 per cent solid one week fails the next. I believe Intel has experienced this same problem.
Tap tap tap "whaaaaah."

I pick up my portable and drive to the office. On the way I hit several red lights and one traffic jam. I decide that, yes, you really can switch that portable on and read code, but only if you really want to get a traffic ticket.
Tap tap "crash."

At the office I rove around, tapping on the portable in one corner, then moving around to another one. Eventually, the battery gives out and I have to return to my office. Battery life is an important feature of a portable, and I've yet to find anything near what I want in the portable world, so why do we still have such pitiful battery technology? Wasn't this a big part of the Apollo space program? (Unless, of course, it really was filmed in a studio.)
Tap tap "blink."

I sit and fix the code, which produces the assembly code for a codebook, and realise that I've never heard of anyone doing this before. It's certainly new to me. A self-generating video decompressor. Another Trilobyte first. And quite a significant one, I think.
Tap tap "yes!"

Tonight I come home to a whopping nine frames of pattern collection. Not very impressive. I alter the algorithm to use memory variables instead of the file system it was using. It doesn't go much faster. Then I realise that the threshold is fixed and being maxed out. I change it to dynamic thresholding. Tap tap tap "oh."
Now I'm typing my Daily Report....
Tap tap "ZZZZZZzzzz."

Another 24 hours in the life of a programmer whose goal is to reinvent everything around him.

I sat and watched TV tonight. I like Talk Soup, a programme that runs the highlights of that day's talk shows. I think it's better for me than watching Cops - but not by much.

As I sit and watch Tammy & Brian - Tammy still loves Brian; Brian says it ended two years ago - I realise, Heck, this picture is humming along here at 30fps. By the time it gets to Madeline and her problems, it dawns on me that all I'm doing right now is porting TV. I'm just reinventing some object around me.

I am feeling pretty dumb by the time the segment moves on to some love triangle so complex it requires a diagram to explain it.
Yeah, I like Talk Soup. Perhaps I'll port it.

CD-ROM World rates The 7th Guest as the #1 CD-ROM game out there (it rated Myst #2). After two years, this says a lot about the state of our industry. Too much emphasis is put on gadgetry and not enough on simplicity. Look at the big winners over the last few years - Tetris, Lemmings, Super Mario Bros., T7G, Doom - all are really, really simple to play. Too often, programmers & designers trash good work by "oversampling" the player (creating too many options and complicating the screen). We are in danger of doing this with The 11th Hour. And that means that there is a lot of work left to do, even once we have it "running."
A technical Daily Report. Sorry, it's the way I'm thinking right now.

Well, I didn't think that I could meet my goal of knocking a second out of drawing 100 dense quad structures, but I did. Twice. Tonight it's down to 5.7 seconds. A total of two seconds faster.

What does this mean? A dense quad is around 10 times larger than a typical frame chunk quad - it contains essentially lossless data. These dense quads make good profiling data, since they overload the overhead in the decoder nicely.

Most of the speedups came by fixing 486 CPU stalls. The 486 will "stall" and wait for a cycle if the previous machine instruction is somehow required for the next. Fixing stalls is tricky. Writing stall-free code is almost impossible. You have to think below the assembly-code level and think about how the CPU is dealing with data.
Now I have to lie down and realign my nervous system.

Well, I watched The Nightmare Before Christmas again tonight. Gosh, there's a lot of work in that movie. An awful lot of work. Of course, they had a lot of problems solved beforehand.

They did not have to invent the playback system. Film has been perfected over the last 70 years or so. The system is 100 per cent compatible throughout the country and constantly plays back at 24fps no matter what type of projector they have.

We had to invent the playback system and make it work on a dizzying array of hardware. Everything from Packard Bells to 3DOs to PowerMacs to buggy Pentiums.

They had a well-tried and workable production system, a system that has been perfected over the last 70 years. We are still learning our craft. It's chaos in our industry, and that's the best and worst place to be. They had an acceptable point of purchase to a mass audience. We have seedy little stores filled with strange boxes and nerdy teenagers. Okay, theatres have teenagers, too.

So why do we do it? Why don't we just hang up our hats and start to make movies like NBC? Let's just throw in the towel and start a movie production company.

Ahhh, where's the fun in something well established?

I don't know, but sometimes it doesn't pay to get out of bed. Yesterday was one such day. By 2 a.m., I was putting back code to make it work the same as the previous evening. By 3 a.m., I was totally lost.

You know, in the 1870s they used to make false teeth and billiard balls out of a gunpowder mix, which led to a very unfortunate side effect of the balls and teeth sometimes exploding. I guess when you come up with a new technology, you really do not know its full consequences until after it has been used for a while. Not every product has such apparent side effects, but you can be sure that sometimes those explosions are still happening. You just can't always see them. Well, yesterday I proposed putting 256/hicolour streams into 11h. The primary reason we can mix streams is that most of the information inside a video packet is not concerned with colour, and by dropping house movement down to 24fps (it looks way the heck too fast at 30fps), we can mix the 256 colour and hicolour assets. The video would be encoded twice.

Right now, only something powerful like a Pentium would be able to decode hicolour, and it may not be worth providing the encoder right out of the hat for time reasons. But heck, mixing those streams is pretty easy and seems worth doing to me. No one else has made a hicolour game, to my knowledge, and it would certainly enhance the look of the video.

Tonight, Lori and I went to see Dumb & Dumber. It was dumb (actually, it was hilarious). Look at that: I compressed a movie down to 40 characters. I did not sit and study the movie for artifacts, video noise, shutter problems, camera wagoning, or any side effect. I just sat and watched.

Okay, there was one bit with a lot of noise and scratches, but I looked around the theatre and it didn't seem to bother most people. I read an interview with another game company that chose the 640-by-320 letterbox format for its game after playing T7G. It's a good thing, as Rob says, that we didn't choose 160 by 480.

Back when we chose to use 640 by 320, we had no intention of animating it, let alone at 30fps. I think everyone thought we were crazy. Heck, they had that much right.

Rob mentioned a while back in an e-mail to the crunchcrew that I have a "we can do anything" attitude. It's true, I do. We can do anything. If people want chapter-based video, then that's what we'll do. There is always a way. It just takes a little bit of thought. Even now, I'm considering 60fps video tests. We are a group of innovators, artists, and creators. You lot, the crunchcrew, are our innovators. If any one of you gets a flea-brained idea that's so crazy it just might work, don't be afraid to present it.

After all, it just might work.
I hate DOS.

How the hell do people use it and stay sane? Take, for instance, the simple act of compiling a program. From more or less any NeXT machine in the office, I can walk up and compile my code.

I'm assured of getting my configuration, dock, directories sorted the way I like them - plus access to my files from whichever machine I use. I don't have to care about the RAM, hard-drive space, or environmental variables on any of those machines.

And yet. DOS-plus-Windows is the most popular operating system out there in the world.
It's got to be an alien plot. It just has to be.
Anyway, I started to integrate the AI stuff today.
The NetWare server has been offline for almost 24 hours. We are unsure if we can revive it. All of the assets for The 11th Hour are on this machine; although I have a mirror here at home, it's not quite in sync with the one at the office. We worked at it until 8 this morning before going home. The repair program we set in motion at 6 this morning should finish at around 1 a.m. tonight.

We are in a holding pattern on the sound and video compression. And every hour that passes without the server adds another hour onto the past-due time on the next release of the code.

On the good news side I got the hicolour player up and running in DOS at 30fps. It requires a 486D-by-2 or above. I'll have the other colour systems online 100 per cent tonight (perhaps even 32-bit colour), and hopefully some code to configure the player on each machine as it runs.

Sorry, I'm just too out of it to compose the prose that's called the Daily Report; I've had maybe 10 hours of sleep since Tuesday, and my brain is currently in shutdown mode.

I need some data on which cards cannot do hicolour. From what SciTech tells me, all cards have supported at least hicolour since the dawn of SVGA. I need to know if this is true or not, since it makes a difference. 11h will not run on a 256K VGA card, but then again, neither did T7G. If you have a card, or know a card, or are a card that cannot get into a hicolour mode, e-mail me.

I sat and watched TV tonight, and I realise now that I sit and watch the motion and artifacts if the picture is disinteresting (which it is 72.3 per cent of the time). I was drawn into the smoothing artifacts on the guy's sweater on some ad tonight. For some strange reason afterwards, I went and purchased 24 frozen pizzas.

Verrry, verry tricky right now. The encoder is now getting as complex as a MPEG encoder, which is making decoding simpler (as opposed to MPEG). Basically cutting down drastically on memory usage per frame for the same rez frame.

Very, very tricky. My brain is going to explode. Oh well.

Right now, I'm working on the icons. Basic navigation and puzzles should be online tomorrow. Then I'm going to spend some time getting digital music to work. I also need to get the changes into the encoder so we can get the house and all the video compressed.

We no longer have the luxury of getting the video done twice - it's either right the first time or we're late.

I need help here on finishing the player. It has to be done yesterday, and I'm not capable of doing this on my own.

I'd like to pass out icon code, AI code integration, interceptor view display driver, i386 wavelet sound, i386 digital music sound, code to detect other games. The rest is done, or almost done.
Any takers?
Worked on the music today, almost got it working.
Worked on the player today, almost got it working.
Worked on roq today, almost got it working.

Unfortunately, "almost" is not testable, and we have four testers at the office waiting for a CD. I can't access my DOS machine from here to work on anything, and I did not bring my portable home, so, for the time being, we're stuck.

I estimate I'm around 30 minutes away from it being playable.

Tonight, as I was driving home, I came across a traffic light that refused to turn green. In the end, all the cars in line (at 4 a.m.) had to run it. My life is just like this traffic light; it's never turning green.

I fully intended to be home early today, at 7 p.m. or so, but the network thought otherwise and decided to crash. Again and again and again and again, it decided to crash. At first we thought it was the Indigo NFS (which was acting funny), then it appeared to be the mass of files on one of the drives. When we checked it, the checking tools said "too many files." So we deleted them all. It still didn't work.

I'm beginning to agree with the critics of computers: moving away from the abacus to Napier's Rods was a bad idea. 4:46 a.m. It says Sunday, but I missed Saturday somewhere.

This is not totally entertaining. This is insane.

I got the music driver "mostly" working. Of course, on the way home I figured out how to get it to work 100 per cent, but that's always the way. We tried two pieces while cruising the house; one was called "haunted," the other "jazz blues."

It's amazing how much atmosphere music adds. Actually, I think it's a pretty darn cool music player considering what we see in other games.

I guess that leaves voice sound and some opcode stuff. Patrick looked like he had icons sort of going today/yesterday. The voice stuff can use the available four digital tracks left; this means that taunts, foley, and ambient noises can all overlap.

Encoding is going slowly because if we add machines it crashes. Those super-fast HP systems would make a real difference right now - we need some number crunchers online asap!
Insanely yours.

Well, a big new build of 11h is ready. New graphics, new player, new script, music. By Friday, icons should be ready, and I should have the sound done. This leaves assets. Lots of them. And probably some bugs.

Remember: Monday is final param day. If it's not a param by then, it's not an asset. I don't see any video, lots of puzzles, and some misc stuff there right now, and it needs to be there by Monday or it's not in the product.

Preliminary prelustration provides positive proof pertaining precompressed progression.

We're finally making a build all the way through. Complete with video. We're stuck with whatever it gives us. There is no more fiddling, tweaking, messing with colours. That time has gone.

The product has all-new sound, music and video drivers. It supports a standard platform approach that makes OS and CPU dependabilities extremely minimal. The computer graphics are far more perfect and dazzling than anything we had in T7G. The puzzle design is grander, its implementation fuller. The video is well-crafted, well-directed, and well-presented. From a technical and creative standpoint, it's as good a ship as we can make (I take that line from the journal of an engineer who worked on the Titanic).

Encoding video is one of the few problems you can throw fast hardware at and get results.

Today we got in 3 HP 735/125 systems. They run fast, not just fast in fact, but stinkingly disgustingly fast. Around three times the speed of a 90-MHz Pentium, probably faster if they were not network and disk i/o bound. It's the fastest piece of hardware I've ever used. Between the Envoy and the 735, this has been a great week for new toys. The 735 machines will allow 11h to ship much sooner.
A quiet day today.

About 50 per cent of the video is now encoded. Mostly by the new systems. As I said yesterday, those machines are faster than I imagined. And I can imagine fast. Tomorrow we'll be able to burn CDs.

In fact, right now we're able to burn CDs. With video, introduction, puzzles, treasure hunts, ambient sound, music, load/save game all working. Basically, the game working. I'm trying to mull the last few issues, mull, not pull.

Compression is kind of like your favourite shirt. It's comfy, looks okay, and feels good on. If you pull on the small strings that no one else notices, the whole thing comes apart, but if you leave them there without patching them, they really bug you, and the whole thing comes apart in the wash anyway.

Actually, this is a fairly good analogy for life, and probably, when you get down to it, the universe.

The moonlight on the drive home tonight was bright enough to see by; it was uncanny.

I believe I've been told more times today than any other that the product must ship. Yes, I know. I'm working towards that as hard as possible. It's been like this since the first of the year.

Tonight I added true 24-bit support for 640-by-320-by-30fps at 24-bit from a 150K/second drive. Of course, you'll need a Pentium system for this to work, but it looks unbelievable. 24-bit support gives us better-than-TV colour depth and a picture that finally looks non-blocky, non-pixelly, and about as good as it gets. This makes The 11th Hour the first game with true full-motion video software playback at 30fps and the first 24-bit fmv on a home-class computer.

Personally, I think this is worth mentioning on the box. Okay, it's a technical detail, but it's in the same league as the first colour motion picture.
A good day.

We nailed bug after bug, feature after feature, and every one stuck. We found some asset problems (tri-hex, books in library, beans-in-space, gamebook), and some sound problems ("a warmer for a winter mixer," or whatever it is, is incomplete). But on the whole, everyone seemed happy with our progress.

Having the testers is truly useful. We did four rebuilds for them in a matter of hours, and they could see bugs knocked dead quickly and deftly. Having them talk to us face-to-face to describe the problems also helped, and having them get excited about playing the game made us work harder on getting more of it done.
Not so much of a day, more of a stint.

We're on the off-ramp to finished product, and that's good to finally see.

The background/foreground alpha system is working 100 per cent. It was a pain to debug, since the DOS debugger gave up the ghost long ago. It was an interactive process of, "Try that," and, "Okay, try this," and, "That shouldn't have happened."

The puzzle assets, however, are not encoded quite right. They "mostly work," but there is no alpha channel at all in some of the pieces, causing square chunks to be missing from the pieces as they play. Of course, I looked for this in the decoder for about six hours before thinking to try the encoder. This is a quick fix and will be in the build we're making tonight.

Talking of builds. The puzzle build tonight is final. WE HAVE FROZEN THE ASSETS! The video pass, once complete, is also final. And the house pass with the new codebook and colour stuff is final. This is good. Lots of finals in this paragraph. Lots of finished assets.

A disc 1 and a disc 2 worth. Disc 3 is still unencoded.
Now for a little sleeeeeeeeeeep.
A depressing day.

Made 300K/sec streams last night. Played them this morning. They looked just like the 150K/sec streams. I started to find out why.
Looked at sound stuff.
Started to feel sick.

When looking at the video this morning I noticed that the blockiness was not really bitmap blockiness but colour blockiness (that's why the 300K/sec streams looked the same as the 150K/sec streams). There was a bug, quite a bad one, in the way I converted color from 24 bits per pixel to 16 bits per pixel. It was wrong. I then noticed that there was a bug in the part of the encoder that estimates the current frame size. I was counting bits wrong.

So, how does the video look now? Well, we'll see what our peers say tomorrow. I am no longer going to pass judgment, since it comes back to haunt me later. Supporting two video codebooks would be hard because of the bugs. We may just have to re-encode and use new streams as they become available.

Of course, when people say it looks blocky, I sometimes wonder in comparison to what. WC3? UAKM? Ha. TV? Well, it looks pretty darn TV-like to me. Yes, up close it had colour problems, but have you looked at MPEG up close on a RGB monitor? Try outputting this stuff to NTSC and see which looks better.... Everyone is a critic, and some people have no right to be. That really pisses me off.

For the last three months, a lot of people have more or less worked 16 hour days, sometimes more, getting this thing out the door. It's not a simple product. It's not just another game.
Sing the Trilobyte song with us.

7 days to go. 1 week. 168 hours. 0.13 of a year.

That's how long we have to get our baby home. Went around the group today, asked everyone what their woes were and wrote them on the white board.

If she doesn't get home, then it's the bluesville for me.

I have to get my baby home by then. The one worry I have is the player. I'm prepared at this juncture to drop the work I've done on double-buffering and run with what we have unless I get results quickly. I have just about reached that stage where we can get some real timings on the 486SX.

I have those 11th Hour blues, they reach in deep. Those 11th Hour blues, they keep you up all night.

I've added all this fixed-point code, and I need to start seeing it run. It should handle scene transitions much better, not tear, and be able to play back in multiple colour depths - all at locked 30fps, which is basically what the player is going to run at from now until the end of time. First and last frames should look more lossless, and one frame assets should look very lossless.

The old man Stauf will not be happy if she's late. He won't be happy at all - it'll be a curse on us all if she's not there on time.

Ever since I started to play with computers, all I've really done is work on compression. But the rules have changed. To begin with, it was all about available RAM; now it's all about available bandwidth. Now that consideration is lifted, and it's not available online storage capacity. A double-speed drive is 36 minutes of storage, a quad speed is 18 minutes. These are hardly good numbers. Just got those 11th Hour blues.

The current build is too large, but not by much. I need to see a disc 1/disc 2 layout to know what to compress more and by how much before I can get that stuff to fit. This is probably a pretty high priority.
I have to get my baby home.
Beta is tomorrow.

We are probably going to finish a game this weekend. Gosh, that feels good. I think I'll type it again.

We are probably going to finish a game this weekend.

I took great pleasure today in showing the double-buffered video to people. It's certainly unique to the PC platform.
The player is ... d-o-n-e.

I had an idea in the shower for compressing sound. I tried it at work today, and it seemed to work very well. Then, while reading about the 3DO sound compression scheme (thanks to Porsupah), a better scheme materialised, a sort of cross between the shower idea and the 3DO stuff. The beauty of the scheme is that the decode is simple, very, very simple (about 8 lines of assembly code), and the quality is extremely close to the original sample.

Obviously I need to take more showers.
The end is near. I hope I'm awake for it.
A mixed day.

On the good side, the new sound is working well, sync is perfect, quality is good.

On the bad side, there are one or two bugs in the player. It's not playing video properly on the ATI Mach 64, it's not auto-speeding properly on the 486/66, and it's not installing properly on the Packard Bell.

The PC "standard" is a hoax. It's all going to hell on that platform. Making a multimedia program run is like trying to make a classic Chevy out of pieces at the junkyard. Between sound cards and video boards and speed processors, with different mice, it's amazing anything runs at all.

We're all putting in a lot of hours; we're all a little stressed, but we need to face the fact that we're about to make 1,000,000 discs of data containing whatever it is we actually decide is final (which had better be this build).

Today is May 3. We are very late. Even the rabbit in Alice in Wonderland wasn't this late. I'm embarrassed that we missed the 28th deadline for beta.

The install process plays an animation, and from that, determines which video mode to use. At first we supported all the way from 32-bit down to 8-bit colour, but, after surveying the video cards sold, installed bases, and how the game looks, we're only going to support those with a 16-bit or 24-bit DAC at 640-by-320 or 320-by-160.

Currently, we'll also support non-SVGA cards such as the ATI mach64 through their VESA 2.0 bios.

All of this reminds me of the 7th Guest launch. Everyone said we were foolish for using SVGA, and perhaps we were, and everyone said we were foolish for going 386/20 instead of 286, and everyone thought we were nuts for being CD-ROM only. That's us, the nutty guys with the 1,500,000 sales.

Four gold discs sum up over two years of my, and a lot of other people's, blood, sweat, and tears. I look at these discs and somehow they do not seem enough: somehow there should be more - larger, or grander, and generally much more splendid.

But perhaps the effort is reflected in the pure simplicity of these shiny wheels. Simple, straightforward, flawless reflections of light that make up a whole.

The 11th Hour, this game, this monster whose shadow has cast long and dark over our lives for the last two years, is done.

And it's captured, the moment is etched forever onto four gold discs.
So, what now?
Start again?

It's almost as if everything else in my life has been on pause. But I didn't stop having ideas in the shower while I was working on The 11th Hour. Now I have more ideas than I know what to do with.

But right away, right now, very soon, I am just going to sleep. Probably for a while. Graeme.