143 comments

[ 2.3 ms ] story [ 209 ms ] thread
This is a good day for humanity.
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.
It looks like Crystal Caves.

ID and Apogee stole many hours of my childhood

Crystal Caves... there's a blast from the past. And Wizball - that game was like smack for kids.
Oh man the memories. Games are just too complicated these days.

http://en.wikipedia.org/wiki/Crystal_Caves

"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.

PC games are perhaps too complicated, but from what I have seen of my son's gaming tastes, they have simply moved to the tablet and mobile devices.
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.

My childhood rejoices!
This just caused a rush of nostalgia from a generation of PC computing that seems like a lifetime ago.

Norton Commander, Jazzy the Jack Rabbit, TheDraw, the Gravis Gamepad...

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...

crap. Also playing Jet [3] on the same joystick.

  [1] http://en.wikipedia.org/wiki/Test_Drive_(video_game)
  [2] http://en.wikipedia.org/wiki/Stunts_(video_game)
  [3] http://en.wikipedia.org/wiki/Jet_(video_game)
Joystick, feh! I played Stunts with a keyboard and I liked it. :D

Also, you forgot Scorched Earth [1].

[1] http://www.whicken.com/scorch/

Holy crap. How could I forget scorched earth?

That was one of the first games I remember playing with friends until all hours of the night.

Actually took a road trip with my friend and his fifty pound laptop, and played it along the way.

We spend long nights with my friends trying to reproduce the weird high-resolution Scorched Earth was using, and then playing it.

This game and Heroes of Might and Magic are the games I like to play with other people in the same room. So much fun!

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.

Weird. Didn't know the CEO bit.

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.

Stunts?! Every now and again I try to figure out the name of that game. So many late nights making tracks.
There was a special key combination that allowed you to edit the terrain, too. Alas, I only found out as an adult.
My dad still uses Norton Commander or some variation of it to this day. Never forget.
Your dad isn't alone in using "some variation" of Norton Commander:

https://www.midnight-commander.org/ Midnight Commander: A NC clone for Linux/Unix/etc.

http://www.emacswiki.org/emacs-en/Sunrise_Commander Sunrise commander: NC clone for GNU Emacs.

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.
It runs fine under Wine on Ubuntu; maybe that's an option on OS X, too.
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.

Pretty much the only platformer I ever really liked.
Not even Super Mario?
Did you ever try Biomenace?
The full version is now free on 3drealms.com!
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]

[1] http://www.3drealms.com/keenhistory

[2] https://en.wikipedia.org/wiki/Adaptive_tile_refresh

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.
I recommend Masters of Doom to everyone. It's wonderful, historical, nostalgic and inspiring.
Seconded. One of the best books I've ever read - I honestly wish I could forget it and start over.
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.
If you like that you will also like a book called Showstopper which is similar but about early challenges at Microsft building the NT kernel
It is funny that you mention this book. I've read Masters of Doom and just received this one. I'm excited to read it.
Does anyone know where the "adaptive tile refresh" source code is in the codebase?
Look at id_rf.c and .asm files.
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.

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.

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.

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.
> 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.

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.

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.

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 ... :-)

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.

I'd love to find the portion of code that has Keen moon the camera if the player is inactive for a period of time
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.
What about the source code for Episodes 1-3?

Don't let the Vorticons win!!

I'll never forget the day I discovered the Vorticon alphabet in episode 3. Mind blown.

I had almost deciphered the entire thing on my own, before I found that translation sign in the hidden area in ep.3.

IIRC the only one I missed was the character for 'Z', which I simply hadn't encountered on any sign so far.

Keen was amazing, I hope we see more of them released like this... IMO Keen Dreams was the worst of the lot.
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.

http://loudr.fm/bundle/alexander-brandon-bundle/hq4hZ

I'm getting old, if people refer to Deus Ex and Command Keen as being from the same era.
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.
Ha yeah, good point. I meant something else in my head and it got lost when translated to the keyboard.
Holy crap - I'm not normally one that gets super nostalgic over chiptunes, but the compositions in Tyrian were brilliant. Definitely getting that.
Thanks for the heads up! Really geeking out on Tyrian and JJ3.
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.
This is awesome! Commander Keen was my very first PC game on my very first PC (a 386DX with 2MB ram and a 80MB hard drive).

And it was a great game!

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.
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.

On your marks. Get set. Compile to JS using LLVM in 3...2...
https://github.com/keendreams/keen/blob/master/id_us_a.asm#L...

> baseRndArray dw 1,1,2,3,5,8,13,21,54,75,129,204

Hah he got the Fibonacci series wrong (it's supposed to be ...13, 21, 34, 55, 89, 144, unless he did this on purpose).

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:

  1/1 = 1
  2/1 = 2
  3/2 = 1.5
  5/3 = 1.667
  8/5 = 1.6
  13/8 = 1.625
  21/13 = 1.615
  54/21 = 2.571
  75/54 = 1.389
  129/75 = 1.72
  204/129 = 1.581
And for the regular series:

  1/1 = 1
  2/1 = 2
  3/2 = 1.5
  5/3 = 1.667
  8/5 = 1.6
  13/8 = 1.625
  21/13 = 1.615
  34/21 = 1.619
  55/34 = 1.618
  89/55 = 1.618
  144/89 = 1.618
Here's a plot of the ratios (regular series in blue, Carmack's in red...ish): http://i.imgur.com/WA7ipZA.png

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.
(comment deleted)
Well, you can keep do this with any two numbers a, b such that a + b > 0 and you'll end up with the golden ratio :)
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.
Did anybody manage to build it?
I suddenly had a flashback to selecting soundblaster as my audio device..
Are there instructions for compiling this somewhere? I don't see a makefile or configure.
The readme in the repository give instructions on how to compile it using Borland C++.
Apparently they sold 2-6 until recently - people were buying 1991 software?

http://www.3drealms.com/keenhistory/keenhistory4.html

Keens 2, 3, 5, & the full version of 6 are commercial software, and it is not legal to download them from anywhere.

http://store.steampowered.com/app/9180/

Actually, I think I'm going to go buy it now... it's been too long since I've played Keen.

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:

    [sdl]
    output=ddraw
And this one:

    [render]
    scaler=normal3x
Carmack's piracy protection was bleeding-edge stuff, back then!

https://github.com/keendreams/keen/blob/master/kd_main.c#L39...

I'm not sure what that means. Is that a good thing?
I wonder what that actually did.

For the confused. The piracy.h and those two lines were removed.

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 thought that #if 0 doesn't get compiled and therefore definitely not executed. Can you explain more about your comment? I'm confused.

Edit: Corrected "not"

(comment deleted)
right, so what was "bleeding-edge" as the poster stated above?
(comment deleted)
I think the OP forgot the /s at the end of his comment.
Ah, sarcasm, because the piracy stuff is wrapped in an #if 0
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