40 years since Elite became the most fun you could have with 22 kilobytes
The Reg talks to co-creator Ian Bell and coder Mark Moxon about what's under the cobra's hood
Retro Tech Week In 1984 the launch of a computer game was reported on British national news. The purported reason? A news editor apparently walked in after lunch and found all the staff were playing it.
That game was the legendary space combat and trading sim Elite. Commander Jameson was the name of the first character the player could control, and as the days went on, thousands of Commander Jamesons launched out to explore eight galaxies and 2,048 planets by way of 3-D wireframe graphics, a realistic physics engine, and astounding gameplay. The code used just 22 kilobytes of memory, and players could get the game through the post. Sophie Wilson, who designed the BBC computer that the game ran on, famously described Elite as "the game that couldn't have been written."
Its design was highly unusual. For one thing, it was possibly the first open universe system, and secondly, it didn't rely on traditional goals such as high scores. Players could trade among the planets, try bounty hunting or killing traders for cargo, smuggling illegal items, or asteroid mining, if they fancied a very slow time of it.
Written by Ian Bell and David Braben while they were studying at the UK's University of Cambridge, Elite was launched with huge razzmatazz by Acornsoft, was shipped with a superb user manual and even a novella to explain the universe. The original Elite ended up selling an estimated one million units. (That's chicken feed today, but in 1980s computing that was a huge number.)
There were two popular sequels and in 2012 a Kickstarter was launched by Braben to reboot an Elite equipped for the 21st Century. It worked, with Elite Dangerous selling more than three million copies and gaining a loyal fan base, many of whom weren't born when the first software shipped.
Then, in 2021, web developer Mark Moxon finally managed to assemble the original code in a playable format (thanks in part to the COVID lockdown) and has made it freely available for those looking to try the original. He explained to The Register how this was done, which you can read later in the piece.
But first Ian Bell, who has since moved out of gaming into computer-aided design, spoke to us about the early days of Elite and how this legendary game was spawned.
The Register: "Elite was unusual for the time as it was a collaborative effort, how did that work in practice?"
Bell: "There wasn't any email; we used to send each other five and a quarter inch floppy disks by post. We didn't have printers at that point. Then eventually we both got printers. So he was basically sending me store spooled listings, text files, the 6502 assembly, which I would then import and convert to BBC. I think that's how we did it.
"This was all happening in the summer holidays initially but then, when we were both back at Jesus College together, then we would walk in each other's rooms to work on things. I did the bulk of the coding on the NES version. David did the original ship plot. Then he did the universe generation and the trading. So they got bolted together and then eventually got to the BBC."
The Register: "The open-ended nature of the game was a revelation. How did you do it?"
Bell: "With Elite we use a procedurally generated universe. We settled on a galaxy of 256 planets, but originally, we didn't have the eight galaxy limit. Because usually, once you're procedurally generating, there's no reason to limit it.
"It's procedurally generated around a random number sequence that's throwing out planets, essentially. And so once you've got that, you've got essentially an infinite number of planets as long as your random number generator doesn't cycle. Originally the galaxy count started at one and just kept going up.
"But David Johnson Davies [founder of Acornsoft] said, no, that we should limit this - you should only have eight. And he was absolutely right. If we had had a hundred of them, people would realize that there was absolutely no way that these things were being stored in the computer.
"But, of course, it was randomly generated. I mean, there were dysfunctions. There were planets that are more than the seven light-years fuel allowance. Adding extra fuel tanks is probably something we'd have done, if we hadn't run out of memory."
The Register: "In terms of gameplay there were many different career paths people could take. What inspired that?"
Bell: "I liked the idea that the player could choose their own moral path. And if you wanted to try to take a path of non violence and just trade on safe trade routes and run away from pirates rather than fighting back, then you could do that.
"As for the Thargoids, David [Braben] designed them to look different from all the craft. So we decided we wanted to have aliens, and they were supposed to be intrinsically evil. The idea was that they were people that the player could kill with no sort of guilt accruing. That was the idea of them.
"Elite was about inspiring people. Both in terms of space. and in terms of what games could be with both three dimensions and that sort of open gameplay as well."
The Register: "Do you still play the game?"
Bell: "I haven't played Elite for a very long time."
The Register: "So what do you do now?"
Bell: "I had a hobby doing UV body painting at raves but haven't been to a rave in more than ten years now. I used to be really into the music but haven't listened to any in years.
"I'm working in computer aided design now. There's a lot of geometric algebra in it; it's all back down to rotations again. Part of Elite for me was the math of it and now we're trying to introduce higher-dimensional mathematics into CAD.
"We're in the 21st century now and yet CAD is still using 17th century geometry. They're not even using 18th century geometry - it's ridiculous. I'm enjoying working on that so I am now coding in C++ on big modern PCs. It's a different skill set - still math and optimization but it's very different.
"I think the notion of low-level programming on extremely finite resources may come back in terms of nanotech, but we're not really there yet."
Yet the flame of Elite still burns
Developer Mark Moxon, a former editor of Acorn User magazine and a key part of the H2G2 project, was hooked on Elite from the first time he played it, and has recently managed to recreate the game in its entirety from the original code base.
The work was a labor of love for Moxon, who said he was entranced by the game back in 1984 and continued to play it for many years. Bell had released the source code in November 1999, which led to a falling out with co-creator Braben, but when Moxon stumbled across it a few years later it was "completely unintelligible," he told The Register in an extended interview.
"I looked at it and thought 'I can't understand the word of that'," he explained. "About 2014 Paul Brink put together an analysis of the disk version, which was a real step forward. And then lockdown happened."
The Register: "So lockdown gave you the time to do the job?"
Moxon: "Yeah. And it was perfect for all those projects that you park. Thinking it would be nice to have time to do that. And, all of a sudden, you're sitting there and being told by the government to occupy yourself and not go out. So for somebody with an office full of half finished projects it was perfect. I'd always thought that that'd be a great thing to do but never thought it would happen at that point.
"During lockdown I stumbled across this 2017 GitHub repository where a guy called Kieran [Kieran Connell of the BBC vintage code hacking group Bitshifters Collective] had taken the source code, and built the Python scripts to tackle all of the copy protection and encryption. I thought this was just arcane magic, believe it because it meant that I could build a version on my Mac, and actually run it and play with it, and poke around with the code."
The Register: "Now that you fully analyzed the code is there anything in there, which you're finding is applicable in day-to-day coding in terms of simplifying and reducing bloat?"
Moxon: "Only in the sense of that it's quite a good thing to do. But to be honest, working in business, it's never a high priority. I think if you were working in embedded systems, there would be a lot to learn from the approaches that these guys used, as often because embedded systems use much more simple micro controllers.
"When you're knocking out a back end for a website, nobody's asking you to lock things down that tightly; that's the reality of business. Also things don't have to be finished when they're released these days. When when you're sending out something on a cassette tape, you really have to be getting it right. It did have a couple of bugs when it was launched and they did have to do a recall, but for such a sophisticated bit of code it's something pretty amazing."
The Register: "So to settle one classic argument - how big is Elite exactly in coding terms?"
Moxon: "So with the classic Elite it's around 22 kilobytes. The code is actually just 21,906 bytes of main memory, leaving 66 bytes free in the whole machine. So pretty much is the upper limit.
"I guess it also depends on how many features you've got, because of the Acorn Electron version. And they had to drop Thargoids and some other really quite big features. It was a 10 percent reduction, squeezing it into the Acorn Electron."
The Register: "When you examined the code, what were your key impressions?"
Moxon: "It's really interesting to compare people's coding styles. Because Elite was written by two people, you can tell who's written which sections generally often, not least, because the variable names are different. That's because David Braben wrote his code on an Acorn Atom before getting a BBC, so for later code so it isn't an exact science.
"Elite is written by two different people and kind of squished together. And it does show there's an awful lot of duplicated mass routines and so on, which if you were doing it one person, you will probably write one more general multiplication routine, rather than 10 different ones with subtle differences. They even had room for a couple of duplications within that code."
The Register: "Errors in a code base that small?"
Moxon: "That's right. Yeah. And luckily, I was able to find that out and, fix it and use that space for adding some modifications to Elite, which are always good fun. That one was only a few bytes. But it enabled me to backport a flicker free algorithm that was in a later version for the BBC master. And that didn't need many extra bytes."
The Register: "It was an amazingly complex game, although the days of wire frame did require some imagination."
Moxon: "You did have to use your imagination but they included in the box the fantastic manual, and that got people thinking.
"There's an interesting thing about Elite, and I expect you'll find this in the comment section on your article. People will absolutely swear blind they've encountered things in Elite that simply aren't in the code at all. People go on about how they remember finding generation ships, or being boarded by the police. Which doesn't happen either.
"There are so many things that just simply do not exist in this game that people will swear blind happen to them. And even when you say, 'Look, I'm really sorry, it's not in the code,' they go, 'Well, I must have had a version that it was added to'."
The Register: "And there were a lot of versions, as well as two follow-ups and a reboot, Elite Dangerous."
Moxon: "Well indeed. I didn't play the next two versions on launch because they were PC games and I was using a Mac then. I tried them out a few times but the Newtonian physics engine was very tricky for someone raised on the original.
"Elite Dangerous is lovely, however. When they kickstarted the reboot I made a little contribution, so there is a station with my name on in the game. It blew my mind, you know, that wow factor in VR was hard to beat. It's still impressive. It really is." ®