Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Revenant

Drawing Doom maps, start to finish

Recommended Posts

Recently I wrote a Python script that opens a Doom map and renders it to an animated GIF, starting from "line zero" and tracing out areas of the map in linedef order. The result is something like a "start to finish" view of a map's construction - it's not perfectly chronological, since areas being deleted/reworked/detailed, etc. can cause things to sometimes show up incomplete or slightly out-of-order - but it can still give a pretty interesting look at the process behind a lot of the original map designs.

Here are a bunch of GIFs it's generated - this includes every map from Doom, Doom II, Final Doom, the Master Levels, the Doom 0.4 and 0.5 alphas, Heretic, Hexen, Strife, and Chex Quest.

This wasn't really supposed to be something for Doom's 20th anniversary, but that's more or less when I ended up actually finishing it (I'm posting it four days late but at least I beat the Cacowards :V)

Enjoy, I suppose.

EDIT: handy py2exe compiled version for windows here

Share this post


Link to post

Thanks, this is really interesting!

Any chance you can expand the script to cover the Press Release Beta levels as well?

It would be particularly interesting if you could combine the data from different versions so that we can see a more complete evolution of eg. E1M2 or E2M2, which appear in 0.4, 0.5 and the beta.

Share this post


Link to post

Wow, these are really cool! I haven't watched many yet, but you can definitely see Romero's iterative design at work, seeing a big shape get drawn, then all the little details filled in before moving onto another section of the level. Really easy to pick out areas where the design changed (and even guess at what the original design was in some cases), too.

Doing this with things displayed would be even more awesome.

Share this post


Link to post

Just awesome, definitely a lot more interesting and useful than boring and incomprehensible Doom Builder timelapse videos. Now I feel inspired to try different mapping techniques, like making separate areas and then connecting them instead of just gradually expading from one area.

Share this post


Link to post

One of my favourite things related to Doom, that isn't actually playing the game or mapping for it myself, is watching timelapse videos of other people building maps.

So Merry Christmas to me! Thanks a lot, Revenant. I haven't tried it out yet, but I'm having a ball just looking at the GIFs you've already put up. Can't wait to apply this to some classic levels.

