Jump to content

You Should be Using DoomMake


MTrop

Recommended Posts

The real kickass things about this sort of "edit raw files on disk and build the wad" workflow are:

  1. Source control. You can make a Git repo for the project and hey ho you've got backups and history and a changelog and all that good stuff.
  2. If you've got a lot of text lumps (e.g. DECOHack for a DEHACKED-heavy thing), you can point a superpowered text editor like Visual Studio Code or Sublime at the folder.

re: #2, SLADE's built-in text editor isn't bad but it doesn't hold a candle to modern "IDE-lite"s like VSCode, and you can still use SLADE for the things it does best (e.g. sprite offsets, format conversions, TEXTUREx editing if you wanna use patches to assemble things, etc.)

 

Still though, #2 is a nice comfy thing but if you're not doing #1 yet, get on it. It will save your ass.

Share this post


Link to post
5 hours ago, Nevander said:

Forgive my dumb question but why not just use SLADE to create your WAD or PK3 like normal? It may be helpful to add to the OP what DoomMake does exactly that SLADE doesn't, for dummies like me who don't get it.

 

Exactly because the old way makes you edit a WAD directly. Doing that has several downsides:

 

  • one humongous file with hundreds or even thousands of entries in a flat structure, making it hard to navigate
  • having everything in one file makes it annoying to share between a team, because you have to upload (and everyone else has to download) the whole file even if only a single texture (or whatever) was changed. It's also bad for version control. Having a proper directory structure makes it very easy to use with something like Git (which can make sense even if only used locally, since you have a history of changes you can browse)
  • if something goes wrong with the WAD it's likely gone, taking everything with it (I hope you have backups!)
  • probably more

 

5 hours ago, CBM said:

 

A few questions...

 

how does it determine if a picture is a flat or a texture? and does it convert some random image format accordingly?

what is the purpose of "lock.json"?

where do .deh files belong, in assets?

 

To add textures and flats that are not inside a texture WAD you have to start your project with the "textures" template (among the others you want to use). That'll create the following directories:

  • src/convert/flats --> put your non-Doom format (like PNG) flat images here
  • src/convert/patches --> put your non-Doom format (like PNG) patch images here
  • src/textures/flats --> put your Doom format flat images here
  • src/textures/patches --> put your Doom format patches here

