Jump to content

Top-down isometric view from a WAD file


GCP

Recommended Posts

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?

Share this post


Link to post
36 minutes ago, GCP said:

15-nuts-MAP01.jpg.cdc280371fbb57710cfac3a990853345.jpg

That looks beautiful!

The first top-down isometric Doom image I saw was AV's Misri Halek from Doomworld's "Top 100 Memorable Maps" .

Share this post


Link to post

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?

Share this post


Link to post

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.

Share this post


Link to post

@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. :)

Share this post


Link to post
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.

Share this post


Link to post
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.

Share this post


Link to post
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.

Share this post


Link to post
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)

Share this post


Link to post
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.

Share this post


Link to post

@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,

  1. 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)
  2. Readme doc for dumbasses like me?
  3. 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!

 

iNfKKZo.png

iCKF6Yc.jpg

Here's the full image of 11mb:

3d1oLFI.jpg

 

 

Share this post


Link to post
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.

Share this post


Link to post

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!

Share this post


Link to post
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.

Share this post


Link to post
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

Share this post


Link to post
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?

Share this post


Link to post
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 by Redneckerz

Share this post


Link to post
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 by GCP
grammar

Share this post


Link to post
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.

Share this post


Link to post
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!

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...