EDIT: @ Da Werecat, I think your GIF crashed my laptop, lol. >:[

Share this post


Link to post
Dragonsbrethren said:

seeing a big shape get drawn, then all the little details filled in before moving onto another section of the level

gothic99.wad_MAP01.gif (thanks TGH)

Dragonsbrethren said:

Really easy to pick out areas where the design changed (and even guess at what the original design was in some cases), too.

There are a few pretty interesting specific examples of this in early maps, I think: for example, the northmost area in E1M1, in its current form, appears to have been added very late in the process - and in the "A Visit to id Software" video (just after the 10-minute mark) you can actually see a completely different area that once occupied that space, so the GIF is probably a reasonable indicator of just how long it stayed that way before getting redesigned.

Another interesting early-game thing I noticed was that the SSG room in Underhalls seems to have been essentially the last part of the map to be built, like they had added the new weapon and just decided to bolt a new area onto an existing map to show it off. I wonder how much of the map's gameplay was ultimately designed without the SSG in mind at all.

fraggle said:

Thanks, this is really interesting!

Any chance you can expand the script to cover the Press Release Beta levels as well?

It would be particularly interesting if you could combine the data from different versions so that we can see a more complete evolution of eg. E1M2 or E2M2, which appear in 0.4, 0.5 and the beta.


It actually does support the press release beta levels already (they're just regular Doom-format maps after all), it just didn't really occur to me to add GIFs of them myself since I didn't recall them being extremely different from the final maps. I've added them to the doomalphas directory now.

A way to compare versions of maps would definitely be interesting, though. I guess at the very least, without modifying the script at all, you could just edit multiple GIFs together to highlight differences between versions somehow, but a way to make the comparison automatically would be awesome (not just for the Doom alphas but for any other map that exists in multiple versions as well).

Share this post


Link to post

Rendered 24293 linedefs into 8010 frames in 3516.300597 seconds.
Good news: your program can handle the behemoth that is Egg Rock Zone Act 2 without any issues. (At least, in shape mode. I daren't try the default linedef mode. This GIF is already 2MB large.)

Share this post


Link to post

Hey, maybe I'm just dumb, but I checked you readme and couldn't find an answer. I guess what I'm looking for is a simple 'how to run this thing' guide.

Windows 7:
I unzip dmvis.zip's contents into their own folder,
with MAP01 in the same folder, run dmvis.exe
try dragging MAP01 to dmvis.exe
a few different permutations of the above, running as administrator, etc, etc...

(can't find this 'py2.exe' mentioned anywhere)

Either way I just get a cmd box this pop up really fast, with some text, but it's gone before I can read it. '/k' in the command line doesn't work for some reason...

Anyway, probably missing something glaring and nooby, but I can't be the only one.

Share this post


Link to post
schwerpunk said:

Hey, maybe I'm just dumb, but I checked you readme and couldn't find an answer. I guess what I'm looking for is a simple 'how to run this thing' guide.


Running it from the command line with no arguments (or "-h") will give you a quick rundown of the options, but the simplest way is to enter the directory and type something like:

dmvis doom2.wad map01

and let it spit out a GIF.

Share this post


Link to post

I could be yelling from the top of my lungs, how DIVINE this utility is! It's absolutely unbelievable!

Happy 20th to yourself too!!!

Share this post


Link to post

The GIFs of the iwad maps are great :o)

I think my habit of splitting linedefs instead of drawing new shapes in Slade2 seems to really break any sense of sequence in stuff I have done. Only older stuff where I used DCK22f has reasonable stretches of continuity in a single zone of the map.

Share this post


Link to post

Thanks, Revenant. Running it from the command line worked like a charm. Works with Doom2.wad, and I'm now just running it on one of my own colab maps. Fun fun fun!

This is probably the most exciting thing to come out for Doom's 20th. You should feel very proud. I can foresee people routinely posting dmvis gifs along with their screenshots in the 'post your Doom pictures' thread. I think you've started something really great here. :)

EDIT: doesn't seem to work on a colab map I did with someone else... maybe the map is just going beyond the 1024 box, though.
EDIT2: this old map worked fine, though. Really shows my sloppy mapping. Splitting linedefs and remaking sectors kind of screws with the script, but knowing the map, I can easily recognize my own progression.

Share this post


Link to post

Boom maps yes, UDMF maps no - the script uses Fredrik's WAD editing library which was last officially updated a few years before UDMF was created.

I did start a personal fork of the library which the compiled version of dmvis uses; at the moment the only major change was added support for Hexen/ZDoom format maps, but UDMF support would be a nice thing to add eventually.

Share this post


Link to post

This is a very cool idea, and I'm glad you were able to make something out of it! I've always wondered if it would be possible to have a recording of a line-by-line construction of a map as it is being made. This isn't exactly that, but its close enough.

I thought it would be neat to see if I could do one of the Vela Pax maps. I started it on MAP01 and it has been running for about 6 hours now...

Share this post


Link to post

Haha yeah, it's "a bit" slower than I'd really like. Having to iterate over linedefs to form complete shapes is a huge bottleneck when there are so many of them (doing it in "pure" first-to-last linedef order with the IWAD maps usually produced incomprehensible nonsense and I think it looks a lot better as it is). I'd like to try coming up with a better (faster) solution at some point.

Share this post


Link to post

These are all awesome. Very interesting to see how the id designers would make completely disconnected areas and then build paths towards them... I also like watching the little differences in how Sandy, John and American would approach a map.

Sadly I'm a bit technologically retarded - can anyone give me a quick how-to on how to run these for certain maps? I'd like to watch some classic designers at work a la Worch and what-not.

Share this post


Link to post
Revenant said:

Haha yeah, it's "a bit" slower than I'd really like. Having to iterate over linedefs to form complete shapes is a huge bottleneck when there are so many of them (doing it in "pure" first-to-last linedef order with the IWAD maps usually produced incomprehensible nonsense and I think it looks a lot better as it is). I'd like to try coming up with a better (faster) solution at some point.


Faster is always better, of course :). I suppose it makes since that it took so long for this particular map since the linedef count is pretty much at the ceiling (its hovering around 65500+). But I didn't realize that it draws that way, which surely does make it more interesting to watch instead of seeing lines just pop up out of nowhere.

Oh yea, my gif did eventually finish. It probably took a good 8 hours or so. The .gif ended up being 43mb; every time I tried to open it in Firefox, it would choke :P

I got it to open and play in Virtual Dub, but sadly it seems that the generator doesn't like my node format :(. I dunno if that's anything you could fix, but now you know that it doesn't like the uncompressed ZDoom node format, heh.

Share this post


Link to post
Snakes said:

These are all awesome. Very interesting to see how the id designers would make completely disconnected areas and then build paths towards them... I also like watching the little differences in how Sandy, John and American would approach a map.

I suspect that might actually be caused partially by things like hallways, doorways, and stairways being altered after a basic connection between areas already existed, which would in effect sometimes make the connection "newer" than the areas it was connecting. Like I said before, don't trust the exact progression of the GIF to be 100% accurate because of things like that :P

Mechadon said:

I got it to open and play in Virtual Dub, but sadly it seems that the generator doesn't like my node format :(. I dunno if that's anything you could fix, but now you know that it doesn't like the uncompressed ZDoom node format, heh.

That's not anything to do with nodes (which my script completely ignores), it's actually.... probably the fact that the Omgifol library doesn't actually handle more than 32768 of anything correctly (I really should have realized and fixed this myself when I added Hexen support, but uh, I'll do it tomorrow. Sorry for wasting your time!!!!!!!!!)

