Book Read Free

Backroom Boys

Page 13

by Francis Spufford


  So began eighteen months of effort, which, at times, looked as if it might go on for ever. David Braben received a new BBC Micro of his own from Acorn and finally retired his faithful Atom. Every two or three weeks, Bell and Braben called by at 4a Market Hill with their latest version, ‘and we’d play it, and we’d tell ’em what we thought was good and bad’. Meanwhile, Jordan and Johnson-Davies schemed commercially. They encouraged the authors to keep coming around, not just so that they could offer technical help or so that they could keep an eye on progress, but to keep Acornsoft up to date with the game’s marketing potential. ‘Basically, for the first time in Acornsoft history, probably in the industry’s history, we had a game so big that we could build on it. We said, “We’re going to make this more than a game. We’re going to create other materials, other support for it, so that by the time it comes out, it’ll be a real blockbuster.”’ Word got around inside Acorn that the publishing division had something amazing, code-named ‘Bell’. More than that the publishers would not divulge, even inside the company, so careful, so paranoid had they decided to be, in case news of their prize leaked out during its long gestation and other programmers elsewhere spoilt the market by trying to imitate it. As the months went by, Chris Jordan became a good friend of both the boys: David Braben with the easier manner and the eye for the angles, Ian Bell drier and quieter, making comments with a sardonic twist. They started inviting him along on Tuesday nights to share another of their enthusiasms. Tuesday night was Dallas night. He’d knock off work and go over to the rented college house they were now sharing on Jesus Lane, and there in a room, he and they and their other Dallas fanatic friends would eat pizza and jeer and cheer at the shoulder pads of South Fork. ‘J. R. Ewing, how can a man be so cruel to his own wife?’ ‘Sue Ellen, when ah see you with that martini glass in your hand, sweetheart, ah feel nuthin’ but contempt!’

  *

  One thing Braben and Bell were exploring was the prospect of getting the computer to generate the game’s universe by itself. Their first idea had been to furnish the machine with the details of (say) ten solar systems they’d lovingly hand-crafted in advance: elegant stars, advantageously distributed, orbited by nice planets in salubrious locations, inhabited by contrasting aliens with varied governments and interesting commodities to trade. In effect – to put it in terms of the role-playing games that’d given them their jumping-off point – they would be asking the computer to act as dungeon-master, but only in a very restricted sense. They’d supply the map; the computer would just administer it for them. But it quickly became clear that the wodge of data involved was going to make an impossible demand on memory, even if they compressed it as cunningly as they knew how (and they were getting more cunning all the time). Besides – ten solar systems? How puny, how unambitious. That wasn’t the open-ended territory for the imagination they had promised themselves when they decided to aim large. What if, they asked themselves, they got the machine to be a proper dungeon-master? One that invented the map as well. To avoid the storage problem, it would need to build solar systems on the fly; that is, it would have to come up with names and distances and dimensions right when they were called for, that instant, rather than pulling them out of memory. Yet these unstored, instantaneous inventions also needed to be solid and dependable. Stars and planets needed to stay where they were put; they needed to come out the same each time they were generated on the fly. You couldn’t have solar systems disappearing every time you turned your back on them and being replaced by new inventions.

  At this point, they thought of the Fibonacci sequence. It’s a mathematical curiosity which governs a variety of seemingly arbitrary things in nature like the arrangement of leaves on a plant. In its most generic form, it works like this. You take any old pair of numbers and add them together to produce a third number. Then you add the second and third together to produce a fourth, the third and fourth together to produce a fifth, and so on ad infinitum. Every new number in the sequence is the sum of the two previous numbers. So if you start with 2 and 7, the sequence goes:

  2 7 9

  At the next iteration, adding the 7 and the 9 is going to give you the two-digit number 16, but the Fibonacci sequence consists of single digits. Consequently you ignore the carried 1 in the 16 and only take notice of the 6, giving you:

  2 7 9 6

  It’s this that creates the apparent randomness with which the sequence continues:

  2 7 9 6 5 1 6 7 3 0 3 3 6 9 5 4 9 3 …

  These numbers are ‘pseudo-random’. They look random, and after the sequence has been going for a while, it produces statistically equal quantities of each of the digits under ten, so the numbers can be used as a source for any process in which you want the corners and crannies of probability to be scoured out as thoroughly as truly random numbers would do. But because they are all generated by a rule, they are in fact completely predictable. All you need to know to know them is the rule that was used and the pair of starting numbers. All the later numbers are, so to speak, there in the first pair, latent, waiting to unfold like a Japanese paper flower dropped into a teacup of water.

  Hence the sequence’s value to Bell and Braben now. They already knew that if they used their guile about data compression, they could encode all the information on a particular solar system in a relatively short row of digits. That number, it occurred to them, wouldn’t have to be stored if it were an iteration in a Fibonacci sequence – or a Fibonacci-like sequence, anyway. All you would need would be a starting point, a rule for doing the iterations, and a mechanism for extracting the information from the number. Experiment had shown them they could squash a solar system into just twelve digits, as long as they were digits in Base 16, so that would be their starting point: a single number in hexadecimal notation, twelve digits long. For example:

  23A41DB0995E

  The rule they came up with produced the next number by adding the elements of the first number to each other, thus doing away with the need to start on a pair. Then all you had to do to generate a galaxy of solar systems was to iterate away. Suppose a player was arriving at a system which the computer knew was 112th in a galaxy of 256 systems. Quickly, it would rattle through 112 iterations and spit out that system’s unique twelve-digit code, say:

  08C1106F7613

  Decompression followed. Some digits controlled the physical specs of the system: the size, the location, the number of planets. Some led to a look-up table where two syllables would be combined to give the system’s name – Pela, Ruvi, Odmu. Some determined local politics. Some expanded into stock-market information. Others grew into brief flourishes of verbal description – which always read a little weirdly, put together as they were from stray adjectives and nouns. A planet might be ‘famous for the pink volcanoes’, or be populated by ‘edible poets’. Since the adjective list contained ‘carnivorous’ and the noun list contained ‘arts graduates’, it was possible to land on a planet where all the inhabitants were, yes, carnivorous arts graduates: a little swipe maybe at Cambridge, not random but pseudo-random. As the player entered the star system, then, it swelled into existence as if it had always been there. It hadn’t, except as the 112th iteration of a twelve-digit number, but it held steady while the player did things there, and it would be the same if they came back, barring a few falls and rises on the stock market. In the same way, if the player wanted to look at a map of the whole region of space they were in, the machine could draw one in a flash, just by pounding through all 256 star systems and plotting whichever ones had co-ordinates that happened to fall within the screen area. It worked: instead of designing a universe, you could get the computer to grow one.

  But not to order. They called the starting number for a galaxy ‘a seed’, and in truth creating the game this way was more like gardening than like deliberately constructing something. You had to plant the seed and see what grew. You could only find out what mix of stars and planets were latent in any particular twelve hexadecimal digits by doing the iterations. I
