[1] No relation to the more famous Carmack, but IMO the unsung master of the 16-color palette.
[1] No relation to the more famous Carmack, but IMO the unsung master of the 16-color palette.
Check out the evolution from the first game: https://en.wikipedia.org/wiki/Commander_Keen_in_Invasion_of_...
To the last game: https://en.wikipedia.org/wiki/Commander_Keen_in_Goodbye,_Gal...
I was playing them at the time, as a young child, and I'd forgotten the pace at which things were apparently happening.
So from software Ray Casting to full 3D acceleration in that time period.
7 years ago from now we had Uncharted 4, it is behind were we are now but not as much as you would think.
It's not that hard when one guy is writing the rendering code, another doing game logic, one doing artwork, one level design, and one doing sound. Nobody is really stepping on anyone's toes.
He talked how they were always working on 2 games and would do a press release with a shipping date before they more or less even started lol
Romero just released a new book 10 days ago... Doom Guy: Life in First Person https://amzn.to/43M0rSg
The crazy part was also working 2 full time jobs essentially, 8 hours at softdisk then they would use those PCs at night for 8 hours to crank out their private games, also borrowing them on the weekends to get more work done.
I think I'd pick Prince Of Persia, not to diminish Commander Keen a single bit but I always found PoP visuals and game dynamics unmatched for its time. I'm also getting biased for two reasons: I played PoP when I believe I was 7 years old and made a magic impression on me when I first played it and is also is my favourite platformer of all times. But of course PoP lacks of the scrolling at all which is Commander Keen's black magic.
I understand that Jordan Mechner put in a ton of hours rotoscoping the movements. (Example: https://www.youtube.com/watch?v=fCy8WqAgPbY)
On a tangent, Mechner is an incredibly talented (and in my opinion, severely underrated) game designer. "The Last Express" is a masterpiece, and wondrous in a different way.
Yes it is very impressive even today. Those tons of hours on rotoscoping paid off immensely. I haven't played "The Last Express" though I've seen some screenshots and looks a very nice game. Somehow the artwork resembles the style of Alphonse Mucha: https://en.wikipedia.org/wiki/Alphonse_Mucha
“Our memory is slow, so let’s redraw only things that changed” is kind of a given nowadays.
Still the optimization in 4-6 is fun. Did the whole thing in 1-3 just because of an assumption that the buffer would not wrap around, and then it did and all that work became obsolete.
[1]: https://learn.microsoft.com/en-us/windows/win32/gdi/clipping
I think it is more interesting that the pipeline was invalidaterect/region => getevent => event was a draw event => draw region (or part of it). The getevent would only generate draw events if nothing more important was going (keyboard/mouse input, timer, message from other app/desktop accessory). It would also prioritize top windows first so you would only get a draw event for a window at the bottom once the windows above had no more dirty areas.
If you really knew what you were doing, you could short circuit this a bit and draw in your windows outside of draw event handling.
On the other hand, of course, CPUs do have a complex system of several levels of caches, but that's not primarily because of (lack of) memory bandwidth but memory latency.
For Win32 and X11 at least the damaged region (or "invalid region") approach is still there and AFAIK recently (as in a few months ago) the modesetting driver for Xorg added the ability to use the damage regions when "TearFree" is enabled (this does server-side composition to avoid tearing - it is disabled by default) to only update the of the screen that changed instead of the entire screen.
Also i remember reading some time ago about some monitors being able to use partial frame data (the monitor "shadows" the frame) so that they can support faster updates.
I think the concept can also help with slow display tech like e-ink devices.
Some also implement partial redraw into the tiles to handle things like cursors blinking to avoid having to redraw the entire tile.
However it is still an issue if one wants to achive maximum performance, and it is done by only sending the vertices and textures to the GPU that are actually going to be visible.
Yes, it's you and your vaulted position of standing on the shoulders of those to whom these developments actually were ‘revolutional’. I equate the level of accomplishments from Id to be at the level of cavemen throwing rocks at the spaceship to cavemen buying insurance on TV levels of achievement.
Carmack and id are responsible for at least 4 or 5, "I had no idea a computer could do that" moments for me.
Tangentially related: Android still doesn't get this. Turn on the screen refresh flashes in the developer menu and then look a your static screen and be amazed who often android draws even though nothing changed.
Energy efficiency is a separate matter.
I'm willing to bet :)
The difference in time spent by GPU between drawing 1000 and 50 sprites is almost 0.
Updating buffers is of course a totally separate thing, and on that side I don't think anyone updates everything every tick, usually there's some sort of scene graph that knows about dirty transforms and their children, so only those get updated..
And the animation framework always just "scrolled" the view (or screen) when it could.
Talking about these little tile and scrolling tricks. Golden Axe on the Master System had to get around the sprite size limit by having the entirety of the graphics live on the background layer. This meant everything sat and moved in an 8x8 pixel grid. A neat little hack even if it made the whole thing a little chunky.