Romero
responded with almost debilitating laughter. It was Tom’s costume for Halloween. Tom
stayed, as he often did, helping out with the game design and tool creation. Adrian
was thankful that he didn’t stick around much longer.
One night shortly after that, however, Tom stuck around long after Adrian, Romero,
and the rest of the Softdisk employees had gone home. The only people left were he
and Carmack. Slordax was wrapping up nicely, and Carmack was on to something else.
A born night owl, he remained at the office into the wee hours of the morning. He
liked the solitude, the quiet, and the chance to immerse himself even more deeply
in his work. He was doing what he had always wanted to do: code games. And he was
happy, in the moment as always, not thinking at all about what would come next. If
he could be here working on games with enough money for food and shelter, that was
good enough for him. As he told the other guys on one of his very first days, put
him in a closet with a computer, a pizza, and some Diet Cokes, and he would be fine.
As Tom settled into a chair late this night, Carmack showed him how he had figured
out a way to create an animating block or tile of graphics on the screen. The screen
consisted of thousands of pixels; a group of pixels make up a tile. When making a
game, an artist would first use pixels to design a tile, then place the tiles together
to create the entire environment. It was like laying down a tile floor in a kitchen.
With Carmack’s animation trick, a tile could have a little animating graphic on it
too. “And,” he explained, “I’ll be able to make it so your guy can jump on the tile
and something can happen.”
“Would it be easy to do that?” Tom asked.
“Sure, mmm,” Carmack said. He would just need to know what resulting action to program
into the game when a player hit an animated tile. This was awesome, Tom understood,
because games like Super Mario Brothers 3 were all about animated tiles; for instance,
a player would jump up into a blinking block, which would then rain down a shower
of golden coins. Tom was intrigued. But there was more.
Carmack punched a few buttons on his keyboard and showed Tom his other new feat: side
scrolling. The effect, popularized by Defender and Mario, made it appear as if the
game world continued when a character moved toward either edge of the screen. After
a few nights of experimentation, Carmack had finally figured out how to simulate this
movement on a PC. He had approached the problem, as always, in his own particular
way. Too many people, he thought, went for the clever little shortcuts right away.
That didn’t make sense. First, he tried the obvious approach, writing a program that
would attempt to draw out the graphics smoothly across the screen. It didn’t work,
because the PC, as everyone knew, was too slow. Then he tried the next step: optimization.
Was there any way he could take greater advantage of the computer’s memory so the
images would draw more quickly? After a few attempts, he knew there wasn’t a solution.
Finally then he thought to himself, Okay, what am I trying to achieve? I want the
screen presented to move smoothly over as the user runs his character across the ground.
He thought of his earlier game, The Catacomb. In that one, he’d created an effect
that moved the screen over one big chunky strip at a time as a character ran toward
the edge of a dungeon. It was a common trick called tile-based scrolling, moving the
screen in the chunky way one set of tiles at a time. What he wanted now was to create
an effect that would be much more subtle, if a character moved just a hair. The problem
was that it simply took too much time and power for the computer to redraw the entire
screen for every slight move. And that’s when the leap came.
What if, Carmack thought, instead of redrawing everything, I could figure out a way
to