GCP Posted December 16, 2021 You know the "top-down" views for Doom 1 and Doom2 levels? There is a link to these files at the end of the Wiki articles. I was fascinated with those pictures and thought it was a pity they only exist for the classic levels. So, long story short, I've created a progrram that does exactly that - generate "top downs" (actually, isometric, to be more precise) views from a WAD file. Check out some of the samples: Classic Hangar Plutonia Hell Revealed 2, if I remember correctly Alien Vendetta Nuts These are the compressed versions, original files are humongous! (Hangar is 7 Mb, Nuts is 74Mb and it is not the biggest I've seen). Here are more samples: https://drive.google.com/drive/folders/1LCnMa2RAPgiPFU99ckNcPk69mAz-B7Ep?usp=sharing (warning: files are huge, total 9 Gb) Python code that generated those pictures: https://github.com/gamescomputersplay/wad2pic Video about how it was all made: What do you think? 78 Quote Share this post Link to post
Jacek Bourne Posted December 16, 2021 Excellent. I noticed that these pictures seem to retain the same camera position in relation to the center of the map. Is there any way for it be zoomed out more to show the whole map in cases of very large maps? 2 Quote Share this post Link to post
Hitboi Posted December 16, 2021 36 minutes ago, GCP said: That looks beautiful! The first top-down isometric Doom image I saw was AV's Misri Halek from Doomworld's "Top 100 Memorable Maps" . 4 Quote Share this post Link to post
Redneckerz Posted December 16, 2021 I know there was one author who did Isometric views of all Classic maps but no program was released. @GCP this is some ace stuff you have there and i could see this be expanded with a GUI and support for even more complex maps. What are your goals with Wad2Pic? 3 Quote Share this post Link to post
Doomkid Posted December 17, 2021 This is such a sweet little utility! Gives SO much more context than the boring-as-hell "automap screenshots". Watching demo playback in this kind of perspective is probably a pipe dream, but damn I'd love that. 9 Quote Share this post Link to post
GCP Posted December 17, 2021 @Jacek Bourne Some of those samples are cropped, to zoom in on details, or for dramaatic effect (as with Nuts). Actual raw file is drawn in such a way, that te wjole map is covered. It handles maps up to about 20kx20k, (with 16Gb laptop), but may crash on bigger ones. @Hitboi Yes, I know which picture you are talking about and it is beatuful. I think it was made with different tech though. That was a "source port" that builds a map from WAD in Unity and allows you to sort of "fly around". Which is in a way cooler than what I have, but pictures have limiteed resolution. @Redneckerz I haven't thought about GUI, really. But worth looking into. Currently the program is quite unoptimized, it takes minutes (and with huge maps even hours) to draw the image and I know there are places in code that can improve the performance multi-fold. To be honest, I don't have any specific plans, it was more like a hobby project, that I started because I really wanted to look at that last image from Nuts WAD. :) 4 Quote Share this post Link to post
Captain Ventris Posted December 17, 2021 Hey this is cool! A great way to view familiar maps. 0 Quote Share this post Link to post
Hitboi Posted December 17, 2021 10 minutes ago, GCP said: That was a "source port" What source-port? The only Unity-related source-port I know is the Classic Unity Port. 0 Quote Share this post Link to post
Dweller Dark Posted December 17, 2021 Could this type of map view be replicated in a sourceport, like as an automap layout? 0 Quote Share this post Link to post
Loud Silence Posted December 17, 2021 3 hours ago, Doomkid said: Watching demo playback in this kind of perspective is probably a pipe dream, but damn I'd love that. Imagine playing like this. I enjoyed Alien Shooter a lot. 4 Quote Share this post Link to post
Maximum Matt Posted December 17, 2021 8 hours ago, Doomkid said: Watching demo playback in this kind of perspective is probably a pipe dream, but damn I'd love that. Diablo Doom??! Somebody. Get. On. That. NOW. 3 Quote Share this post Link to post
Sneezy McGlassFace Posted December 17, 2021 Love this. Is there a way to hide secrets? Also, does it work custom textures? 0 Quote Share this post Link to post
GCP Posted December 17, 2021 14 hours ago, Hitboi said: What source-port? The only Unity-related source-port I know is the Classic Unity Port. Ok, my mistake, and it was right there in the name. That progam was called NASTY, as in "Not A Sourceport Thank You". It seems to have some cool features, looks like you could actually rotate and move the isometric map in real time. (but only one screen-size area, whereas Wad2Pic is fuill real size picture of a map) 1 Quote Share this post Link to post
GCP Posted December 17, 2021 12 hours ago, Eddie 2077 said: Could this type of map view be replicated in a sourceport, like as an automap layout? I'd say the way I did it - most certainly no. I went for 1:1 pixel to pixel impression of the whole level and it totally desrtroyed the speed. Even for Hangar it takes up to a minute to generate such a file. But, I do think that if bright minds (I will probably not qualify) put themselves to a task, very few things remain impossible. Especially since here pathway is obvious: - Avoid bottlenecks that I happen to have in my code (I flood fill sectors, and walls are drawn in a weird way - it can be much faster) - Generate only the screen-sized part, not thousands of pixels by thousands of pixels - there is most certainly way to optimize handling of textures, flats and sprites for that smaller size - use a fast language, not Python (with all due respect). With all this, I'd say it should possible to go from 1/60th FPS to decent single digits (and maybe even double digits FPS) - and from there it is a straight line to an automap. 2 Quote Share this post Link to post
GCP Posted December 17, 2021 2 hours ago, HrnekBezucha said: Love this. Is there a way to hide secrets? Also, does it work custom textures? Thanks! Hiding secrets. Well, no. To be honest, I can't see how it can be reliably done. Often on a map only a small sector can be tagged a secret - like a small area near the door or something. The rest, from the data perspective, is just a normal part of a level. As for the textures - yes, absolutely. Unless WAD gets too crazy with creativity (I mean not following the standard spec) - it should be fine. Here are a few examples: (pictures are cropped by me to focus on details, originals have the full map in them) I think this is one of the first popular map with custom textures, taken from actual Trinity college in Oxford, UK Doom and the city (thtthren.wad) This looks nice (MOTM_21.wad) Getting brighter (DBP37_AUGZEN.wad) Oh my eyes! (massm2.wad) And for a good measure - custom sprites too. (FISTFUL.wad) 15 Quote Share this post Link to post
Captain POLAND Posted December 17, 2021 Try making one for planisphere 2. 1 Quote Share this post Link to post
Sneezy McGlassFace Posted December 17, 2021 @GCP You're right, actually implementing secrets is not really possible. And oh my goodness, it works wonders! Down bellow's a preview of one of my recent maps. I salute your techmage wizardry, good sir! Now, for all the other neanderthals such as myself, you put the two .py files into a folder/directory with your iwad (prolly doom2.wad) and your pwad (something like myawesomemap.wad, change MAP01 to whatever map you wanna draw), then edit the last line in wad2pic-example.py to wad2pic("doom2.wad", "MAP01", "myawesomemap.wad", options=options) Then open your command line/terminal in that folder/directory and run "python3 wad2pic-example.py". And assuming you didn't get an error about not having numpy, it'll do some thinking and spit out an image after a few minutes. And don't waste any braincells on options=options lol. I'm writing this because it took me a while to figure out, so there is a chance I'm sparing someone the trouble. There's two three things I would absolutely love, And option for not drawing sectors/linedefs that are tagged "invisible". Those are often for monster teleporters and stuff, and are meant to stay hidden. (The funky-looking grey rooms in bottom left of my last picture) Readme doc for dumbasses like me? Command line arguments to the main .py file. Having some default configs like in the example and let people say something like python3 wad2pic.py -iwad doom2.wad -file myawesomemap.wad -warp 01, just like the doom source ports do it. If somebody wants to dive deep in to change the configuration, they can. Those who are scared of code don't have to worry about the magic behind it all. That would make it so much more awesomer than it already is. Did I mention I love it? I love it! Here's the full image of 11mb: 3 Quote Share this post Link to post
GCP Posted December 19, 2021 On 12/18/2021 at 4:28 AM, HrnekBezucha said: There's two three things I would absolutely love, I have added CLI support (although very basic one indeed) Now it can be called with: python wad2pic.py DOOM2.WAD MAP01 myawesomemap.wad (or python3, if that's the name for the python executive. All parameters required). I am also making the isometric perspertive the default one, so that options=options part can be ignored. Readme - yes, I will write that. I've looked again at my example file, and it is actually quite confusing. Props to you that you still figured how to make it work despite that. As for the hidden sectors. This is where I don't have any good updates. I don't think there is a "hidden' for a sector. There are hidden linedefs, yes, but not sectors. At least I couldn't find anything usable in the spec. In theory, we can introduce a parameter, for example, list of sectors to ignore. But it wouldn't work that well, really. The way it works now is that picture size is decided first, than sectors are flood-filled - so this way we are just hiding the sectors, the size of the image will still be the same. 1 Quote Share this post Link to post
Pistoolkip Posted December 19, 2021 On 12/17/2021 at 9:37 AM, Maximum Matt said: Diablo Doom??! Somebody. Get. On. That. NOW. How about Xcom Doom? 1 Quote Share this post Link to post
Bauul Posted December 19, 2021 This looks great! Two quick questions: 1) Does it support UDMF, or is it just basic Doom format? 2) Can it utilize custom assets in a pk3 format, or is it just assets in .wads? I'm guessing the answer is no and no, but as a GZDoom developer I might as well ask! 0 Quote Share this post Link to post
GCP Posted December 19, 2021 49 minutes ago, Bauul said: 1) Does it support UDMF, or is it just basic Doom format? 2) Can it utilize custom assets in a pk3 format, or is it just assets in .wads? You are right, the answer is no and no. Yet. I was thinking as one of the future improvement to add pk3 support. And, as it is just reading assets and the rest is the same, should not be too difficult. Or, rather, should not depend on most of the current code, which is a good thing. As for UDMF, If I understand correctly, it is a text-based way of presenting the same data, so should be relatively simple to implement too. But to be honest, I'm not sure I have heard of UDMF before. Are there a lot of maps out there? I mean, looking at Cacowards over the years, pk3 seems to be 25-30% of entries lately, but I don't remember UDMF there. Sorry if I am missing something. 0 Quote Share this post Link to post
Bauul Posted December 19, 2021 3 minutes ago, GCP said: You are right, the answer is no and no. Yet. I was thinking as one of the future improvement to add pk3 support. And, as it is just reading assets and the rest is the same, should not be too difficult. Or, rather, should not depend on most of the current code, which is a good thing. As for UDMF, If I understand correctly, it is a text-based way of presenting the same data, so should be relatively simple to implement too. But to be honest, I'm not sure I have heard of UDMF before. Are there a lot of maps out there? I mean, looking at Cacowards over the years, pk3 seems to be 25-30% of entries lately, but I don't remember UDMF there. Sorry if I am missing something. You are right in both cases. PK3 is an alternative way of packaging custom assets alongside the map (everything except the map file itself, which still lives in a .wad). A PK3 is basically a .zip file just with a different file extension, making it much more flexible (and smaller file size) than the .wad namespace approach. You can read more details here: https://zdoom.org/wiki/Using_ZIPs_as_WAD_replacement UDMF maps are as you describe, a text-format version of the basic Doom map format. They have fewer of the limitations of the original map format, and have specifications for more advanced features. Almost every major GZDoom map released recently will (in all likelihood) use the UDMF format. Recent Cacoward winners like Bastion of Chaos, Infraworld: Coma Moonlight and Lullaby are all UDMF maps, for example. Simply playing the map you wouldn't immediately know the difference, but if you open the file in Slade, you can see the different file format. There's more info on it here: https://doomwiki.org/wiki/UDMF 0 Quote Share this post Link to post
GCP Posted December 19, 2021 On 12/18/2021 at 4:10 AM, Captain POLAND said: Try making one for planisphere 2. I did try that - one of the first, really :) Well, it didn't work. It calculates the size of the resulting file as 43012x35257 (this includes 300 px margins and also accounts for high and low places). And then it runs out of memory (of which my laptop has 16Gb) trying to generate the file (during the flood-fill phase - I guess the Hudson river is to blame). Solution is: do not use flood fill, use SUB SECTORS. Still figuring out how that would work. But anyway, yeah, Planisphere 2 is the benchmark I am aiming for, but hasn't reached yet. It is the biggest map ever, isn't it? 1 Quote Share this post Link to post
Redneckerz Posted December 19, 2021 (edited) On 12/17/2021 at 1:19 AM, GCP said: @Redneckerz I haven't thought about GUI, really. But worth looking into. Currently the program is quite unoptimized, it takes minutes (and with huge maps even hours) to draw the image and I know there are places in code that can improve the performance multi-fold. To be honest, I don't have any specific plans, it was more like a hobby project, that I started because I really wanted to look at that last image from Nuts WAD. :) Didn't see this till now. Even as it stands, seeing stuff like Auger Zenith rendered in Isometric view looks faboulous - And dare i say, makes up for great backgrounds, too! This is one of those ''You have struck gold'' kind of applications. I can easily see this be used by mappers alike both for press shots but also to have great overview pictures of their wads in progress. Its also good knowing Planisphere 2 kicks your utility into oblivion - Finally we have a map that crashes both ports and utilities alike ;) Edited December 19, 2021 by Redneckerz 2 Quote Share this post Link to post
GCP Posted December 19, 2021 (edited) 17 minutes ago, Bauul said: Recent Cacoward winners like Bastion of Chaos, Infraworld: Coma Moonlight and Lullaby are all UDMF maps, for example. Hmmmm... I saw those and I thought they were pk3. Are you saying that UDMF can be a part of pk3? I thought it was just a set of lump that is saved as binary files in folders. I seem to have some learning to do. Edited December 19, 2021 by GCP grammar 0 Quote Share this post Link to post
Bauul Posted December 19, 2021 4 minutes ago, GCP said: Hmmmm... I saw those and I thought they were pk3. Are you saying that UDMF can be a part of pk3? I thought it was just a set of lump that is saved as binary files in folders. I seem to have some learning to do. UDMF and PK3 are two different standards for two different things. UDMF is a map format, meaning the way the map data itself (sectors, linedefs, Things etc.) is saved. It still lives in a .wad format. PK3 is a way of saving everything else outside of the map data. So textures, sounds, sprites etc. In the original Doom format both the map data and the asset data are both saved in the .wad itself, but a PK3 takes those assets out of the .wad and saves them in a modern zipped directory structure. If you open a PK3, you will see a folder called "maps", and in there will be a series of .wad files (one for each map). If you opened those .wad files (in Slade for example) you would find the map data. This map data can be either original Doom format, or UDMF. 2 Quote Share this post Link to post
Sneezy McGlassFace Posted December 19, 2021 9 hours ago, GCP said: I have added CLI support (although very basic one indeed) Readme - yes, I will write that. I don't think there is a "hidden' for a sector. There are hidden linedefs, yes, but not sectors. At least I couldn't find anything usable in the spec. In theory, we can introduce a parameter, for example, list of sectors to ignore. Great news!! Thanks a bunch for doing that :) With hidden sectors, that's tricky. You can't say "don't render sector 4" for example, because of how the teleporting rooms work - they are merged with a sector in the map for sound propagation reasons. So if sector 4 is a monster teleporter to be hidden, that would also hide a sector 4 from the actual gameplay area. So just like secret areas, that just can't be done. Good luck in your future endeavours! 0 Quote Share this post Link to post
BBQgiraffe Posted December 19, 2021 that's fucking sick, I tried to implement this sort of view for Neapolitan Doom but failed miserably and gave up lol 1 Quote Share this post Link to post
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.