Re:Commander Keen source code released
by thristian on Tuesday September 16, 2014 @05:12PM
(#8327148)
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.
Re:Commander Keen source code released
by archagon on Wednesday September 17, 2014 @03:07PM
(#8331784)
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.
Re:Commander Keen source code released
by Arjuna on Tuesday September 16, 2014 @05:29PM
(#8327215)
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]
Re:Commander Keen source code released
by vidarh on Tuesday September 16, 2014 @07:59PM
(#8327770)
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.
Re:Commander Keen source code released
by kabdib on Tuesday September 16, 2014 @09:03PM
(#8327944)
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.
Re:Commander Keen source code released
by ekianjo on Tuesday September 16, 2014 @11:55PM
(#8328503)
> 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.
Re:Commander Keen source code released
by kabdib on Wednesday September 17, 2014 @12:41PM
(#8330880)
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 ... :-)
Re:Commander Keen source code released
by vidarh on Wednesday September 17, 2014 @07:54AM
(#8329515)
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.
Re:Commander Keen source code released
by grimman on Wednesday September 17, 2014 @04:15AM
(#8329024)
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.
Re:Commander Keen source code released
by ekianjo on Wednesday September 17, 2014 @04:26AM
(#8329058)
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...
Re:Commander Keen source code released
by grimman on Thursday September 18, 2014 @04:50AM
(#8334287)
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.
Re:Commander Keen source code released
by acdha on Tuesday September 16, 2014 @10:10PM
(#8328136)
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.
Re:Commander Keen source code released
by to3m on Tuesday September 16, 2014 @08:49PM
(#8327899)
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.
Re:Commander Keen source code released
by sprokolopolis on Tuesday September 16, 2014 @07:02PM
(#8327588)
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.
Re:Commander Keen source code released
by ekianjo on Tuesday September 16, 2014 @11:59PM
(#8328520)
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.
Re:Commander Keen source code released
by antimagic on Wednesday September 17, 2014 @12:42PM
(#8330889)
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.
Re:Commander Keen source code released
by sillysaurus3 on Tuesday September 16, 2014 @07:34PM
(#8327692)
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.
Re:Commander Keen source code released
by ahomescu1 on Tuesday September 16, 2014 @07:54PM
(#8327756)
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).
Re:Commander Keen source code released
by Chinjut on Tuesday September 16, 2014 @09:45PM
(#8328062)
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).
Re:Commander Keen source code released
by sillysaurus3 on Tuesday September 16, 2014 @10:35PM
(#8328216)
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.
Re:Commander Keen source code released
by Chinjut on Wednesday September 17, 2014 @01:21PM
(#8331125)
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.
Re:Commander Keen source code released
by Chinjut on Wednesday September 17, 2014 @01:27PM
(#8331169)
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.
Re:Commander Keen source code released
by doorhammer on Tuesday September 16, 2014 @05:40PM
(#8327263)
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...
Re:Commander Keen source code released
by lubos on Tuesday September 16, 2014 @06:03PM
(#8327356)
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.
Re:Commander Keen source code released
by doorhammer on Wednesday September 17, 2014 @12:18AM
(#8328582)
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.
Re:Commander Keen source code released
by lubujackson on Wednesday September 17, 2014 @02:58AM
(#8328863)
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.
Re:Commander Keen source code released
by ygra on Wednesday September 17, 2014 @01:33AM
(#8328720)
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.
Re:Commander Keen source code released
by andersaa on Wednesday September 17, 2014 @08:50AM
(#8329683)
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.
Re:Commander Keen source code released
by Shivetya on Wednesday September 17, 2014 @08:21AM
(#8329589)
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.
Re:Commander Keen source code released
by techtalsky on Tuesday September 16, 2014 @07:49PM
(#8327734)
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.
Re:Commander Keen source code released
by tripzilch on Wednesday September 17, 2014 @05:07PM
(#8332362)
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.
Re:Commander Keen source code released
by abraxasz on Tuesday September 16, 2014 @07:05PM
(#8327598)
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
Re:Commander Keen source code released
by bane on Tuesday September 16, 2014 @05:57PM
(#8327331)
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.
Re:Commander Keen source code released
by Pxtl on Tuesday September 16, 2014 @09:22PM
(#8327998)
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.
Re:Commander Keen source code released
by Eiriksmal on Wednesday September 17, 2014 @12:35PM
(#8330831)
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.
Re:Commander Keen source code released
by dubfan on Tuesday September 16, 2014 @05:12PM
(#8327146)
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.
Re:Commander Keen source code released
by pp19dd on Tuesday September 16, 2014 @09:23PM
(#8328001)
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:
Re:Commander Keen source code released
by drzaiusapelord on Wednesday September 17, 2014 @10:16AM
(#8330051)
"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.
Re:Commander Keen source code released
by _wmd on Tuesday September 16, 2014 @07:17PM
(#8327644)
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
Re:Commander Keen source code released
by justin66 on Wednesday September 17, 2014 @12:25AM
(#8328600)
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...
Re:Commander Keen source code released
by clarry on Wednesday September 17, 2014 @12:02AM
(#8328531)
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).
Re:Commander Keen source code released
by albertzeyer on Wednesday September 17, 2014 @04:14AM
(#8329019)
Very nice!
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.
Re:Commander Keen source code released
by thristian on Tuesday September 16, 2014 @05:55PM
(#8327323)
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.
Re:Commander Keen source code released
by segmondy on Wednesday September 17, 2014 @01:52AM
(#8328744)
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?
Re:Commander Keen source code released
by ahoge on Wednesday September 17, 2014 @07:52AM
(#8329513)
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.
Re:Commander Keen source code released
by TheZenPsycho on Wednesday September 17, 2014 @01:59AM
(#8328757)
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.
Re:Commander Keen source code released
by TheZenPsycho on Wednesday September 17, 2014 @07:58AM
(#8329526)
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?
Re:Commander Keen source code released
by x3ro on Wednesday September 17, 2014 @07:28AM
(#8329468)
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?
Re:Commander Keen source code released
by cnvogel on Wednesday September 17, 2014 @07:38AM
(#8329487)
Oh my... the memories.
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 ;-)
Re:Commander Keen source code released
by zenojevski on Wednesday September 17, 2014 @04:19AM
(#8329041)
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.
Re:Commander Keen source code released
by guidedlight on Tuesday September 16, 2014 @06:19PM
(#8327429)
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.
Re:Commander Keen source code released
by clarry on Tuesday September 16, 2014 @11:54PM
(#8328499)
> 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.
Re:Commander Keen source code released
by basisword on Tuesday September 16, 2014 @06:11PM
(#8327396)
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.
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]
[1] http://www.3drealms.com/keenhistory
[2] https://en.wikipedia.org/wiki/Adaptive_tile_refresh
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.
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.
- 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 ... :-)
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.
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.
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'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:
And for the regular series: 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.
Also, you forgot Scorched Earth [1].
[1] http://www.whicken.com/scorch/
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.
http://loudr.fm/bundle/alexander-brandon-bundle/hq4hZ
- 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.
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.
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...
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.
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?
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.
IIRC the only one I missed was the character for 'Z', which I simply hadn't encountered on any sign so far.
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 ;-)
https://www.google.de/search?q=borland+c&tbm=isch
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.