Share this post


Link to post

a very interesting python program.

i tested it on a map i made for the w.i.p. soul survivor wad, and i noticed that it follows the way the map is made in a more than correct manner.

as i make all maps on a concept basis with no predetermined layout,
i delete, alter, and redraw many sectors when the textured 3D preview is not to my liking. thus the resulting gif has at times a reverse order where it looks as if the detail is drawn before the actual holding sector.


dropbox link to the gif as photobucket its upload fails :
https://www.dropbox.com/s/nuiqx0gkzdvvxgv/soulm2.gif

gif kb : 113.2 kB
frames : 1000+
size : optimized for size with the gimp


edit : more correct statement.

Share this post


Link to post

Some of these are really crazy. I'm really fascinated with the way the stairs in the secret tunnel in E1M1 are done, all disconnected like that. also the pillars in E2M2, five of them are made and the last one is added really later on -- i wonder why. It also shows some evidence of maps like MAP14 and MAP15, where much more attention is given to specific areas at a time than the general layout of the entire map. Im trying to make note of all the maps that didn't start with the starting room. It seems like many of the ones in that category are ones with large landmarks, like MAP20: Gotcha's Cyberdemon and SpiderMastermind arena, and CATWALK.WAD's... catwalk. Surprisingly though, MAP06: The Crusher's Crusher (excepting the final battle before the exit and some secret areas) was the last part of the map to be made.

These are all really sweet though. I'm curious to run this thing through my maps and see if anything really embarrassing happens.

Share this post


Link to post

Here's my MAP13: Late Night Porking from 32in24. It looks really weird though because a lot of it was made with basic shapes and splitting lines and dragging them around. The overall design process didn't really look like this when I was making it I think, given all the hallways I stretched and room shapes I manipulated and stairs I added for height variation.

http://img690.imageshack.us/img690/5455/ocqy.gif

EDIT: some further examples -- pretty interesting look at how much my level design has evolved, here's MAP01 or Motornerve that I made a few years back, vs. MAP01 of Motornerve 2 that I made last week.

Most of the maps from UAC Ultra 2 are crazy since so much of the time spent on the maps were from deleting and restarting areas from scratch, and manipulating the shapes of the rooms. This one from MAP05 of uu2e1-v1.wad looks like I started every single room in the map at once.

Also if you're interested in mapping like a robot, here's a map from Oblige. Unfortunately it looks a lot more sane than anything I've ever made.

Share this post


Link to post
Revenant said:

That's not anything to do with nodes (which my script completely ignores), it's actually.... probably the fact that the Omgifol library doesn't actually handle more than 32768 of anything correctly (I really should have realized and fixed this myself when I added Hexen support, but uh, I'll do it tomorrow. Sorry for wasting your time!!!!!!!!!)


Oh I see! I assumed it was node-related because of the format that I was using (not sure why...). If its something fixable, that would be pretty cool! And no worries, I just let the thing run while I did other things, heh. I probably shouldn't have tried to use such a huge map, but it was a good stress test it guess. It made the gif just fine except for that fact that it didn't like more than 32768 lines.

By the way, if you want me to send you the 48mb gif file for any reason, let me know.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×