t was another sense in which they were ceding direct control over the game in favour of working indirectly on the player’s experience. But they did want to start the player off in a reasonably friendly bit of space where the pickings were good and they wouldn’t get instantly clobbered. Since there was no way to edit a galaxy, you just had to try galaxy after galaxy, seed after seed, until something suitable grew. ‘I remember thinking it was very wasteful,’ David Braben told me. ‘You’d type in a number, a birthday or something, and see what galaxy that came out with. “No, I don’t like that. No, I don’t like that. That cluster looks horrible.”’ They also decided they had better check the 256 system names in the galaxy where the player would be plunked down, in case any of the four-letter words were actually four-letter words. ‘One of the first galaxies we tried had a system called Arse. “Mmm, no, we can’t have that.” We couldn’t use the whole galaxy. We just threw it away!’

  However, this exercise in weeding and pruning only applied to the first galaxy the player found themselves in. A quick clatter of fingers on the BBC Micro’s keyboard, a trivial little extra routine, and Galactic Hyperspace became possible. Now the player could fly to other galaxies. How many galaxies should there be? Well, how many would you like? Thinking through the dynamics of the first galaxy had made it blindingly clear that large numbers were not a problem if you didn’t have to store them. The seed for a galaxy could be iterated by one rule to produce as many star systems as you wanted; you could easily iterate it by another rule to produce as many seeds for other galaxies as you wanted. Fibonacci sequences (and their cousins) didn’t end. They went on indefinitely. Obviously, Bell and Braben couldn’t have an infinity of other galaxies. That would just be silly. But they could, they agreed, have a coolly huge number of galaxies – as they explained to Acorn, showing off the feature. Yes, they said, they planned to have quite a lot. In fact, they said, they planned to have … 2 to the power of 48 of them! Ta-dah! In ordinary decimal enumeration, 2 to the power of 48 works out as approximately 282,000,000,000,000 – two hundred and eighty-two million million galaxies. ‘A humongous number,’ David Braben remembered. ‘A preposterous number.’ It was one of the few moments when Acornsoft put its foot down. That’s a bad idea, said the publishers. Have eight galaxies instead. ‘I’m going, “Aah, that’s hardly any!”’

  Acornsoft could see that having 282,000,000,000,000 galaxies would rub the player’s nose in the artificiality of what they were enjoying. A number that gigantic made it inescapably clear that some sort of mathematical concoction was involved. And it exposed the underlying sameness of all the star systems, generated as they were from only a handful of varying qualities. The pink volcanoes would come round again and again. ‘As you started to look into it,’ explained Chris Jordan to me, ‘the bigger the world, the more you understood that this was something being spread successively thinner.’ It would be better to be more modest. Somewhere between the unimpressed response to a small game universe and the disbelieving response to a ridiculously large one lay a zone of awe. That was where they should be aiming, and eight galaxies containing 256 stars each seemed like a reasonable guess at its whereabouts.

  But the publishers could also see that, on the right scale, having the computer generate the game universe offered a powerful imaginative advantage – and therefore a marketing advantage. When you’re playing a computer game, it feels good to know that someone has laboured over the arena you’re playing in. But in the context of a space-exploration game, it could feel even better to know that no human eye had ever been laid on it before you came along. Braben and Bell’s Fibonacci-derived mechanism meant that Acornsoft could hold out to players the seductive possibility of finding stuff in the game that not even the authors knew about. This was not just a figure of speech. The two of them just set the seeds sprouting; they really didn’t know in advance what the 251st iteration of the sixth galaxy was going to throw up. So a player who ventured into that star system really was – in a sense – venturing into the unknown. Acornsoft wouldn’t have to spell out what was happening on the technological level. It would be something the player would encounter, a gradual discovery that somehow, magically, in 22K, this particular game provided you with your own personal version of the unknown cosmos that beckoned in science fiction. As Chris Jordan put it, speaking to me in 2002, the game crossed a threshold: it changed the feeling that you were only browsing in a space fixed and polished by A. N. Other to a true suspension of disbelief. It made you say, ‘Somehow this is so real that I don’t believe it’s ever been touched by human hands.’ In this would lie one part of the game’s permanent originality. Almost every space game since has offered an environment more richly detailed and more graphically varied than Bell and Braben’s bare-bones universe of the 1980s, but few have followed them in opening the construction of the game world up to chance, and so letting it be autonomous and unpredictable. Later games would look better and have textures you’d believe you could rap your knuckles on solidly, but, said Chris Jordan to me, ‘It didn’t make up for the fact that in this one you could go to the very far corner of the very furthest galaxy, and feel you were the first guy there, and find something that was remarkable.’ He experienced it himself. ‘I can remember discovering, in one corner of a galaxy, two systems that were only 0.1 light years apart. This was fantastic! If you could find two systems that were really close together, and had economies that were highly differentiated, you were in the money!’ Chris Jordan knew exactly how the game universe worked, and he believed in it. He and David Johnson-Davies started to rough out a promotional line. You are a lone trader, tossed on the winds of fate. No, make that ‘tossed on the space-winds of fate’. Galaxies lie before you. What awaits you there? What perils, what opportunities? Nobody knows …

  And the game’s development went on. It proceeded in a kind of pulsing rhythm, as the assembly code that constituted the game shrank and then expanded again; shrank and expanded again; shrank and expanded. Before Bell and Braben could fit any new feature in, they had to compress what was already there to make room for it, the 22K of available space having been notionally filled up almost from the moment they began. So they were constantly patrolling the code in search of slack areas, stretches of assembly language which had seemed adequately concise at the time but which they now saw could be made yet more economical, yet more concise, and gain them a little precious elbow room. The quantities involved were minute. ‘We’d say, “Oh, I’ve saved three bytes,”’ David Braben told me; ‘“What can we do in three bytes?”’ A byte of memory contains eight bits, the simplest on-off binary units of data; so three bytes is a space that can hold exactly twenty-four 1s and os. ‘That’s how tight it was.’ Yet they could do things in three bytes. The quick fix that let the player travel to different galaxies, for example, was three bytes big. ‘This bit from here, this from there; we needed one extra function call, it was really trivial. The main amount was for the words “Galactic Hyperspace”!’ ‘We spent a lot of time fighting the limits,’ Ian Bell remembered. ‘We’d gain a few more bytes, and then with those bytes we’d add something, but then we’d think of something else …’ There was a pleasure in it, though: the pleasure of all fiddly tasks that you persist with and persist with and that suddenly reward you with progress in a rush, a lump, a clump. If you’ve worked over a flower bed hunting for bindweed and have suddenly been able to yank out a whole root system of the evil stuff, then you know what this was like and how compulsive it was. Here there was the intellectual close-work of scrutinising the code, then the moment of breakthrough when they spotted a way of squeezing something, then the nip and the tuck and the sensation of the code rippling into its tighter form. And then the reward of emptied memory to do new things with. ‘You’d find this rich seam, which might be ten bytes of space,’ remembered David Braben. ‘That was a delight.’

  Sometimes the zealous, minute work of compression seemed pointless to the onlookers at Acornsoft, especially when, as sometimes happened, Bell an