That means you don't have to manually convert your PNGs to the appropriate Doom format files, you just have to put them into the corrosponding directory in the "convert" directory and DoomMake will convert them automatically. For textures you also have to define the textures from the patches in the src/textures/texture1.txt or src/textures/texture2.txt files. Unfortunately there doesn't seem to be a way to automatically convert a single image to a patch+texture (sounds like a good feature request @MTrop. Edit: I created an issue for that: https://github.com/MTrop/DoomTools/issues/58). So yeah, DoomMake can also be used to only create texture WADs!

 

To include .deh files you have to start your project with the "patch" template (among the others you want to use). That'll create a directory called src/patch, where you can put your .deh (that directory by default includes a blank .deh patch). Note that you can also use the "decohack" template to let DoomMake build the .deh file from DECOHack code.

 

the lock.json file includes hashes of the "convert" directories, it's used to only re-convert the files in there if something was changed in the folder.

Edited by boris

Share this post


Link to post
14 minutes ago, boris said:

To add textures and flats that are not inside a texture WAD you have to start your project with the "textures" template (among the others you want to use). That'll create the following directories:

  • src/convert/flats --> put your non-Doom format (like PNG) flat images here
  • src/convert/patches --> put your non-Doom format (like PNG) patch images here
  • src/textures/flats --> put your Doom format flat images here
  • src/textures/patches --> put your Doom format patches here

That means you don't have to manually convert your PNGs to the appropriate Doom format files, you just have to put them into the corrosponding directory in the "convert" directory and DoomMake will convert them automatically. For textures you also have to define the textures from the patches in the src/textures/texture1.txt or src/textures/texture2.txt files. Unfortunately there doesn't seem to be a way to automatically convert a single image to a patch+texture (sounds like a good feature request @MTrop). So yeah, DoomMake can also be used to only create texture WADs!

 

To include .deh files you have to start your project with the "patch" template (among the others you want to use). That'll create a directory called src/patch, where you can put your .deh (that directory by default includes a blank .deh patch). Note that you can also use the "decohack" template to let DoomMake build the .deh file from DECOHack code.

 

the lock.json file includes hashes of the "convert" directories, it's used to only re-convert the files in there if something was changed in the folder.

Cool! Thanks for the help!

 

And this tool will be very usefull... especially because SLADE is somewhat buggy and hysterical when it comes to flats

Edited by CBM

Share this post


Link to post
9 hours ago, boris said:

For textures you also have to define the textures from the patches in the src/textures/texture1.txt or src/textures/texture2.txt files. Unfortunately there doesn't seem to be a way to automatically convert a single image to a patch+texture (sounds like a good feature request @MTrop.

Already suggested: https://github.com/MTrop/DoomTools/issues/58

EDIT: I just put 2-and-2 together - that's you, right? Haha!

EDIT2: I also just realized it was in your post. Boy, this morning is not my best...

 

Seems doable.

 

9 hours ago, boris said:

...DoomMake can also be used to only create texture WADs!

Correct, but the out-of-the-box templates won't merge the full thing into the final product. The build/textures.wad file that gets created contains them all, but they never get "released".

 

I wonder if I should code a case in the build scripts for bundling just a texture WAD if it has no maps nor other texture resources. Hmmm...

Edited by MTrop

Share this post


Link to post

DoomMake's been updated:

DoomMake
Changed for 0.13.0

Added: `infiles` as a valid option field for `TOOL::DECOHACK`.
Changed: Improved HTML documentation output.
Changed: Single-patch texture generation added to the `textures` and `texturesboom` templates (new projects). (Enhancement #58)

As always (or for you newcomers), you can update DoomTools by typing:

doomtools --update

There are other things changed, so the full release is here: https://github.com/MTrop/DoomTools/releases/tag/2021.11.22-RELEASE

Share this post


Link to post

I can't seem to get sky replacement textures working. I have a set of sky textures (RSKY1-3) and a modified TEXTURE1 lump due to the skies being longer. I made a WAD that has them and put them into the "wads/textures" folder but they don't seem to carry over at all.

 

I think it might be due to how it grabs all the textures that each maps use, but as skies aren't used in any map, they get left behind.

 

So, how do I go around adding a skies in that case?

Share this post


Link to post
7 hours ago, Wavy said:

I can't seem to get sky replacement textures working. I have a set of sky textures (RSKY1-3) and a modified TEXTURE1 lump due to the skies being longer. I made a WAD that has them and put them into the "wads/textures" folder but they don't seem to carry over at all.

 

I think it might be due to how it grabs all the textures that each maps use, but as skies aren't used in any map, they get left behind.

 

So, how do I go around adding a skies in that case?

It won't pick up new replacement skies to carry over if you don't have maps on those slots that use them. Or at least, it should pick them up.

 

If it's for Doom 2, they need to be named "SKY1" through "SKY3", like the original textures. If they aren't, they have to be referenced in a map in some way (such as on a sidedef).

 

2 hours ago, DarkIceCyclone said:

not sure what i'm doing wrong, but for some reason, it doesn't even want to load my wads

Without more information about how you are setting up your project, I cannot help you.

Share this post


Link to post
15 minutes ago, MTrop said:

It won't pick up new replacement skies to carry over if you don't have maps on those slots that use them. Or at least, it should pick them up.

 

If it's for Doom 2, they need to be named "SKY1" through "SKY3", like the original textures. If they aren't, they have to be referenced in a map in some way (such as on a sidedef).

 

Without more information about how you are setting up your project, I cannot help you.

chances are, i'm too stupid to use it. in other words, since i don't know how to use map info or hell, even slade, i also don't know how to use the program

Share this post


Link to post

@MTrop

 

I'm going to use this to manage my current project.  I want to know in your professional opinion what the best way is, or if DoomMake has any nice native way to package only one map WAD at a time.  I'd love to be able to conveniently distribute individual maps for testing, especially since atm my plan is to make maps in the MAP01 slot now and assign them final slots later, since, again, that makes testing easier.

 

Related: if I have MUS stored in individual map WADs, will the MUS lumps also be picked up and consolidated by DoomMake?  Because that will be an easier way for me to keep track of which music goes with each map as I go about ordering things.

Share this post


Link to post

Currently, there is no out-of-the-box way to do individual map packaging, however, it is not an insurmountable task. You may have to start with a project structure that would build the final product, and then make your own custom target or targets (and get creative with an additional merge script or two) for packaging an individual map. The scripts/doommake-lib.script contains some useful functions that can make that easier.

 

The default behavior for DoomMake is to only merge in just the map's lumps from each map, which means that it will ignore the music lumps) but you can change the WadMerge merge script scripts/merge-maps.txt to do anything you want.

 

Alternatively, you could leave the music in the music folder, but change how they get merged in and as certain specific lumps in the scripts/merge-assets.txt script.

 

You should be able to find the documentation for the WadMerge (and WadScript/RookScript) in the DoomTools package under the docs folder (you can find that by typing doomtools --docs at the prompt - it should open the documentation folder in most desktop environments).

 

Unfortunately, I could not account for every use case, but you still can change pretty much everything about how your project builds using an existing project setup. Hope this helps!

Share this post


Link to post

Thanks a ton @MTrop, I’ll look through the docs and the scripts and decide how I want to do this going forward. I’m still very much getting the hang of both DoomMake and directory management in SLADE but my old, one-wad project already feels so clumsy and unwieldy in comparison. Having it parse out the unused textures will be especially nice.

Share this post


Link to post

Sorry to doublepost, but I'm also having trouble getting a custom sky to merge into the wad.  I've actually set it as a wall texture in the map, but when I open the dist version of the map, it seems there's no sky there.  I'm not sure if it's something wrong with the custom texture wad I made, although when I test the map in UDB the sky shows up fine, and it's in the wad\textures folder, so I'm not sure what's happening there.

 

Oh yes also there are duplicates of all the patches, plus the patch and texture tables, being imported from the d1gfxd2 WAD file.  It's not breaking anything but I imagine it shouldn't be happening :p

Share this post


Link to post

@Stupid Bunny I really gotta see what you're doing with your project. Hopefully it's not some sort of bug.

 

Do you have a public repository or a ZIP file of your project structure? Feel free to DM me on DoomWorld.

Share this post


Link to post

It wouldn't be a proper release without a giant bug, eh?

 

IMPORTANT: If you created any project with both the maps and texturewads template (probably most of you) and you are getting duplicate texture/patch namespace merging in your release WAD, do the following:

 

In doommake.script, find the doRelease() function declaration ("check function doRelease() {") and look for the first line in that function that says: ",getMapTexWad()" and delete it.

 

Then, open up scripts/merge-release.txt and delete the last "mergewad" line before the "finish" line.

 

It should build properly after that (after a doommake clean).

 

A release will be made shortly to fix this.

 

EDIT: Release made: https://github.com/MTrop/DoomTools/releases/tag/2021.11.30B-RELEASE

 

Doing a doomtools --update will grab it.

 

If you made a project recently with those templates, you may have to do those fixes, or you can just recreate an empty project and copy over your full src folder to the fixed project. Sorry for the inconvenience!

Edited by MTrop
Added release.

Share this post


Link to post
  • 3 weeks later...
  • 3 weeks later...

Question: is it possible to integrate DoomMake into an existing project?

Share this post


Link to post

Answer: If you split it into pieces, and shove those pieces into where it wants those pieces.

 

You'll probably have to create a project scaffolding using DoomMake that will have the structure for what you need (assets, textures, etc.), and then you can export/move all of that stuff into the correct directories.

 

At the moment, I do not a have an out-of-the-box solution for migrating projects into its structure, but you can either change your project to a structure it wants or code it from scratch in its scripting language, which I wouldn't recommend if you are starting out.

Share this post


Link to post
On 11/27/2021 at 9:48 AM, Stupid Bunny said:

Related: if I have MUS stored in individual map WADs, will the MUS lumps also be picked up and consolidated by DoomMake?  Because that will be an easier way for me to keep track of which music goes with each map as I go about ordering things.

 

Off topic but... you should be using MIDI:

 

Quote

Support for standard MIDI files in vanilla Doom was added in version 1.5, which meant WAD authors no longer needed to convert MIDI files to MUS. However, since this was achieved by the game running MIDI2MUS internally when needed, authors looking for vanilla compatibility should make sure that the MIDI file they include can be successfully converted. Vanilla Heretic and Hexen, derived from version 1.2 of the Doom code, still require that music be converted to MUS format before inclusion in a WAD.

 

Share this post


Link to post

@magicsofa Oops, I guess I meant the music lumps--they are in MIDI format, it was bad wordage on my part to refer them as MUS (I wouldn't be bothered to go to the trouble of converting them anyway).  Thanks though!

 

I've been getting a ton of mileage out of DoomMake btw, so convenient for compartmentalizing everything and a little more ease of version control.  Everyone should be using DoomMake, indeed.

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...