Note that "Keen Dreams" is the game sometimes called "Commander Keen 3.5" or "The Lost Episode"; unlike episodes 1-3 and 4-6 which were made by ID for sale by Apogee, Keen Dreams was (I think) the last game ID made to fulfill their contractual obligations with SoftDisk. It's interesting in a number of ways - the engine and art is very clearly halfway between the first and second Keen trilogies, it's the only game where Keen doesn't have his iconic pogo-stick or his Neuralizer Ray gun.
"On October 24, 2005, 3D Realms (formerly Apogee) released a maintenance patch to fix a bug in the game which set the player's computer's clock backwards 100 years after playing on Windows XP." lol.
Secret Agent, anyone? I still love that game. In fact, all the old Apogee games had a sense of mystery and discovery that's sorely missing in modern titles. (Or is it nostalgia?) I remember playing through so many shareware titles and salivating at the new goodies that the nag screen promised from the remaining two episodes!
By the way, Apogee has released a lot of their old titles for free. You can find them at 3drealms.com, in the Downloads section.
A little slice of history regarding one of the technical foundations of Commander Keen, for those that aren't aware:
"Then, the first breakthrough. John Carmack devised a smooth, scrolling routine similar to that used for the background of Nintendo games but never before possible on the PC." [1]
The technique is called, adaptive tile refresh. [2]
It's fascinating that this was something new on the PC that late.
This is roughly how most scrolling on the C64 happens (though it works by reducing the visible display by 8 hires pixels on either side of the screen, and scrolling at most 8 hires pixels before you need to shift "tiles" / characters). I'm not sure it was new with the C64 either. While most C64 games used sprites for the movable objects, there are absolutely exceptions that tracked damage.
On the Amiga, however, the method described is basically pretty much how you're expected to do scrolling from the outset(it has much more extensive support for it than EGA did). AmigaOS even came with built in support for managing damage lists for such objects ("bobs" for "blittable objects") and double buffering from 1985, though most games would have used their own code for it.
For these systems redrawing the whole screen was simply never seen as viable, or worthwhile. The Amiga hardware support for doing this kind of scrolling + the use of the blitter for moving game objects and replacing damaged sections made this method the obvious choice.
Even double-buffering was sometimes seen as too wasteful, with a solution being to sort damage lists and tie updates to the raster interrupt to update the screen before the raster beam reached it.
Yup. We were doing quite similar things on the Atari 6502-based computers (it helped that there was hardware scrolling, but only to a degree). The PC graphics hardware was just embarrassingly awful (it's like the hardware engineers on the CGA decided to make it insanely hard to do any animation -- WTF, you're doing a color display on a consumer product?)
Ah well, they won, and Atari / Amiga / Commodore lost; better doesn't mean you win.
> Ah well, they won, and Atari / Amiga / Commodore lost; better doesn't mean you win.
This being said, Atari and Commodore had several YEARS of opportunities to launch new machines and "kill" the PC (or at least become something that would last longer than a generation), and did not do anything. The Amiga 1200 and Falcon were both very late to the party and underpowered when PCs started to be cheap enough and way more powerful than these machines.
PC gaming also benefited from the fantastic works of Origin (before they were acquired by EA) with a bunch of exclusives (Wing Commander 1 was a revolution in 1991, and convinced many people the PC could also be a gaming platform).
I was on the Amiga during that period and I could see the tide coming, while Commodore and Atari stood and just watched. What a pity.
No kidding about the lost opportunity. It was frustrating enough from inside Atari (both the Warner and Tramiel companies).
- Warner was all about politics, and marketing had taken over major engineering decisions. It was one big balled-up rollerskating disaster as marketroids failed to grasp things on the level of: Adding a HELP key to a computer keyboard does not mean that you automatically get help in every application, especially not game cartridges with very limited space.
- Tramiel was all about not spending money. Vendors who were in the know (like DEC, who serviced our Vaxes until the Tramiels stopped paying for maintenance) demanded payment up front, with cashiers checks or other guaranteed instruments.
Both of these organizations were really tough to do good, high visibility products in. Lots of good stuff got canned (by people with political agendas to push), or couldn't be developed because of the lack of good people.
Sometimes I daydream about how things worked out in an alternate universe ... :-)
Commodore was severely dysfunctional as long as it existed. I recommend the book Commodore: A Company on the Edge (there are two editions - the new edition was meant to be split into two volumes, but only the first volume covering the "8-bit years" have been published). Given that Tramiel brought a lot of that dysfunction with him to Atari it is not much of a surprise that they ran into problems too.
Lack of proper R&D investment was a recurring theme at Commodore from the beginning, but there were tons of problems. Not least towards the end - well after Tramiel - there was Bill Sydnes: Commodore actually hired the guy behind the PCjr - sometimes described as the worst flop ever. So they hired him, and he did his best to live up to his reputation from the PCjr.
The worst part was that he proceeded to make decisions based on ludicrous ideas that "everyone" in the Amiga market could have told him were idiotic (trying to shift more of Commodore's business to the PC division; release a new flagship Amiga model with IDE in the Amiga market? I still remember the total shock and disbelief everyone I knew had when the A4000 was finally unveiled, too late, at too high a cost). The worst part of course being that in doing so he also cancelled or demanded changes to a number of projects that were much better. E.g. there was the A3000+ which would have been a far better machine than the A4000 with the same CPU models, and was far cheaper, and was almost ready by the time Sydnes cancelled it (there exists a number of prototype models, and they still work), and had SCSI. And added a DSP.
But even with proper management there was the Motorola problem - their inability to boost the performance of the 68040 far enough, fast enough. It's not clear Commodore would have had the resources to pull through a PPC transition the way Apple did.
Arrogance, plain and simple. I'm not entirely sure it's warranted, but it brings Apple to mind. They, too, experienced a massive slump... but at least they recovered.
Funny thing is, it seemed to be that Amiga would be making a comeback in the early 2000s as well, with "new" hardware (PPC, and still relatively underpowered). Alas, things fizzled out. Way too late to market, and way too little buzz.
Actually the PPC Amigas were already available in the late 90s (my memory is not clear on when anymore, but maybe 97-98), but they were anyway too expensive and too underpowered to change anything. However it's been interesting to see that third parties have been pushing the hardware forward, as well as the OS (Eyetech for Hardware, MorphOS for new OS inspired and partly compatible with AmigaOS). There's still a very small and niche community using "modern" Amiga. But it's only a shadow of what it was...
They used Motorola CPUs all along, but they kept doing so in the face of their diminishing (relative) performance, THAT'S what I was trying to point out. :)
AAPL bailed and went with Intel as we all know. I can't help but wonder what would have happened if the Amiga rights holders would have done something similar.
Don't forget that the B in IBM stands for business. It took æons for the PC world to realize that graphics mattered for more than pie charts and other “serious work”. Sound was similarly AWOL for a surprising amount of time other than for basic alerts.
The BBC micro had a similar arrangement to the Amiga or EGA, and this was the way a number of games (Repton, Exile, Ravenskull, Uridium, JCB Digger, amongst others) did their full-screen scrolling. (I think the stride was inferred from the displayed total though so when scrolling horizontally some flicker at the sides was pretty much inevitable.)
Double buffering was rare, due to a distinct lack of memory, and games would have had to use dirty lists as a 2MHz CPU just isn't fast enough to redraw the entire screen each time.
I remember reading in Masters of Doom that they had actually asked Nintendo if they could license games to get them on personal computers, Obviously, Nintendo declined. They were able to get the first level of Super Mario Bros running on personal computers and used that method in the Commander Keen series.
Pretty good, but the technical explanations were pretty light at times. I'd really like to have the narration they had and on top of that, much more details about the technical side and how it was achieved. When you talk about literature you actually quote authors, when you talk about hackers I think it's appropriate to go back to the code and what it does, too.
When I read the description of how EGA worked, you can't help feeling that the engineers that created it had planned for exactly the use-case Carmack put it to. In particular, providing for a buffer that was larger than the screen, the ability to move the offset inside the buffer for the screen's origin, and wrapping of the buffer is exactly the feature set that you need to implement scrolling. I don't think it was blind luck that these features were all available on the card.
This is often cited as the first example of Carmack's genius when it came to computer graphics, and he certainly deserves credit for being one of the first/astest third-party developers to realise the potential of the EGA card. But if I was one of the engineers that had designed EGA, I would be rather miffed to see how much Carmack is praised for this when it seems relatively clear that he was just using the hardware as it was intended to be used.
Carmack got many things wrong. The interesting thing is, none of his mistakes mattered, otherwise he would have fixed them. So you wind up with emergent behavior and bugs become features, like bunnyhopping or rocket jumping.
In this case, 204/129 ~= 1.581, which is pretty close to the golden ratio 1.618. In fact, let's just list all the ratios:
In this case, we end up with some lovely oscillations in the second half of Carmack's series. But does it look good for graphics, or behave well for gameplay purposes? No idea! Someone should find out what it's used for. It's an interesting little bit of historical excavation.
It looks like the sequence was meant for a RNG, so getting it wrong probably had no impact on anything (it might have made the RNG weaker, but that's about it).
EDIT: I think that sequence isn't even used anywhere (I couldn't find any reference to it).
What's the relevance of these ratios to Carmack's purpose in extrapolating the series? At any rate, the limiting ratio of successive terms in the altered Fibonacci series 21,54,75,129,204,..., is the same as for the ordinary Fibonacci series, even if the convergence is slower (the difference between this altered Fibonacci series and the original Fibonacci series is just another version of the Fibonacci series, shifted over and multiplied by 20).
Apparently Carmack didn't actually use it anyway, so I suppose there wasn't any purpose. But Carmack's series is significantly different from the normal Fibonacci series, because it only consists of the first ten elements, which isn't enough time to converge. If it was used in actual graphics or gameplay, it would have had a significantly different effect than a normal Fib sequence.
I just thought it was interesting, and another example of the same type of style which led to rocket jumping or bunnyhopping, which were also accidents.
It's not clear that Carmack's purpose in using the Fibonacci series was to take successive ratios to approximate "the golden ratio" (if it was the golden ratio he cared about, he could just as well have directly calculated (1 + sqrt(5))/2). He quite possibly could have been interested in the Fibonacci sequence for some other reason, or no reason at all.
The condition a + b > 0 is neither necessary nor sufficient; rather, the precise condition you need is that b != k * a, where k = (1 - sqrt(5))/2. But, yes, Carmack's Fibonacci sequence gone awry would still (if continued without further error) produce the golden ratio in the same way as the ordinary Fibonacci sequence.
Jazz Jackrabbit and Commander Keen on a gravis gamepad are second in nostalgia only to playing the original Test Drive [1] and Stunts [2] on a crappy old joystick...
Yeah, I used to play "Test Drive" but then "Stunts" came out and it completely blew my mind what was possible with computers back then. I wasn't even 10.
Wikipedia says Don Mattrick, CEO of Zynga, was original designer of those two games? Consider me surprised.
And yeah, the amount of time I spent editing tracks was unhealthy.
I also remember having a religious devotion to getting a certain physics bug to happen. I don't remember how we did it, but you'd end up launching the car and it would fall up into eternity.
In college my friends and I got so into Stunts that we developed an entirely new way of playing the game. We would make a simple track in the corner, but that wasn't the "real" track. The real track was off to the side, and we would race it for speed, but the difference was we used broken and illogical track pieces. So you might be sideways in a tunnel and have it directly transition into a banked ramp, so you would need to plan for that.
We also utilized bugs as part of the required strategy. There were a LOT of bugs, and eventually you bump into some of them, like when you hit a corner and the car careens into the sky for 500 feet (sometimes even landing safely). I made one track that used every bug we knew - you start off driving over water (which you can do at an angle if you are facing the map border fence) then launch off a ramp that is impossible to reach the other side - although if you hit the broken edge of the bridge you MIGHT warp through to the other side. It was awesome.
And http://farmanager.com, the same for Windows. Much faster than having to use a mouse to navigate the file system. And a decent editor with syntax highlighting and plugin support included as well.
Far Manager is the only thing I miss after switching to OSX 6 years ago. Tried Midnight Commander and other alternatives, but not nearly as good imo. File search is the killer feature, so much better than any other alternative.
I would be so happy to see many of these games transition to tablets, are there good equivalents and/or have some actually been ported?
I have played PC strategy games ported to the iPad along with arcade classics from Atari, just missing some early games like Keen, Empire, and the like.
I have to say I saw every single pixel of every Keen game and I MUCH preferred the pure side view games over the isometric side view games of Episodes 4-6 and Keen Dreams. Episodes 1-3 had such an amazing, precise pixel design and a great sense of movement. The leaping just FELT right, with a slight pause while you pumped off the balls of your feet.
The later games, although much more detailed, with a larger character, had a weird floaty feeling to the controls that I never quite enjoyed playing as much.
That said, I loved all the games and it was an amazing sense of discovery. I remember the moment the shareware model finally took hold of me and I realized that I wanted the next episodes enough to pay for them.
I totally get what you mean. Even though I think the graphics in 4-6 are simply gorgeous, and 5 is probably my favourite of the whole series (hard to say why, I wanted to say because it's in space, but then realized they're all in space, maybe it was the big red robot).
However, there is something that just feels right in 1-3.
Only slightly related but I read "masters of doom" recently and I can't recommend it highly enough. It is a very entertaining read even if you are not crazy over video games. It tells the story of the two Johns, and mention Commander Keen among other things. Great read
Slightly related (from the same era). But the composer for the music for Unreal, Unreal tournament, Deus Ex, Tyrian, Jazz Jackrabbit and others has a music bundle for sale.
Keen 1 was 1990, deus ex was 2000. Says how far PC gaming went in those 10 years, eh? It understates it, even, since Keen was a great technical achievement, while Deus Ex had unremarkable graphics - the game sold on a great fusion of rpg and fps, not graphics.
Ah, thanks for this. I've had Jazz Jackrabbit 3's ImpulseTrackers for ages, but never knew/bothered to find out who the composer was. I had no idea he'd worked up an official album for it.
After Keen 3, the id guys were still under contract with Softdisk for another game. They made Keen Dreams to fulfill this obligation, but it wasn't released until some time after Keen 6.
I bought the bundle a few months ago. The steam start process made the game wonky, so instead of going through the steam client, I made this batch file (for the 4th game):
@echo off
cd C:\Program Files (x86)\Steam\SteamApps\common\Commander Keen\base4
dosbox keen4e.exe -conf keen4.conf -exit
exit
The configuration file in question was modified, and these are the changes from the default that you might find useful, in the following sections:
"There is not enough memory available to play the game reliably. You can play anyway, but an out of memory condition will eventually pop up."
Wow, I can't imagine a modern game giving this warning and still atempting gameplay. Guess a lot of people with low RAM machines had to take their chances back then.
Looks like piracy.h just contained a reference to a static blob (PIRACY) describing an 80x25x16 text mode screen. movedata copies it directly to the VGA screen base address (0xb800).
Since VGA text mode used one byte to select the character (from a font of 256 entries), and one byte to describe the character's attributes (16 colors aka 4 bits, bold, strikeout, reverse), the resulting buffer for an 80x25 display was 80x25x2 bytes, aka. 4000
When that's done, it waits for the user to acknowledge the anti-piracy message by pressing enter.
This is basically the early 90s equivalent of the "you wouldn't download a car" advert
I'm fairly sure my ancient copy of Teach Yourself C in 21 Days came with a CD including the book text and Borland C++ 3.1, which is mentioned on github as working. UPC code 0672310694, or:
http://www.amazon.com/Teach-Yourself-21-Days-Sams/dp/0672310...
You can get yourself into trouble trying to use a newer version of the Borland compilers. 3.1 was the last to support native 16-bit code, or something like that, I believe.
I honestly don't remember what the difference between "Borland C" and "Turbo C" is (the former includes more) so I don't know if that will work. But the museum download is free...
If anyone's keen into doom, check out Doom 2 the Way id Did. In particular, look for the secret level (which also has the entrance to the other secret level).
Unfortunately only Keen Dreams, but at least! I was waiting for this quite some time. I'm not sure if the other Keen versions will eventually follow.
I think the project Commander Genius (http://clonekeenplus.sourceforge.net/) should also be mentioned here. (Disclaimer: I was a developer of CG.) Keen 1-6 should be fully playable. Keen Dreams not yet, so this Open Source release might be helpful.
I'm not sure if that's was a feature of Keen Dreams; I definitely remember it was an easter-egg in Commander Keen 4, though. Normally, if you left Keen alone for a while, he'd pull out a book, sit down, and start reading it. However, in the Temple of the Moon, if you stood Keen on one of the moon-shaped carvings on the floor then left him alone, you'd get... a different animation.
only ~33k lines of code for everything in C/asm. yet today, it feels so strange that an equivalent game in our "much advanced languages" will probably end up about the same or larger. Are we really progressing?
The imperative game logic stuff would be about the same. If this happens, print this and that. If this key is pressed to these 5 things. You can't abstract those steps away.
However, video, audio, input handling, and loading resources would be a lot simpler.
You'd put some resources in a list and that's all the caching you'd do.
You should be able to do a game like this in less than 10k lines of Dart/TS/JS (2D Canvas, Web Audio, Gamepad API). Without using any external libraries or engines, that is. It also would be a lot easier to write, because all of the low level parts are gone.
33k sounds like a lot.
I should think a game like this today would be more like 3k, or maybe 10k at most + engine code + content.
Nowadays you see, it's wasteful to write an engine from scratch for a game like this. It was needed then, but it's a solved problem now. If you wrote 33k for a commander keen clone I'd wonder what you were doing.
This is a philosophical problem.
What is the difference really between:
1. a prewritten engine, and
2. some hypothetical language
each where you write commander keen with 3k loc.
Where the hypothetical language has all the same stuff as the engine, it's just locked away behind a level of abstraction.
if you could write commander keen in 3k of javascript (with the aid of all the stuff that's in a browser) How is that different from writing 3k of C with nothing but this entire commander keen engine already written and ready to go?
I tried to compile this from within DosBox, but I couldn't find a `makeobj` binary to build the stuff in the static directory. Does anyone know where that would come from?
In those times, I made me a loadable font for my Star-LC-10 9-pin dot matrix printer, and after a while could effortlessly read text printed in the SGA ;-)
The game renderer is also too coupled to the game backend. They should be separate pieces which only communicate via a RESTful API. Except the first frame should be rendered server-side to save time.
Same for me. My PC was a 8086 running at 4.77Mhz, with 640Kb memory, 20Mb HDD and EGA graphics. Surprisely Keen Dreams ran perfectly well on that very slow hardware...a testament to the software engineering back then.
> a testament to the software engineering back then.
Oh, don't worry. Hardware acceleration is coming, soon all the web apps will run just fine on your i7. But you might have to buy a new GPU and more RAM, because in five years, anyone would be crazy to have less than 32GB. Gaming might be a long way off still... ;-)
And then you'll have to wait for your GPU drivers to mature if you're not on the mainstream OS.
Same here! No idea what the PC specs were (someone built it for me) but I'll never forget booting up, seeing DOS, and typing keen.exe to begin hours of fun.