Justin Fletcher has just completed his work on Doom+ for R-Comp. Although he's now working on two further games, we persuaded him to pop into the Acorn Arcade studio for a little chat.
Acorn Arcade: The Acorn conversion of DOOM was perfectly acceptable by most people's standards before the advent of DOOM+ so why were all those changes necessary?
Justin Fletcher: By many peoples standards you can use a Mini instead of a Jaguar. It gets you from A to B just the same. The difference is in how it does it. There will always be people that do not think that the changes are necessary, but that's the way of the world. I /really/ hate playing now without the PIP map - I just get disoriented and forget what I'm doing - and that's just one example.
There were numerous problems which were encountered using PWADs with the old version which mean that there are some that you just could not play. Similarly, there were some that worked but were not quite 'right' - see Cheers for an example. Some, like Trinity, had their own particular faults that came from their pre-Ultimate Doom heritage. And then there was the wonderful fun of trying to play Doom 1.0 games; RISC OS DOOM 1.01 only supported IWADs for 1.04 onwards, but I wanted to have support for all released versions, so 1.00 support was needed.
I would like to think that DOOM+ is now the best produced and most powerful Doom currently available. Having played the new version, would you go back to 1.01 ? Or would you drop your resolution and play in 'standard' 8bpp, 320x240 mode ? (horror of horrors!)
Acorn Arcade: Would you say that DOOM+ was really just a programming excercise because you've added so many things that look like they may have started off as "wouldn't it be cool if..." sort of thought?
Justin Fletcher: Oh definately. Almost everything I've ever written is a programming exercise. The very first thing I did was revamp the front end - as you saw with 1.02 - just to see how much nicer it could be. This developed as I thought "it's frustrating to do x, y or z. Can we do that easier ?"
If you look at the graphics utilities that come which the pack (which I'm disappointed to see that nobody has commented on), you'll see a very good example of what happens when you just try things out. The utilities are not the be all and end all of conversion for the graphics but they do the job pretty well.
A lot of the features led to one another, for example I had added lots of features that were accessible through key pressed (eg Shift-Tab, IDTRANS, etc) and wanted to add them to the menu. To do this meant I needed some new characters for the menus, which meant I needed new graphics. It also meant we needed more menus. Because of that the menus became a level deeper, and gained the ability to auto-centre. Some of the menus looked too short so I had to invent options to make the menus look bigger.
In fact, there is still one option which isn't actually documented anywhere except in the config file. The automap_ping value determines how quickly the ping spreads out, but I just couldn't think of a way to fit it into the menus or how to show it if I did. It's just there as a thing you can change if you want to.
Things like the translucencies are something I'd not like to take credit for - they're actually XDoom's fault. I got stuck in York one day for reasons that are too complicated to recount so I went to the uni, compiled up XDoom
and tried out the translucencies it uses. They aren't as controllable as DOOM+, but they looked very nice so when I got home I implemented them.
From the translucencies, we have a set of tables that are used to 'mix' colours at 3 different proportions (in 8 bpp), and this led to the use of the antialiased map as well.
The multiple status bar lines are actually IDs fault. They wrote a lovelly
scrolling text widget that just didn't work so I fixed the tiny things that were wrong with it and suddenly there it was. Similarly it was extended when I found that the clock needed to be right aligned.
Adding the 'only give the keys you need if you do IDKFA' feature gave me the impetus to do IDKEY#, obviously.
Some of the 'wouldn't it be good if' ideas were more nightmares than anything else. Trying to correctly sort the lumps so that they could be looked up
faster gave me endless headaches because I just wasn't thinking straight, but
now means that whilst the menu is displayed, you get a frame rate around 5 times higher than previously. This doesn't affect single player games, but in network games it's a quite staggering difference.
I think that almost all projects start by being an experiment and eventually grow out of control or find a good balance. I hope that Doom+ has the correct balance, and that if you think it isn't you can turn enough things off to
make it the correct balance.
Acorn Arcade: Are there any major differences between NC DOOM+ and its desktop sister apart from resolution?
Justin Fletcher: Nope. The 'original' NC Doom+ that was demo'd to people was version 2.00 (which is why the released version is 2.01, by the way) and had one or two misfeatures in it - it didn't cope so well with add on WADs - but the current NC Doom+ is exactly the same as the original, except that the cache files are pre-calculated so that you don't have to generate thme the first time it is run...
Acorn Arcade: What new niceties are we likely to see in the new version of DOOM+ which should be with us around Christmas time?
Justin Fletcher: The main things are tiny bug fixes that you'd not notice in normal play, but only in network games or with PWADs. However, we should have some form of filtering. As to how it looks... well... you'll have to ask those
people that saw it at the show :-).
The spreading plasma gun will work 'a little' faster, but as I've said before, that's just sheer memory access that it can't do. There will be at least one new cheat, although whether I'm going to document it, I'm not sure. As for anything else... well, you'll just have to see...
Acorn Arcade: You produced a couple of small net-play games a while back which enabled users to play noughts and crosses and also connect 4 across the internet. What was the reasoning behind these and are you hoping others will use your ideas and foundations to make something bigger?
Justin Fletcher: The reason was... erm... no, I've no idea... I think it was just that I wanted to play some kind of network game and those were the simplest
to implement. I've been meaning to do Battleships for a long time, but I keep putting it off in favour of other things. Although NetOXO (naughts and crosses) was very simple wasn't designed around a central 'core', Connect4 was different because I made it use a library so that (hopefully) other people would attempt to write simple two-player networking games.
So far, though, only one person seems to have taken me up on this challenge and NetReact by Robert Hampton is the only thing to use it. I would have thought that the number of budding programmers out there would mean that it would be a wonderful thing to write a game that could be played with people at the other end of the country.
Maybe I'm just mistaken and nobody wants to play network games, or maybe
nobody likes my library.
Acorn Arcade: Was DOOM+ your first venture into the games programming area or have there been others before?
Justin Fletcher: In essence, yes. Other than the two netgames I wrote, I'm not sure that I'd like to talk about the others really as they didn't go very far. I did attempt a version of Civilisation on the BBC and for my A5000 and got to the point where units could fight, but no further really. They were the only real games I'd ever tried and they'd gone nowhere.
Acorn Arcade: You have programmed many other things beside the net games and DOOM+ but how did you become involved in the DOOM+ project with R-Comp?
Justin Fletcher: It's odd - I've been asked that question a lot in the last week, but the reason was from my somewhat vocal comments on the pirate version that leaked somehow. I worked on that for about 12 months I think, adding network support, window games, drag and drop save, fixing bugs etc all on an A5000. That's without any form of source code (the source had not been released at
that time). After that my memory goes somewhat and I get muddled. I think I rang Eddie to tell him of the changes I'd made and sent him a copy. Later (who knows how much later!) Andrew emailed me and later rang me to ask about the network drivers and Eddie sent me an early version of the game.
Then project deadlines hit. And after them revision. And then Exams. And so nothing happened. One day I popped on to IRC to be greeted with, "we support you Justin, give 'em hell" or something like that, and so I looked in the Newsgroups. There was a mail there from RCI saying they were looking for
someone to write the network drivers for Doom as I'd obviously stepped down from it. I was rather cross (or more likely, incredibly tired) so when I got home at 6pm I started writing them. By about 9am I had them working and they seemed to be going ok - on my single machine. So I tidied them up, did a screen shot or two and rang up Chris at uni - getting him out of bed in the process (sorry Chris!). Then I lugged the computer up to the uni so that I could actually test it on a live system. Finding that it works was - to say the least - rather suprising. In any case it was around midday that they went off to RCI and... well, that's about it... Chris went to lectures and I collapsed on his bed until that night when the bug reports came back :-).
After that I think Andrew contacted me about doing more Doom work, and 1.02 (the front end enhancement) came out of that, and then finally a little floppy arrived labelled 'Doom source'. It's scarey to look at code that you've seen the inside of and then finding that what you imagined it to look like is actually what it does look like...
Acorn Arcade: What are you working on at the moment?
Justin Fletcher: In my free time, I'm doing a lot of things. I'm working on Doom+ primarily, but dropping back to the network utilities I write for the freenet archive every once in a while. I chop and change on a daily basis there so that I don't lose track of where I am going on any one thing - I can see things more clearly if I switch every so often.
For RCI, I'm doing two more games that I'm hoping will be out mid-January but you know how deadlines go in the Acorn world...
Other than that, I can't really say. There are some ideas I have in my head and many on the harddisc. I'd like to finish my FTP client, I'd like to get the WimpCTCP protocol extended to cope with extended 'areas', and I'd very much like to get a new version of the SWIs manuals on the freenet site, but at present I'm working from about 10 till 5 and it's not enough to fit all the work in :-(.
Acorn Arcade: What do you think the future holds for the Acorn games market as well as the market as a whole?
Justin Fletcher: No comment. To be honest, I've no idea. Whilst people still have the machines there will still be people out there who want to play games or use applications for them...
Acorn Arcade: Thanks very much for your time, we wish you the best of luck in your future exploits!
Justin Fletcher: Thank you, it's been... um... fun, I think :-).