Commander Keen source code released
github.com
github.com
ID and Apogee stole many hours of my childhood
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.
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.
"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]
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.
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.
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.
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.
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.
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.
- 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 ... :-)
I'm not sure if you'd call Sopwith a sidescroller but it managed to scroll sideways on CGA.
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.
God, so wish I'd known this at the time.
https://github.com/keendreams/keen/blob/f477cef79f0893420f47...
> 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).
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.pngIn 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.
EDIT: I think that sequence isn't even used anywhere (I couldn't find any reference to it).
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.
Norton Commander, Jazzy the Jack Rabbit, TheDraw, the Gravis Gamepad...
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)Also, you forgot Scorched Earth [1].
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.
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!
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.
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.
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.
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.
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.
However, there is something that just feels right in 1-3.
- Apogee Catalog from this time period : http://www.scribd.com/doc/134559074/Apogee-Catalog
and
- The Book of id (from the Id Anthology) : http://www.scribd.com/doc/137817173/Book-of-id
Bask in the nostalgia.
Crystal Caves - "Stunning cinematic sequences"
Spear of Destiny - "Breathtaking soundtrack ... for AdLib, Sound Blaster or compatible"
Commander Keen 6 - "Over 2.5 megabytes of graphics created especially for this episode"
> This release was made possible by a crowdfunding effort.
https://www.indiegogo.com/projects/let-s-get-keen-dreams-re-...
Looks like they got most of the way, then someone must've paid the rest outside of indiegogo.
What other classic games could be saved this way?
http://www.thefloppydisk.com/articles/commander_keen_the_gam...
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.
Actually, I think I'm going to go buy it now... it's been too long since I've played Keen.
@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=normal3xWow, 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.
https://github.com/keendreams/keen/blob/master/kd_main.c#L39...
For the confused. The piracy.h and those two lines were removed.
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
Edit: Corrected "not"
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.
However, I'd take a crack at making the Turbo C in the Embarcadero Museum work: http://edn.embarcadero.com/article/20841
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...
The Linux port
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.
https://www.google.com/search?site=&tbm=isch&source=hp&biw=1...
https://github.com/keendreams/keen/blob/master/kd_keen.c#L15...
https://github.com/keendreams/keen/blob/f477cef79f0893420f47...
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.
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?
What's are we calling an "advance", exactly?
However, video, audio, input handling, and loading resources would be a lot simpler.
E.g. take a look at the input manager:
https://github.com/keendreams/keen/blob/master/id_in.c
You also wouldn't have anything like this:
https://github.com/keendreams/keen/blob/master/id_ca.c
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.
https://github.com/keendreams/keen/blob/master/static/makeob...
Don't let the Vorticons win!!
I'll never forget the day I discovered the Vorticon alphabet in episode 3. Mind blown.
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 ;-)
IIRC the only one I missed was the character for 'Z', which I simply hadn't encountered on any sign so far.
That game is perfect for C, why on earth port it to something that is not just better or more modern C?
I could understand wanting to port it to platform x, but the language choice isn't the biggest barrier to modification/extension here.
Then you can worry about switching languages. Which is really pointless, but whatever floats your boat.
And it was a great game!
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.