d Braben deliberately made some existing feature a little bit less good in order to accommodate a new idea. But it was one of these occasions that really brought home to all concerned the implications of the game’s revolutionary architecture. Chris Jordan: ‘I remember someone saying, “Did you have to compromise that little piece of the graphics to save just four bytes?”, and Ian said, “Four bytes? That’s fuel scoops.”’ Casting around for a four-byte-sized addition, Bell had had the notion of letting players buy a tool for their ships which enabled them to scoop up free fuel from the burning gas of stars. When he first thought of it, that was all he had in mind: just a straightforward deal that let a player who could fly well pay a chunk of money now and have lower fuel costs later. ‘Then’, Ian Bell told me, ‘I suddenly thought that you could use fuel scoops to scoop up cargo from enemy ships you’d blown up. It was one of those instant thoughts: I thought, oh, you could be a pirate then.’ With one little change, the game universe went through a moral revolution. If you could use a scoop to haul in the spoils after defeating an evil pirate, you could also use one to profit from zapping a perfectly innocent passing merchant ship. Instead of the bad guys being a special effect laid out on the computer, they became a category you could join. ‘That small amount of code opened out a whole pathway for the player, and that’s really when I realised that this game wasn’t just a straight game. It had this potential. Because it was an environment, you could add little things and they would blossom out.’ Four bytes’ worth of change, acting indirectly through an alteration in the environment, could add a whole extra dimension to the choices available to the player at any moment. ‘Meta-creativity,’ Chris Jordan called it, talking to me: creativity working away high up on the rules and parameters of the whole game universe at once. ‘It sounds very obvious now,’ he said, ‘but you didn’t get choices like that in games. You didn’t get choices about where you went, you didn’t get that wonderful feeling of having components you could determine the use of’ – like the fuel scoops. ‘So these tiny little features were absolutely essential. Ian and David were trying to squeeze in components that might give rise to emergent behaviours; that opened a possibility.’ ‘Once we’d got the possibility of being a pirate,’ Ian Bell went on, ‘we started looking for other things like that, and they suggested themselves from our SF background.’ Equally minimal extra snatches of code created police ships, to chase you for your crimes, and a legal record, to spread news of your blackened character to the systems you arrived in. Of course, the police would chase you with more or less zeal depending on the political set-up in the system, and a terrible reputation might be a positive advantage in some places. But that was the point. The simple additions interacted with what was there already in the game to generate much more varied and unpredictable outcomes: that was how complex behaviour emerged. They found that comparatively few dimensions of choice interacting with each other created a surprisingly solid sense of freedom. If on top of being free to fight, free to trade and free to travel you were also free to select how predatory you were, and how many risks you ran with the law, that was enough for the player to build themselves a whole persona from, in imagination. ‘I liked that,’ Ian Bell recalled. ‘I liked the idea that if you wanted to you could take a sort of monkish role, trade and eschew combat at all costs, never blacken your karma.’ You could be hero or villain, good citizen or hair-triggered psychopath.

 

‹ Prev