Question: is the effect in the article exactly the same as Jare’s with some parameter tweaks? The one in the article is pixelated and sharp from top to bottom, while all the pictures in the links you shared have a lot of blur in them that varies from top to bottom. I’m curious what the relationship is between the two effects, is the blur just optional?
No, this effect is not the same, although of course the underlying ideas are the same. The original was a more straightforward spread + cool, with IIRC a rather strange random component added for the cooling. Fabien's post describes a process with very explicitly random factors. My original was also 80x50
If I remeber correctly it was Delphi 3 at the time. I loved Delphi, but I only got proficient on it thanks to Marco Cantu's "Mastering Delphi" book. I don't know what I would think of the book today, but it was a huge help at the time.
I love these DooM posts on my holiday break. There is some kind of mindfulness - zen like - ie. anti-stressing - reading about something so directly fun, trivial and specific.
The mobile view of this website is an absolute pleasure to see. I’ve not really had a reaction this powerful before. The site is gorgeous to look at and the content is unhindered by poor design.
Thanks! Since I wrote the book I try to take extra-care of the overall typesetting. I have an iPad Pro that I use to benchmarks the overall "appeal" of each article.
For a time I considered writing only one-pager that would entirely fit on an iPad screen without need to scroll (like an actual granite tablet). It is unpractical but keeps coming back to me every times I scroll down.
Yes! it's amazing how ergonomic it can be when one focuses on typography and layout instead of cramming the page with complex and superfluous navigation menus and graphics.
I am kind of surprised, at the attention and fond rememberance Doom is still getting, compared to Descent, which though released around 2 years later, appears to me much more accomplished: levels of tunnels with complex spatial arrangements, the 6dof motion, even had a sterographic 3d mode.
I'm not surprised. Descent was cool, technically superior, and it was a game I really would've loved to love. But people loved Doom and so did I.
Search for "descent speedrun" on YouTube and then do the same for Doom. The dynamics make a completely different game.
Doom's gameplay was better. Regardless of the graphics, Doom was more fun to play. Doom is actually blazing fast: not as for just rendering but for gameplay and player movement. You can zip around the levels at inhuman speeds, and this allows you to handle more enemies, swarms of them, at once. Doom is really a scary shoot'em-up in 2D while Descent was of a completely different nature.
The "real" 3D and the "real" 3D controls in Descent made moving around more difficult. Thus, the levels were created differently for Descent and it was also played differently.
Unlike Doom you wouldn't have large open spaces to contain dozens or hundreds of enemies. Instead, you would encounter a small handful of enemies at a time. Much of Quake and Doom 3 also suffered from the lack of this as the player speed is more realistic, preventing the fun inhuman maneuvres which could create a lot more fun.
Similarly the gameplay, due to moving around in 3D, meant more work at the controls of Descent. Doom is basically a 2D game which allows for faster movement as only having two axis is more easily mastered. Being unrealistically fast enabled a lot more tactics to be used in Doom. Also, most people played Doom keyboard-only back in the 90's which only served to give Doom a lot more edge.
I fully enjoyed both Doom and Descent. Doom had more heart-stopping boss moments for sure and was great for co-op run through the levels. Descent was more freeing and getting lost and found. Trying to remember your way out after hitting the reactor core was the peak of the thrill.
Of the two though, I miss Descent more. We have many 3D fps land fighting games and far fewer 6dof ones. Still waiting for the reboot Descent Underground[0] to get released. Avoiding all the early release stuff to savour the surprise.
Nailed it. I remember thinking about the movement options in Descent and thinking this was the pinnacle of gaming.
... but Doom was more fun. Descent was hard to play, I remember thinking a joystick would fix all my problems of crashing into a wall and having to turn around, it didn’t.
Descent was great, but it was also much harder to play, and to build levels for, which kind of limited its appeal, IMO. DOOM hit a sweet spot of fast-paced gameplay, really cool ambience (for preteens and teens especially), and lower technical requirements (though I remember Descent's engine being quite well optimized).
DOOM was the first. Well, really Wolfenstein was the first, but it was limited to a grid. DOOM was many people's first networked game too. And the level editors were easy enough to use that they created a community.
Descent's 6dof control system rather counted against it in the days when people had keyboard, mouse and two axis joysticks. I remember struggling with it a lot, even trying two sticks at one point.
DOOM was also more memorable in its black metal aesthetic - the music and gory graphics. The E1M1 theme will stick with me while I can't remember a note of descent.
Descent had a huge community in the day (and still has a community). I definitely played way more Descent (8 player multi) then DOOM (back in the days of Kali).
People still play competitive multiplayer Descent I (D1) matches nearly every day. You can download the data files from GoG[0] for under $4. The binary you want is called DXX-Retro[1] which has the latest and greatest multiplayer tweaks and fixes for competitive Descent.
Check out the Descent Champions Ladder[2] if you're interested in heads up 1v1 play. If multiplayer anarchy (like the glory days of Kali) is more your thing, check out the Descent Rangers[3], who play organized multiplayer games nearly every day. The best way to meet up with folks committed to playing multiplayer Descent is to hop on to the Rangers' mumble[4] server and start chatting.
Descent Overload[5] is a modern, fun, updated version of Descent by some of the same creators, but the focus is not on multiplayer, and as a result the experience suffers somewhat.
(For those who haven't heard of it https://playoverload.com/ , it's a well-regarded spiritual successor to Descent from the original Descent creators.)
I haven't played the single player campaign, but I played maybe 50 hours of multiplayer. Overall it's fun, but one can only play the stock levels that come with the game for so long. The developers are currently focused on trying to get the game ported to consoles, and multiplayer has languished.
I may go back to it the developers ever allow for community created multiplayer levels, allow folks to join multiplayer games in progress, or begin to execute of their backlog of other multiplayer feature requests and fixes from the community.
I never had an issue w/ Descent's controls (IIRC, I had yaw and pitch on the joystick, left/right strafe on A/D, forward/reverse on W/S, roll on Q/E, and strafe up and down (rarely used) on tab and caps).
Once joysticks with a twist axis were a thing the twist became roll and up/down moved to Q/E).
Multiplayer Descent was _way_ more fun that DOOM, in my opinion (specifically because of the 6dof... you could sneak up on people from any direction).
Technically yes, Descent was very impressive for its time, but 1) Doom accomplished more technical feats first and 2) Doom had much wider appeal because Descent was too difficult to play. Remember this was the early days and the proper way of controlling an FPS hasn't really been figured out yet. Most players didn't even player Doom on the now standard WASD+MouseAim scheme. Descent's starting control scheme was utterly unintuitive, especially given how you had to contort your left hand around pressing A to accelerate and Z to reverse.
Not to detract from your point but I seem to recall Doom being playable on PCs of the day. *
I remember some years after quake 2 was out (99ish ?) a friend showing off his new computer by actually playing quake 1 with all the bells and whistles turned on.
So yes the engines did develop quickly. Much quicker than the PCs of the day in fact.
*being school kids, these weren't gaming PCs, these were for 'homework' and 'research'.
I think the hardware was moving forward equally quickly, but there was a more dramatic spread between the low and high end of the installed base. People waited years between upgrades because computers were so expensive. At the same time, Moore's law really was doubling speeds every 18 months.
When Wolf3D came out in May 1992, its minimum spec targeted the installed base of 286s, and a 50Mhz 486 was bleeding edge. When Doom was released in Dec 1993, you could buy a Pentium. (And if you kept it till '96, that Pentium could manage Quake at 320x200).
I agree there was a bifurcation in the late 90s when 3D hardware acceleration arrived (see the colored lighting and texture filtering in the Q2 screenshot). Quake 1 was getting patched with hardware rendering up until Quake 2's release, likely the bells and whistles your friend showed off :)
PCs would keep up fine, but only so long as you had a 3D graphics accelerator (3dfx or similar). Since it was something that was only of use in games at the time, many builders omitted it, resulting in a large gap.
Still, Q2 was perfectly playable even on below-average PCs at the time of release, if you were willing to stick to the same resolution as Doom (i.e. 320x200).
Geforce 6200 LE is a card from 2004, are you looking at modern specs for the versions of the games on Steam? Quake was originally released with only a software renderer and later GLQuake was released with OpenGL support, that only really ran well initially on 3DFX Voodoo cards, although technically I think S3 Verge and some other 3D accelerators were supported. Quake 2 supported 3D accelerators at launch but also had a software renderer, like many notable PC games of the late 90s (Half-Life, Unreal tournament, Deus Ex, etc). Quake 3 was controversial in 1999 for being one of the first major PC games that required a 3D accelerator, among other things, the term GPU didn't really get used for PC graphics cards until Nvidia released the Geforce 256.
Doom was groundbreaking. It’s less about its technical achievements in the absolute — it’s about how radically different it was than what came before. It’s interesting to read about how the developers broke through previous constraints to create something that seemed impossible at the time.
Along with Descent I should have mentioned Ultima Underworld, released in 1992 itself, its 3d world is rich, full of things, varied, fully realized and large. It also allowed the player to look up and down. In fact, to my eye 3D dungeon crawling hasn't radically changed after that.
Quake absolutely blows my mind: real 3D graphics, moddability with a custom compiler (QuakeC), amazing online play (even on a modem) with Quakeworld. All of this in one game which they developed fairly quickly.
Also had Trent Reznor (Nine Inch Nails) doing the soundtrack/sound effects, which added a new dimension as well. The soundtrack just screams "this game kicks ass." I still dig it. https://www.youtube.com/watch?v=5n8iU7abqkQ
I wonder how many people got into programming because of QuakeC.
For me, it came after I was already hooked, but it certainly added a whole new dimension, in a sense that you could now achieve impressive things in one-two evenings of coding that could be shown to others. I remember making the nails bounce off the walls, for example.
I’m mostly shocked that Ultima Underworld isn’t getting more attention. Not as fast paced, but if memory serves me they shipped before Doom, and did some really in depth things for the time considering the hardware and prior titles.
Yes Ultima Underworld was like the modern 3d RPG appeared in one stroke, fully formed. Also it's world was full of things and NPCs one could interact with, where the Doom maps were largely empty.
Indeed. I remember getting Akalabeth and it’s floppy disk in a ziplock plastic bag. Rushed home to play it on my apple //c. I was hooked. Played all the ultimas, including other origin games. In those days, I also played the original wolfenstein on the apple. It had synthesized sound for speech. That same sense of wonder and fun I experienced with these games hit me again when I played wolfenstein 3D, doom, and quake. Some of today’s games like assassin’s creed, Witcher, Zelda on switch give that same mix of emotion and fun.
Guards would scream movie Nazi German snippets at you. "Achtung!" etc. Seems a bit simple now, but almost nothing else like it on the Apple II and C64 when it came out.
Descent had that very early 3D where everything is made out of like 8 gourmand shaded polygons and a lot is left up to the imagination. Doom's pixel art just plain looked better even though it was less technically accomplished. Quake 1 suffered from the same problem, it just didn't look as good as the previous generation. Worse, drawing those polygons was a lot to ask of the computers of that era so they generally limited themselves to a small number of enemies at once, you never got swarmed the way you did in Doom sometimes.
Also, I personally found myself getting lost and turned around way more often in Descent than I did in Doom. That last part of the mission where you had to fly back to the exit before the reactor exploded was always the hardest part.
So many rehearsals pre-reactor blast... certainly the claim the Doom's play was faster paced is true, but I enjoyed challenge of navigating the 3D space of Descent. Right from the first time I played it I felt committed to mastering 6dof.
While descent was a technical marvel, it didn't have the atmosphere of doom and I think the 6DOF movement scheme deterred many from playing it as the levels got confusing.
Confusion and getting lost in a 3d maze was part of the game.
In some ways it reminds me of Slime World - mapping the world in your head becomes an important feature.
This does not seem to be the case with newer games, as if most players didn't like "finding their way back" to a place they have visited before, and prefer a linear progression instead.
This does not seem to be the case with newer games, as if most players didn't like "finding their way back" to a place they have visited before, and prefer a linear progression instead.
People don't mind the backtracking so much -- the "Metroidvania" genre has never been so popular! Exploration is, generally speaking, fun.
It's the tedium of making one's own maps (either mentally, or on paper) that gamers generally don't have a lot of time for these days.
The achievement that made Doom timeless probably has less to do with graphics than it does with an innovative distribution and marketing model. The Doom demo was a blockbuster. It spread in a manner that we would probably call viral today.
No, it’s definitely the graphics and gameplay. The distribution helped, but that wasn’t new - id and Apogee and others had been distributing demo “episodes” of their games going back to Commander Keen at least. Doom was a monumental technical achievement when it came out, and if you want some real perspective on that, check out the game that came out just a few weeks earlier and was considered “cutting edge” at the time: “Blake Stone: Aliens of Gold.”
Doom was the first game that made me phisically lower my head when a rocket flew at me. Wolfenstein never had that effect. I also heard stories of people getting nauseated or even epileptical from Doom. Never from wolfenstein.
I think between these two, some barrier in believability was crossed. Part of it was technical, but the art and the darkness of Doom also made a big difference.
I tryed Descent a couple of times, but the game never catched me.
Doom was and still is unique. Very simple to play, fast and dark.
Later I loved to play Terminator Future Shock. The first game with such large and open levels for me. It was 3D and great to play. But it was slower and so the gameplay was very different.
To be technical better is just "technical better" and not "all better".
Haha - I did an mmx version of this in assembler about twenty years ago for Konstantin Boldyshev's asmutils package. Doing things 8 bytes at a time made it ridiculously fast.
Nice! I did a size optimised version in assembler for MS-DOS a long time ago myself in 173 bytes: http://www.humbug.net/projects/download/demos/js-fire7.zip It's not the smallest fire I've seen but I thought it was the smallest that still looked nice.
>Notice that by adjusting how the fire propagates up, wind can also be simulated. I will leave that as an exercise for the readers who had the courage to read up to here.
This is what I cared to see.
The rest was not a mystery and seems like a pretty simple math/logic problem.
Although, now that I type this out, I am thinking the wind would be simple too...
Can anyone explain why the interest? I imagine there are college kids who do this type of logic.
yes, i am surprised that Fabien is doing the "leaving it as an exercise for the reader" on us. all authors have to do this at some point heh?
anyways, you see that "dst = src - randIdx + 1" line? that's what the "reader" needs to play with. right now "randIdx" is 0, 1 or 2. when it's 0, "dst" is one pixel to the right of "src", when it's 1 "dst" is at "src", and 2 is to the left. also remember we are placing it "below" because we are moving up, so we do "firePixels[dst - FIRE_WIDTH] = ...". hope that helps.
this article has renewed my interest in demo scene effects. canvas2d seems very friendly now. last time, i had a hard time with the animation boiler plate, manipulation of the canvas element and colors. colors manipulation seems to still be awful. i see Fabien had to write 15 lines of code for palette conversion. but that createjs library makes many things easier. hope Fabien can go through other popular effects... or maybe i should lol : )
Heads up everyone, the DOOM Blackbook is 50% off on Amazon right now, which puts it down to a very reasonable $25. I just purchased it along with the WOLFENSTEIN 3D Blackbook which is also 50% off.
This effect was used on the original Unreal engine to generate realtime fire effects that looked awesome. I don't know if the actual Unreal engine supports this anymore.
Memories. Is this a lost art or do people still do this starting out? I mean now that everyone has unity to play with do people no longer have to know about the actual hardware?
These days you can implement many oldskool effects as pixel shaders, only with about a zillion abstraction layers added. Another nice and very exploration-friendly way to learn graphics programming from the ground up is the HTML5 Canvas/ImageData API which lets you put pixels into a framebuffer like it’s 1995.
Yes, this is my favourite aspect of being a web developer today, it is possible to refrain from using all the heavy weight libraries and just play with canvas and raw code... you have a lot more fun, have (almost) complete control, get to learn a lot more and the result is way leaner.
Also https://www.dwitter.net/ uses canvas + JS as the basis for it's code golfing. It's surprising what you can fit into 140 characters, and forces you to think more mathematically when creating effects.
In general, people will code to the API they have. For graphics that mostly means GPU hardware and shaders. The old raster tricks still come out from time to time, and there are reasons to software render certain effects, but there are many new GPU-centric effects that are equally diverse and clever. Experienced devs will often use third-party engines as cross-platform deployment tools and then work around whatever the engine provides. But indies are relatively more likely to engage with the higher-level systems which can lead to a certain defining aesthetic(e.g. in the era of Flash games, the built-in filters, masks, etc. got a thorough workout, even though by the end, everyone making optimized games was caching their results to bitmaps).
With audio, on the other hand, everyone will just look for fmod or an equivalent. There's rarely much time budgeted for audio and there's much less shared experience in doing it ground-up.
I think you are correct, however I also think many people at least try to roll their own, it's such great learning experience to try - touching the rendering the physics all for yourself, even if it is only primitive.
However I believe this will change in the future and we will go full circle back to people rolling their own for real world use... why? because modern real-time rendering engines are an amalgamation of hacks on how to get beleivability out of triangles and shaders, they are necessarily complex - to the extreme - and you cannot compete as an individual. However the future is clearly path-tracing or some form of ray based rendering (it's sustainable, the hardware has a future there - it's parallel), path tracing being a simpler unified model for rendering makes it's completely within the grasp of individual developers, this would open up a whole world of creativity.
Most game developers do not code their own engines. In fact unless you're doing something special (e.g. claybook, Miegakure, anything with true videos, or an unusual development pipeline/platform), it is immeasurably more economical to use an engine like unity/unreal with their large communities, asset stores, support and decent tooling. Even many 'AAA' games are now starting to use these commoditised engines (possibly with their own extensions/forks)
Uhmmm....I work for one of the top 3 largest game publishers in the world and all of our games are made using our own engines that were done in-house. Unity and Unreal Engine are only used for prototyping(with maybe one exception in Unity, but that was a small project done by a very few people).
I guess I've only been exposed to the independent scene (which I would assert accounts probably for the majority of releases, if not the sales volume)
That you're using a handrolled engine is fine, I'm sure your company knows what they're doing. But in the context of this post, and for people who'd like to start game development/design, saying that most devs write their own engine is in my opinion damaging, as I really don't think that most smaller studios do. It increases the barrier to entry, and perpetuates a certain amount of elitism, which really considering the make up of the industry is no help at all.
A great amount of indies do. Super Meat Boy was built with a hand rolled engine. Same for Cave Story, Binding of Isaac, Terraria, Stardew Valley, Dwarf Fortress, Celeste and many other memorable titles.
It's more intense on the Japanese side though. Loads of -doujin- game developers, like the many Touhou spinoffs games handroll their own stuff.
I'd say, using a prebuilt engine ecosystem has become more common with the appearance and growth of Unity but it hasn't stopped people doing their own thing and it certainly hasn't been a solely positive contribution, you criticize elitism in the days when the Steam store pages are flooded by trashy asset flips and barely working early access games that sometimes never truly get finished. A little bit elitism would in fact not hurt if we don't want to hit another video game industry crash.
I would fire you for your lack of knowledge. The top 100 mobile gaming apps are mostly unity based.
Top 100 on steam heavily populated with unreal and unity based games.
And which part of what I said disagrees with what you said? I just said how it's like at one of the top publishers in the world. I haven't said anything about anyone else or even about the industry as a whole. I guess I'm lucky you don't work in our HR department then!
Aren't game engines like Unity and Unreal only appropriate for first person shooters or third person adventure games? What about 2d platform games? Real time and turn based strategy games? Flight sims? Sports games? Board game remakes? You wouldn't choose a generic "game engine" for any of these, would you? Honest question, I'm not a game programmer, but as a programmer it sounds unlikely that a single package could be appropriate for so many different genres of games.
Hearthstone is done in Unity. Unity has a bunch of 2d platformer features these days.
What you're missing is that these big engines are also game development environments with extensive tools and integrated market places to purchase assets and features.
Learning Unity is learning an entire platform. It's a marketable skill.
Generally smaller developers don't have the development resources to roll custom everything. But modern platforms have enough spare hardware resources that the inefficiencies of Unity are worthwhile.
There actually has been a lot of work done to make it suitable for use cases such as 2d, racing, etc.
An engine like unity basically provides utilities such as physically based rendering, camera systems, visual editors, scripting environments, a scenegraph editor, preview windows, io, asset import and conversion, audio, etc. Some games are of course easier to make than others in such engines, but they aren't that prescriptive.
Lots of game developers roll their own game engines. Some even make game engines as their new programming language training exercise. Unreal and Unity are making inroads into AAA.
Interesting articles, infortunatly it has many typos:
framebuffer is initiated full yellow, not black;
pixel in code should be firePixel[src];
randomness should be applied symmetrically with rand+1 in [-1;1].
I love these kinds of articles but I also think there is a slight mistake. In my opinion it should say "upper-left is at array index zero" instead of "lower-left is at array index zero".
I don't think it matters if the randomness is not applied symmetrically and the fire moves slightly to the left. I also can't comprehend the part about the framebuffer being initiated yellow and not black.
http://www.pouet.net/prod.php?which=15071
Old discussion:
https://news.ycombinator.com/item?id=15828773
More info here:
http://www.iguanademos.com/Jare/wp/?p=2756
https://www.hanshq.net/fire.html
https://www.gamedev.net/articles/programming/graphics/simple...