Original Elite on the BBC B - Computerphile

Writing Modern Computer Games is Not as Challenging as You Think

Modern computer games are written with a graphics engine in mind, and they're either using Open GL or something similar like DirectX. They are designed to take advantage of hardware acceleration, which makes it much easier for developers to create visually stunning games. On the other hand, my game is different. I've written my own graphics engine from scratch, without any hardware acceleration at all. This means that it's running solely on the processor, and not taking advantage of any built-in graphics capabilities.

I'm quite proud of having created my own graphics engine, as it showcases my skills in physics and programming. As a physicist, I was more interested in understanding how things work rather than playing computer games. However, writing the game itself taught me valuable lessons about logic and debugging. When there's an issue with the code, I have to go through the program step by step to identify where the problem lies. This process helps develop my analytical skills and teaches me to think logically.

Physics is also a field that requires structured thinking. When performing experiments or analyzing data, physicists must come up with a hypothesis and test it using controlled variables and careful measurement. This kind of logical reasoning is essential in both physics and programming. Furthermore, debugging code can be challenging, especially when there's no immediate feedback from the program.

I've found that learning to program a computer requires dedication and patience. Unlike older computers like the BBC micro, which came with simple commands and fewer distractions, modern PCs have a wide range of features and tools that can make programming more complicated. To start learning programming on one of these machines, you need to download a compiler or basic program and then make an effort to learn. This is not as easy as simply typing commands into an old computer.

I'm not much of a gamer myself, and I've only played SimCity occasionally. However, writing the game itself was more interesting than playing it. Many people do enjoy playing computer games, but for me, creating something from scratch was more appealing. The experience taught me to think logically and develop my problem-solving skills.

These days, I find that I'm not as much time to work on this project as I used to be. It's a shame, because the past few weeks have seen some significant progress. In fact, it's probably the last week I'll spend working on it, unless something comes along and sparks my interest again.

If you're interested in seeing what I've created, you can try sending an email with your comments to myself. However, be aware that I might not remember to check it. Who knows? Maybe someone will stumble upon this article and leave a comment that's worth reading.

