Jump to content


  • Content count

  • Joined

  • Last visited

Everything posted by selliott4

  1. I noticed that some of the WAD files in the "levels" directory contain maps that do not match the filename. For example, "map08.wad" contains MAP01. Here's a one liner to get a list of all WAD files that contain unexpected maps: cd levels; for w in c*.wad dm*.wad map*.wad; do l=${w%.wad}; l=${l^^}; l=${l/DM/MAP}; l=${l/C/E}; bad=$(yadex $w < /dev/null | grep " Levels:" | grep -v $l | awk '{print $2}'); if [[ -n $bad ]]; then echo -e "$w\t$bad"; fi; done And the output it produced: dm31.wad MAP01 dm32.wad MAP01 map06.wad MAP04 map08.wad MAP01 map13.wad MAP09 map14.wad MAP03 map18.wad MAP06 map19.wad MAP08 map24.wad MAP06 map32.wad MAP01 I realize that the build handles this correctly, that the filename drives what maps ends up as in the final "freedoom*.wad" files, but it's still a bit confusing. For example, wad2image, which I'm in the process of trying to get integrated into the build, generates images based on the map name, not the filename. Fortunately based on a quick experiment I did it's possible to change the map name within the WAD file with a hex editor without otherwise changing a map. In other words it's possible to edit the map names listed above by only changing one or two bytes in the containing WAD file. The build seems to still work correctly after the edit. Should I submit a pull request with the map names edited to match the WAD files?
  2. It's a bit surprising to me that levels are still going to be replaced, not just edited, which I'm guessing is how this happens. In any case I could take that one liner and make it into a script, something like "scripts/test-map-names.sh". There would then be a build target like "test-map-names" that ran it. There could be a new "test" target that then depends on "test-map-name" so additional tests could be added easily in the future. Does that sound about right? I think fixing this problem in an automated manner is a harder problem than detecting it. I can just check again in a while and submit another CR if need be.
  3. I've submitted pull request 481 for this.
  4. Previously in the thread "Using wadlc and wadldc in the build" I asked if there are utilities that can be used display the difference between two WAD files as an image. This is my attempt at creating such a utility. I've created a script "wad-diff" that will do this. By default it generates a diff image for changed WAD files in the "levels" directory, but it can also be used to generate diff images for arbitrary git revisions. Here's one of my favorite examples: The above was generated for git commit 0c004ce which says "MAP05: Move tree aside to prevent the player from getting stuck". By diffing that revision we can see the tree that was moved. Unchanged pixels are white. Adds are blue and removes are red. You can generate this image with: As can be seen above I've added make targets that invoke the scripts. Target "wad-diff-display" displays the diff images produced via "display". By default the diff images are the size of the display, so normally you can see more detail, but I didn't want to post such a large image. It doesn't always work this well since sometimes Yadex displays different revisions of the WAD at different scales, but it works a lot of the time, especially for small changes. I've created pull request #430.
  5. I've finally submitted a significantly overhauled pull request in part based on feedback I received. I hope it's helpful. Let me know what you guys think.
  6. I recently created an open source command line utility named "wad2image" that converts maps in WAD files to images. There are many options to control how the images are created. wad2image can select multiple maps from multiple WAD files and create images for those maps. wad2image can create animated GIFs to illustrate the differences between revisions of a map. I made a web page for it as well as a github page. I hope it's helpful. Feedback would be great.
  7. I've looked at it more carefully and 0.9.1, which I mentioned in my previous comment, should fix the two bugs, but it's not as robust as I'd like it to be. It may fail if the IWAD is missing sprites. I just posted 0.9.2. The direct download link is here.
  8. Thanks for the feedback. I've added a sentence about ImageMagick to the requirements in wad2image's home page. You can control the animation speed with "--gif-duration". By default it's 500 milliseconds per frame. Try adding "--gif-duration 2000" to make it four times as slow with 2 seconds per frame. I've fixed the two bugs that you've found and I've released version 0.9.1. The direct download link is here. It should now render Hell Knights. Also it should also no longer have "animate: unable to open" error messages combined with a non-zero exit status. It does build the GIF files by loading the PNG files created where each PNG file is one animation frame. Generally "-d gif" is good if you don't care about keeping the static PNG images that went into building the GIF. The GIFs are valid in my testing. They appear animated in chromium, animate and gpicview. If you like I can try your "Feveswar*.wad" files.
  9. Sorry for the late response. I haven't logged in recently. I see what you mean about the Hell Knight. I just reproduced the red dot problem with Doom2's MAP06. Other Doom 2 monsters are rendered, but not the Hell Knight. wad2image is confused by the sprite name. The sprite prefix is "BOS2" so wad2image expects the sprite frame to be "BOS2A1" or "BOS2A1D1", but actually it's "BOS2A1C1". I don't quite understand how the sprite names work, but I'll see if I can get it working this weekend if not sooner. The error you got about wad2image not being able to find "animate" is because of "-s --show-cmd animate". "-s" tells wad2image to run an external command to show the images once it's done. "--show-cmd animate" changes the command from its default value of "display" to "animate", which supports GIF animation. Both "display" and "animate" are in the ImageMagick package. The good news is this is optional. wad2image probably created the images in the "images" directory, it just wasn't able to display them. Also, passing in "-v" (verbose) is handy - it gives you more information, such as the path to each image created.
  10. Wasn't there a tool that created an image of your map?

    The download on it's web page is a ZIP file that you expand wherever you want. By default it creates images in it's "images" directory". Its web page has a few examples. It's a Python program that requires Pillow, an image library for Python. Getting Pillow installed might be the tricky part if you don't have the "pip" utility as per the instructions on wad2image's web page, but there is probably a way. Then again it may already be installed on your OS. A few other approaches came up in this thread. There are advantages to each of them. One advantage of wad2image is that it can do multiple maps at once, and it can do it non-interactively based on command line arguments. So if you find yourself creating images a lot it may save you some time since you just have to scroll back in your history, or write a BAT file, or however you do it on your OS, rather than having to manually go through the same process each time. It's possible that Automapper does that, but I'm not familiar with it.
  11. Wasn't there a tool that created an image of your map?

    I'm the author of wad2image utility mentioned above and I just noticed this thread. I'm sorry to hear you guys are having trouble with it. Maybe I can help. What operating system are you using? Can you include the output of wad2image and maybe a link to the WAD you want an image of?
  12. I'm happy to have wad2image bundled, but it's GPLv2+. I gave it that license because it includes some Yadex files, which is GPLv2+. I'm not sure what GZDB's license is. Even if wad2image was not bundled installing it is pretty easy. And running it from another program shouldn't be hard.
  13. I think so if by layout you mean two 2D floor plans. It does not create anything like 3D images from inside the map.
  14. I know this in an old thread, but I wanted to let everyone know that I just created a utility for converting maps in WADs to images named 'wad2image" that's much nicer than the Yadex screenshot approach in my pull request. There are many options to control how the images are created. wad2image can select multiple maps from multiple WAD files and create images for those maps. wad2image can create animated GIFs to illustrate the differences between revisions of a map. I made a web page for it as well as a github page. Anyway, I don't know if there is still any interest in being able to see differences in revisions of maps, but if so maybe I can work on a new pull request. Linguica, You're in the credits file because as far as I know you came up with the idea of using animated GIFs to illustrate the difference between revisions of a map. Thanks for that.
  15. I've downloaded devinacker's fork (seems to be the preferred one) of OMGIFOL. It looks like you used the included drawmaps.py to draw those images, which doesn't render things as is. I've enhanced OMGIFOL's drawmaps.py so that it renders things as little circles with random but consistent colors which I've submitted to devinacker as a pull request. Here's what MAP05 (the MAP used in the OP) looks like with my enhancement: The tree in question is a little purple dot, but this is not a diff, it's just the latest version of MAP05. Incidentally I was curious what OMGIFOL stands for. It's "Oh My God! It's Full Of Lumps!". So they get credit for humor :-) So this has potential to be a replacement for the screen capture of Yadex approach used by my wad-to-image script, but it will take more work to get the thing colors to resemble the things they represent, and even more work for them to be the right shape. Given that do you guys think you'll merge my pull request? It should be pretty safe in that the only code change it makes to an existing file is to add a few targets to Makefile that people don't have to use if they don't want to. And people can rework wad-to-image to instead use OMGIFOL in the future when and if they overcome the thing limitations mention above.
  16. Oops. Normally I'm pretty good at reviewing the files in my commits, but I was doing some last minute testing with map07.wad, and that change snuck by. I've create pull request #432 that is just like #430, but without map07.wad.
  17. But will it generate images with things? I'll look at OMGIFOL more tomorrow and possibly answer my own question.
  18. Nice. What tool did you use to generate those images? What I did is a bit of a hack (taking a screenshot of Yadex), so I'm open to using a better utility.
  19. Feedback on MAP11

    Since I've been playing through freedoom2.wad I thought I'd share my feedback for MAP11. I couldn't find an existing "Phase 2" thread that included MAP11, so I created a new thread. If MAP11 is going to be discarded feel free to ignore my comments. I think MAP11 is a nice map other than a few inaccessible secret areas and pickups. A brief description follows each image. This stuck blue door at -1186, -2118 only opens to a height of 16 for reasons that were not obvious even after looking at it in Yadex. Doors open to the height of the lowest ceiling of the neighboring sectors minus four. Something hacked MAP11 so that the Doom engine thinks that distant sector 131, which has height 20, is a neighboring sector. Apparently this was done by adding line 857 to the lines of the sectors that makes up the door. Sadly there is no way to raise the ceiling of sector 131 due to another problem (more on that later). Also, I believe this could've been accomplished by not hacking the map - a small sector could have been added adjacent to the door with a ceiling height of 20. Do you guys know what tool did this? Also, is there a good tool that dumps all information, all IDs, etc, of a WAD so they can be examined? I had to debug the Doom engine to figure it this out, so it would be helpful in cases like this. I don't think this door, which leads to a secret area at 1315, 215 will ever open. It has tag 666, which, for some doom levels, opens when the last of a certain type of monster is killed. However, unless I'm misunderstanding p_enemy.c for Doom2 666 only does anything on MAP07. This is related to the previous problem because you need to get into this room to cross line 2941 to raise sector 131 to unstick the door shown in the previous photo. Maybe I'm overlooking something, but I think it's impossible to get this BFG at -534, -170. None of the neighboring sectors or linedefs have helpful tags or flags. I even tried rocket jumping in PrBoom+. I never left the ground. Does that work in some other Doom engine? This is a dead Commander Keen in a cage at 3547, -314 along with a dead chaingunner. The cage is lowered, but not opened, by a switch. I'm not sure what the point is. Also, Yadex lists Commander Keen as decoration, but they count as kills. Should the user have to shoot defenseless stationary decoration to get 100% kills? That seems odd to me. Likewise with the other Commander Keens on the map. This apparent door at 2256, -736 would lead outside of the map if it were a door and if the impassible flag was not set. Should there be fake doors?
  20. Feedback on MAP11

    Thanks for confirming that about the BFG. That's totally understandable. I kept wondering if I was overlooking something. I'm guessing at this point my "fake door" comment (my last image) is not a concern now that I've noticed them in other Freedoom 2 maps. Perhaps the idea is to give the user the illusion that the map is bigger than it actually is, that they are not trapped in a tiny enclosed universe. But while playing I still get curious what's behind that door, and if I overlooked a switch. Thanks for the explanation and the term "disjointed sectors" in particular. I kept searching for variations of "stuck door" and I could never find anything relevant. I ended up debugging PrBoom+ to see what was going on.
  21. Using wadlc and wadldc in the build

    The recent the "Wadspy output with Daily Builds" thread having to do with summarizing levels with a text file made me curious if it's possible to take the concept one step further where the level WADs could be entirely converted to and from text format. The "wadlc" and "wadldc" CLIs from xwadtools, the same GitHub Doom-Utils organization Freedoom gets its "deutex" from, are such tools. This would make it possible for the actual checked in Git resource in to be a text file, so something like "levels/map11.txt" instead of "levels/map11.wad". The build would then produce all of the "levels/*.wad" files based on the "levels/*.txt" files. There would be some other build target, maybe "submit", to go the other way to update "levels/*.txt" files based on modified "levels/*.wad" files. This would be done after editing "levels/*.wad" files. Why the additional abstraction? The levels would then be diffable and mergeable. When viewing pull requests for levels you'd be able to actually see a summary of the changes in GitHub, although cryptic. More importantly if ongoing work from multiple authors made changes to different parts of the level they could be merged by Git automatically. Diffs could be done locally as well to make sure no unintended changes were made before submitting a pull request. What do you guys think? Maybe I could look into modifying the build if there is any interest.
  22. Using wadlc and wadldc in the build

    Good stuff. Thanks for sharing that. With regard to diffing the IDs getting renumbered what if they IDs were stripped out before the diff? Of course you then have less information. If only each item had some ID that never got changed once set. Also, this probably means that my original goal of having maps be git mergeable won't work in most cases :-/
  23. Using wadlc and wadldc in the build

    Thanks for the feedback, but just to clarify - I was assuming that people would continue using the same WAD editors they are currently using, that part of the process would be the same. I wasn't assuming that anyone would want to update WADs by editing the text files. Only the build would handle the conversion either direction. As to people not familiar with GitHub - my post was geared toward that because I assumed that you want people to do use that process, but indeed all the current ways need to be accommodated: People doing the full GitHub pull request approach. They would just do "make submit" after their normal process when done with their edits to the levels, but before the pull request. People with commit access pushing directly to GitHub. They would just do "make submit" after their normal process when done with their edits to the levels, but before the git push. People who have the build setup, but don't use GitHub and who currently post their WADs somewhere on the internet. They would just do "make submit" after their normal process and then post the text files somewhere on the internet instead of the WAD files. People who don't have the build setup, but edit the levels anyway. This is a trickier. They'll have to get the build working, or work with wadlc and wadldc directly. That's my understanding of what people are doing. EDIT: Possibly for steps 3 and 4 the submitter would just submit the WAD files and the maintainer would put them in a build tree and do "make submit" before committing the changes. I'd totally understand if this seems too odd, but I thought I'd suggest it in case it's helpful. I agree that "Use Wadspy to output level stats" thread is a good idea regardless. By the way, do you have some way of comparing to versions of a level WAD graphically, like something that displays the changes made on a 2D image, so you can see what was done? I was assuming that was not common when I posted this. I guess that's another topic, but I have some ideas on that as well.
  24. Feedback on MAP11

    Indeed you are right about Commander Keens and that 666 door. That addresses my first two images, and maybe the second to last one about Commander Keen. The way that stuck door works is a bit tricky - I think the map author wanted the user to think the blue skull key was needed to open the door, but actually crossing linedef 2941 is what unsticks the door at which point the ordinary blue key card works.
  25. Vanilla Bugs and Fixes

    Litrivin, Have you figured out your Yadex build issue? What version are you trying to build? Maybe I can see if I can figure it out.