"WEBVTTKind: captionsLanguage: enThis is a computer game called Elite. This is really Well eliteshow you in a minute where we load it up, but this is elite was the firstReally proper game to use three-dimensional graphics this current generation of gamers won'tRemember a time when games weren't 3D so before that time we had sort of games like like thiswhich is sort of this is the of Pac-man for the BBC andThis is this comes on tape of course for the thisComputer when the game came out which was in 3DActually just blew everybody away. mean the guys who wrote this in my view geniusesmean they they wrote it belem braben they wrote this while they were undergraduates at Cambridgeand they were probably no than 20 years old when they wrote this andThey made the computer they made this computer do something which nobody thought it would could possibly doThe program they wrote was just a work of genius how they managed to get this phenomenalLevel of Graphics onto this computer so you can see this is a load it up shortlyBut it's all wireframe of course not colored in. It's not shaded and lighter and lit properly, but this was this was for the1984 I think it was at the timeI really became slightly obsessed by this game much of meAnd I played it and played it and played it with my mate Pete SiddawayWho was my friend at school and we played this thing from ages and ages and ages?It's actually one of the first not only one of first 3D games invented. It's one of the mostOpen-ended gamesSo there's no point to the game you can either you can decide whether you want to so there's no levelsThere's no lives involved so computer games like this one justPreviously you had you had three lives if the monsters got you you diedAnd you moved on to the next life and the game the idea was to keepGoing through the levels and amassing as many points as you could this game is completely unlike that. There's no levelsYou just start off with a spaceship and you can explore the Galaxy wherever you want to go so this computer?This is it when you bought itIt came with it didn't come with a disk drive or anything what you did is you attached a tape recorder to it?This is the tape for Elitethis isn't the original tape recorder we had for it that one broke after many years of use so this is aTape recorder we had lying around the house, so the first thing I've got to do is rewind the tapeWhat I'll do is. I'll pull the plug out to start with so you can hear the dataBecause this is the great thing about this is you can actually hear ones and zeros that coming out of thisThis is the leaderso this is a very evocative noise from my childhood, soyou're hearing there is ones and which had been recorded onto the tape and itLiterally it stores one as one frequency of noise and a zero as a different frequencyit's just oscillating between those two different frequencies noise frequencies playSo I'll stop that and I'll have to rewind it again , and then we wait. Oh, nodon't rewind it far enoughSo none of this instant put a disc in a computer or boot it off a hard driveYou have to wait you had to be patientSo now it's confused because it's it's loaded part of the data, and I've told it to rewind there we goSo it's found it noticeAll these ones and zeros all this noise is being going into the computer and being translated now into Data the first time IPlayed this again was probably first time in about 20 years that I played it againand I got it down from the loft my parents loft and set it all up and I actually let my kids play it andso I've got adaughter who really really loved playing it. She wasn't very good at itSo now we have to wait about two or three minutes before it loadsRight so the first thing you see this this is just blew me away the first time I saw herI thought this is absolutely fantasticYou got a rotating wireframe graphicsSpaceship on the screen and this was just incredible we're moving from Pac-man to this was absolutely wonderfulRight, so we've got a cargoNow we want somewhere to go so we go to this local chart here. We'll use our arrowLet's go to RioCenter the cross on there, and we can look up data on systemSo we can look at what the planets like I still admit to being slightly obsessed by this gameBut no the other reason is that the way that they put this data into the programSo this was you've only got thirty two k of data to play withSo they've created with this 32k. You've got a whole galactic chart, so these are full, but this is aGalaxy of Star systems each with its own population each with its populatedifferent aliens populating a planet and and differentLevels of and so on and there's eight such galaxies there's absolutely no way you can just store all this information in32k this is all generated randomly generated with a random number generator and that random number generatorthey can use to spit out whether thethe planet is populated by cats or by humans or whether it is populated byWhether the technology is high-tech or the rings fill in the each one of these red buttons does something each one of these?Function keys does something I've lost the original bar that came with the game, so I'm now going to press this buttonWhich going to launch into space?So there we are we're presented now with the planet in front of us as a planet laughs in front of usSo this this diagram here this tells us. What's around us so as I move through I move through spaceLet's increase our speed. This is our speed dialer gauge up down here . I'm pulling up the spaceship nowAnd rotating back. There's this there's our space stationWhat's that? Oh?It's pythonOkay, all right, so it's firing at us nowBecause I've upset in life. Oh, ohThat wiped out the front shields its launch another missile. I don't think we're going to have we around very much longerBut so there goes our cargo spinning off into spaceBut after a while, I became more interested infiguring out how it worked andI became eventually became completely obsessed with how it workedIProgrammed as well. I call it game. There's not much to do with itWith solid graphics, so this is wireframe graphicsBut now I should have been probably studying for my gcSes stroke a-levels. I was spent more timeWriting this than I was doing studyingwhich augments cause b to flunk my a-levels actually the next generation computer had more processing power andWas able to not only do wireframe graphics, but it could doGraphics where you can shade in the faces as well?So I've actually ported my game to the PCso I don'tI've taken the original code and put it on my laptopactually now so I can show you if you if you want to if you're interested inSeeing this so this is so this is more modern yes, so this is running about thousand times faster than that computerBut I learned to wait for it to boot up now, remember even though he's coming out from sleepI can't have switch it on I started programming. It's probably when I was about. I was just turned 17I it was and I still tinker with it now when IOriginally wrote this game. It was the time when you were a guy in the bedroom with a computerYou could like the guys who wrote you could make an awful lot money out?Of one person or two people writing a computer game and selling itso this is my dream right I was going to sell I was going to write my my own computer game andSell it on, but I was I was a bit too late really by the timeI sort of got anywhere in my game. It was be getting into the area whereTeams of programmers were required to write games now of courseYou know there's practically movie studios or create your own needed to write computer games, originally. I wrote it inAssembler which isWhat the which is what elite is written into in it?That's the that's the language that the processor understands is each so you write each individual instruction that goes through the processorSo you a very very basic so you can write things like add store subtractThat's pretty much it actuallyShifts are you multiply by two and things like this?So they're very very basic commands, but once you can build up codeSo you have to write an awful lot of it, but you can write routines and things which willWhich will create these fantastic graphics, so originally I wrote assembler. Which was actually for the acorn archimedes at the timeI wasn't writing for the BBC. I was writing an arm assemblerWhich is arm is nowthe processors you find ingreat majority of Mobile Phones around the worldsoAcorn the original company that made the BBC micro and the and the archimedes eventually went bust but not before it spun off this otherCompany called Arm which was the company that made the the chip the processor for the acorn archimedes?And that chip is now used in a tremendous number of mobile phones and mobileApplications all around the world I wrote an arm assembler, but rapidly became obvious thatTo get anywhere with it was it's just too hard to write an arm. Assembly. You can't to make progress faster. IHad to write in a higher-level language, so eventually I wrote it in C and C has the advantage that you can port itso it means you can take the code you've written on one machine andWith only a little bit of tweaking if you've written it just right you take that code and can put it on anotherComputer and you can compile it for a different computer, so in factI took the code that I for the archimedes and originally I ported it over to the Macand it worked just as happy on the Mac with a bit of tweaking andThen when I got with my mac ibook, and had a got a PCI ported over the PC, and I carried on just fiddling with it reads. I call this arenait's a sort of it sounds a bit like something that it's a nowadays it sounds a bit like aSomething will be on a Anderson film but sort of a combination of the word Aura and arenaSo like arena is in battle and or is it in something sort of slightly?Mystical or something like with hindsight is a slightly embarrassing , but I can't change itIt's the same I have to stick with that name. This is your spaceship, so unlike EliteI've put a an avatar spaceship in so there's there's this. There's the spaceshipSo this is essentially what I had on the acorn archimedes. I put in moregraphics over time as the process of the computers have gotten more Modern are able to handle it,Planet now is got actually you know this is these are the real continents on the planet. Africa there it mitadThey're a bit blockySo Africa coming up that South America look there, there's North AmericaThere's Europe up there, so I you know it mucked around itAnd I've also given Earth some rings which she doesn't have so this is something that elite couldn't do is that I?Can fly backwards in this so it's a paying, newtonian mechanics this means. It's nothing to look at compared with modern computer games because, I've writtenmodern computer games are written with aGraphics engine in mind. They're either opengl or something like this orDirectx or something like that whereas this oneI've written this is I've written the graphics engine from scratchSo this is my own graphics engine in facts not making use of any hardware acceleration at allIt's just running on the processorThis is I'm quite proud of having to have written my own graphics engine, so I'm a physicist nowI'm employed by the university as a physicist. think basically the writing this this game is not a game by writing this thisbit of graphics here isProbably one of the biggest reasons I'm doing what I'm doing now and IWasn't interestedactually in going into the computer games industry eventually IDecided that I was more interested in writing the thing than playing it after you're going to the computer games industryyou've got to be really enthusiastic about computer games, and I just ICouldn't you know couldn't care less really, but what it did do it taught me a certain wayI think a certain logical way of thinking so in structured way of thinking especiallythedebugging so-called debugging of the programs is probablyteaches you a lot aboutlogic and finding your own answers to theif you've got a program like thisand it doesn't work you've got got to go through the program andFind out which bit of the program doesn't work where he made a mistake somewhereSo you've got a very logically go through step and find out whereabouts in the program the program is not or notworking and quite the way you want andSometimes all you get when you run a program like like this after you've made a change it just spits out nothingit just saysSegmentation fault or worse it just crashes the machine entirely and from that from that pointYou've got to work out what what the problem is with the program and it teaches you a very logicalStructured way of thinking of course physics is also a very you have to think in a very wayin terms of coming about an experiment in physics to try and work out what it is working with theexperimental or where the are with the experiment this kind of thing soSo this is this probably goes a long way to explaining what I am now I?Have to admit. It's slightly addictive doing thisBut it is very difficult I think nowadaysand if you pick up a machine like this, this is a complicated piece of equipment this PC andto pick it up as a child now and start to do aComputer program is very very difficult. I mean you're not presented with aCursor Iguess in the BBC micro when you can just start typing presented with this you know mouse andgraphics and all these windows and things and if there's a lot of distractions there you can't justimmediately start typing and your first computer program and so onThere's that you know you've distracted by the internet and all this other stuffso you've really got a ifYou want to start learning to program one of these things you've really got a try you've really got toyou got to download a program like a basic program or C or some compiler like this andthenReally make an effort to try and start learning programming whereas when you switch on one of these BBC micros is practically naturalI mean you just wait for the first thing. You've got to do is start typing commands into it wellI'm not a gamer at all actually not um I don't play computer games at all the only computer gameI'll admit to playing is simcity and I only play that occasionallybut I really not interested in playing computer games and a lot people are but IBecame after elite I became more interested actually writing the thing rather than and how it workedWhich is part of the reason why I never made anything of this they never actually could be bothered toturn it into a prefer anything more that you could play and shoot shoot things and go andDo all the wonderful that you can do in elite with what's the future for all reena?This is probably it I find and less time to do anything with itThese days is sort of probably in the last week. I've done more on it than I've done in the past ten yearsthat's not supposed to happenIf you've been doing some programming or coding of your own whether it was 20 years ago or 20 minutes agoWe'd love to see it send an email to myself or will I have the email address on the screenAnd we'll have a look we love that kind of stuff who knows maybe we'll put something here on computer fileBy the way, I'm in Shawn's office. There's no way. I'd have this PC rubbishleave comments, underneath\n"