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

MTrop

Members
  • Content count

    736
  • Joined

  • Last visited

Everything posted by MTrop

  1. MTrop

    The Official DoomTools Thread

    New Release: https://github.com/MTrop/DoomTools/releases/tag/2024.07.14-RELEASE DECOHack -------- ### Changed for 0.32.2 * `Fixed` CLEAR STATES in an Each Thing clause did not clear states. (Issue #115) * `Fixed` CLEAR STATES in an Each Weapon clause did not clear states.
  2. by Matt Tropiano Official Website Official Releases Github | Issues Latest Release Screenshots: Why, hello there! This thread is the official DoomWorld thread for DoomTools. All feedback and questions should be posted to this thread, as well as some tips and tricks for other users. If you've heard of DECOHack or DoomMake or WadMerge, you'll find them in this thing. Please follow this thread (or just pay attention to it) in order to be notified of when updates get released. This will be actively read and updated. To install, unzip/untar the release to its own directory, and then add that directory to the list of directories in your PATH environment variable. OR, optionally, if you use Windows: Use one of the provided Windows Installers, which will do that stuff automatically! You can even download a version that contains a minified Java Runtime Environment so that you don't need to install Java separately. Or, if you already have DoomTools installed, you can type this at the command prompt/terminal to update (you may need to elevate privileges on some systems): doomtools --update DoomTools requires Java 1.8 or better. Packages are available for CMD (Windows) or Bash (Cygwin, macOS, Linux, WSL). Where to get Java if you aren't using an installer (and also in case you never played Minecraft) in descending order of recommendation: Azul Systems: https://azul.com/downloads/ Adoptium: https://adoptium.net/temurin/releases/ Microsoft: https://microsoft.com/openjdk Oracle: https://java.com/en/download/ What is (or are) DoomTools? DoomTools is a set of command-line utilities (with GUI implementations) for building projects or for other things related to Doom Engine games. Lots of useful stuff. You can even use DoomTools (and specifically DoomMake) to build your projects via some kind of Continuous Integration solution. Be the nerd you want to see in the world! You said these tools need Java? Yup. DoomTools requires Java, and is built on the DoomStruct library, also made by the guy who made these tools! You can run them anywhere! But I hate Java! Horsefeathers. You know you installed Minecraft at some point! That thing was practically the only reason anybody installed a JVM in the past decade or two! But I hate Oracle! Yeah, me too. Luckily, other JDKs exist, like Azul Zulu (OpenJDK) or Adoptium Temurin (also OpenJDK) or OpenJDK Builds from Microsoft! Fully compatible with DoomTools - DoomTools was built and tested in OpenJDK. Or, you can use one of the installers that embed Java into DoomTools. Easy-peasy! What sorts of utilities are included? I'm glad you asked! There's a whole bunch of them! DoomTools — A program that just displays info about the toolset that you are using (or manage other things, in the future). DecoHack — A utility that uses a DECORATE-like language scheme for creating DeHackEd patches. DImgConv — A utility that bulk converts images to Doom formats. DMXConv — A utility that converts all sorts of sounds to DMX digital sounds using either the Java SPI or FFmpeg. DoomFetch — A utility that fetches WAD files from different sources. Can serve as a dependency manager. DoomMake — A project build utility that is agnostic to all operating systems (for the most part). WadMerge — A utility that performs Script-based WAD compilation and merging. WSwAnTbl — A utility that reads DEFSWANI/SWANTBLS data files and compiles it into ANIMATED and SWITCHES lumps. Can also export a set of ANIMATED and SWITCHES lumps to a definition file. WadTex — A utility that reads a DEUTEX-style texture file and imports it into a WAD file as TEXTUREx and PNAMES lumps. Can also export TEXTUREx/PNAMES in the same way. WTexScan — A utility that scans maps in a WAD and outputs a list of found textures and flats, suitable for import into the next program... WTEXport — A utility that exports textures from one WAD into another, including associated ANIMATED and SWITCHES textures. WadScript — A scripting system for doing practically anything with Doom stuff. Also includes Rookscript, a subset script. Other DoomTools and the accompanying materials are made available under the terms of the MIT License. Older Threads With Some Other Info DoomMake Thread (Up to date) Older DoomTools Thread (DMXConv, DImgConv, DECOHack, DoomMake) First DoomTools Thread (WadTex, WSWANTBL, WTexScan, WTEXport, WadMerge, WadScript) Don't delay! Use DoomTools today!
  3. MTrop

    The Official DoomTools Thread

    New Release: https://github.com/MTrop/DoomTools/releases/tag/2024.06.30-RELEASE DECOHack -------- ### Changed for 0.32.1 * `Fixed` Mass on Things can be negative, for real this time. (Issue #114)
  4. MTrop

    The Official DoomTools Thread

    New Release: https://github.com/MTrop/DoomTools/releases/tag/2024.06.13-RELEASE DECOHack -------- ### Changed for 0.32.0 * `Fixed` [GUI] Some autocomplete docs fixes/changes. * `Added` Added more valid string mnemonics to Boom patches (notably, Woof/ZDoom obituaries). DoomMake -------- ### Changed for 0.26.0 * `Added` DoomMake will check to see if it is already embedded in a project if `--embed` is used. * `Added` Code in base projects for specifying a "library" IWAD file for CI builds. * `Changed` New projects that convert assets and textures will build them into the project build directory, and merged from there. * `Changed` Fixed documentation/comments in the created build scripts. WadMerge -------- ### Changed for 1.11.0 * `Changed` MERGETEXTUREDIR now works on a "P" namespace if it exists in the target buffer.
  5. MTrop

    Runaway script 3 terminated

    Remove the semicolon at the end of your "while" line - you are creating a loop without a delay that will make it execute forever if not for the "runaway script" detection.
  6. MTrop

    The Official DoomTools Thread

    New Release: https://github.com/MTrop/DoomTools/releases/tag/2024.05.20-RELEASE The update to DoomStruct fixes some incongruities with Doom Sector reading/writing. Changes ------- - **2024-05-19** Updated DoomStruct to `2.15.8`. [Changes here.](https://github.com/MTrop/DoomStruct/releases/tag/2.15.8-RELEASE) DECOHack -------- ### Changed for 0.31.2 * `Added` `TRANSLATION1` as a valid bit flag for Things. DoomMake -------- ### Changed for 0.25.1 * `Fixed` [GUI-Studio] Fixed a potential NPE on the file watch service. * `Fixed` [GUI-Studio] Fix WAD detection on opened files. * `Fixed` [GUI-Studio] Studio will no longer try to open binary files as text.
  7. MTrop

    The Official DoomTools Thread

    New Release: https://github.com/MTrop/DoomTools/releases/tag/2024.03.13-RELEASE EDIT: I should clarify that this fixes some issues with certain entry names in existing WADs. Changes ------- - **2024-03-12** Updated DoomStruct to `2.15.6`. [Changes here.](https://github.com/MTrop/DoomStruct/releases/tag/2.15.6-RELEASE)
  8. MTrop

    The Official DoomTools Thread

    New Release: https://github.com/MTrop/DoomTools/releases/tag/2024.02.27-RELEASE DECOHack -------- ### Changed for 0.31.1 * `Fixed` The Soulsphere, Megasphere, Blur Sphere, and Invulnerability didn't have their `TRANSLUCENT` flag set. (Issue #112)
  9. MTrop

    The Official DoomTools Thread

    New Release: https://github.com/MTrop/DoomTools/releases/tag/2024.02.20-RELEASE Changes ------- - **2024-02-19** Updated DoomStruct to `2.15.5`. [Changes here.](https://github.com/MTrop/DoomStruct/releases/tag/2.15.5-RELEASE) DImgConv -------- ### Changed for 1.3.2 * `Changed` Patches are not split at the first 128 pixels anymore. I decided that patches that are not rendered fullscreen don't get clipped at 128 in vanilla, so leaving out the clipping code will suffice since those that make vanilla texture patches know to clip them at 128, anyway. The graphics not clipped at 128 still get displayed properly in all ports in fullscreen modes. The code before the tallpatch fix never clipped patches for vanilla, so I think we're still fine.
  10. MTrop

    The Official DoomTools Thread

    All releases 2023.11.14 and earlier need to update manually, as that fixes the updater (Github made a stricter change to their API). Not sure what it does to Heretic skies. I'll have to take a closer look.
  11. MTrop

    The Official DoomTools Thread

    New Release: https://github.com/MTrop/DoomTools/releases/tag/2024.02.14-RELEASE Changes ------- - **2024-02-13** Updated DoomStruct to `2.15.4`. [Changes here.](https://github.com/MTrop/DoomStruct/releases/tag/2.15.4-RELEASE) DImgConv -------- ### Changed for 1.3.1 * `Fixed` Tall patches not being exported/converted correctly.
  12. MTrop

    The Official DoomTools Thread

    The JAR contains no manifest because there's several mains in the package: net.mtrop.doom.tools.DecoHackMain net.mtrop.doom.tools.DMXConvertMain net.mtrop.doom.tools.DoomFetchMain net.mtrop.doom.tools.DoomImageConvertMain net.mtrop.doom.tools.DoomMakeMain net.mtrop.doom.tools.DoomToolsMain net.mtrop.doom.tools.WadMergeMain net.mtrop.doom.tools.WadScriptMain net.mtrop.doom.tools.WADTexMain net.mtrop.doom.tools.WSwAnTablesMain net.mtrop.doom.tools.WTExportMain net.mtrop.doom.tools.WTexScanMain net.mtrop.doom.tools.gui.DoomToolsGUIMain Each of those correspond to an application, and the shell scripts each point to one of those for execution. They're intended to be command-line apps, but maybe DoomToolsGUIMain should be the default? Hmm...
  13. MTrop

    The Official DoomTools Thread

    The only thing I can think of is that DoomTools GUI opens a local port, 54666, (bound to localhost, so it sits behind the firewall) in order to detect if it is still open so that it can only have one instance of itself running. What happens when you try to doomtools --gui at the shell again? If you get: DoomTools is already running. ...then that port might be held open by some other process or something in your OS. Terminating DoomTools (and the JVM) should close that port, but if it doesn't, I'm not sure what could be going on. EDIT: The code in question is this, in DoomToolsGUIMain.java: /** * @return true if already running, false if not. */ public static boolean isAlreadyRunning() { try { instanceSocket = new ServerSocket(INSTANCE_SOCKET_PORT, 50, InetAddress.getByName(null)); return false; } catch (IOException e) { return true; } } So, this means Java will try to open port 54666 (INSTANCE_SOCKET_PORT) with some arbitrary connection backlog bound to localhost (InetAddress.getByName(null)), so that it doesn't try to open the port through the firewall. If it succeeds, DoomTools GUI is not running. If an exception happens (because the port is already open), it thinks DoomTools is already running. I picked an arbitrary port to test for. If anything else on your system opens this port, it will create a false positive. As far as I know, this is the most robust way to detect a single instance of a Java program running across all platforms, but I could be wrong about that. Maybe exclusive file locks could be better? Are those guaranteed to be relinquished on termination?
  14. MTrop

    The Official DoomTools Thread

    New Release: https://github.com/MTrop/DoomTools/releases/tag/2024.01.08-RELEASE You will need to update your shell scripts by typing doomtools --update-shell to take advantage of the new memory usage parameters. Changes ------- - **2024-01-05** Added an uncaught exception modal. - **2023-12-31** Increased maximum memory allocation for shell scripts to 4 GB. WTEXport -------- ### Changed for 1.5.3 * `Fixed` [GUI] Added message for requiring an output WAD file.
  15. MTrop

    The Official DoomTools Thread

    New Release: https://github.com/MTrop/DoomTools/releases/tag/2023.12.26-RELEASE DoomMake -------- ### Changed for 0.25.0 * `Changed` Added Doom Builder autosave ignores to Git and Mercurial ignore files.
  16. MTrop

    <G> - what does it mean?

    "Grin." The person is grinning when they say it. Not sure about its history, though.
  17. MTrop

    What frontend loader do you prefer?

    The one I made: https://github.com/MTrop/Doomy
  18. MTrop

    2023 Cacowards

    Congrats to all the winners! 30 more years!
  19. MTrop

    The Official DoomTools Thread

    I made a "super-chaingun" for a yet-unreleased mod that uses A_FireCGun. You'll have to make use of explicit state lines or state fill lines in order to set states on specific or from specific spots in the state table: // --------------------------------------------------------------------------- // Super Chaingun // Faster chaingun. // --------------------------------------------------------------------------- weapon WP_CHAINGUN free states state free S_DSNR1 to S_DSNR2 // unused state free S_STALAG // unused state free S_CHAINFLASH2 // not referenced in weapon. Must free explicitly. // The chaingun is the worst to engineer, thanks to A_FireCGun. // S_CHAIN1 is important for deciding the flash offset. state fill S_CHAIN { CHGG A 1 A_WeaponReady wait } state fill S_CHAIN1 { CHGG AB 3 A_FireCGun goto S_CHAIN3 } state fill S_CHAINFLASH1 { CHGF A 4 Bright A_Light1 goto S_LIGHTDONE } state fill S_CHAINFLASH2 { CHGF B 4 Bright A_Light1 goto S_LIGHTDONE } state fill S_CHAIN3 { CHGG A 3 A_ReFire CHGG B 3 A_LoadShotgun2 // Spin down sound CHGG A 3 CHGG B 4 CHGG A 5 CHGG B 7 goto S_CHAIN } weapon WP_CHAINGUN "Super Chaingun" { ammotype AM_CLIP clear states state ready S_CHAIN state fire S_CHAIN1 state flash S_CHAINFLASH1 states { select: CHGG A 1 A_Raise2 loop deselect: CHGG A 1 A_Lower2 loop } } You may not need to free those states beforehand - that was just because I needed some additional states for Vanilla. Also, A_Raise2 and A_Lower2 are just #defined calls to A_Raise and A_Lower twice, respectively. They are not standard calls.
  20. HEY, EVERYBODY! Head over to the Official DoomTools Thread in Doom Editing if you want up-to-date release notes and notifications. ALL new updates will be there, so FOLLOW that thread if you want to be notified about updates! There's an INSTALLER now! No more PATH putzing! It will even embed a (smaller) JRE if you don't have Java! STILL IMPORTANT: You'll need Java 8 or higher installed to run these! NOTE: If you already have DoomTools installed (and on your PATH), you can just type doomtools --update at the command line and it will update in-place! Main Website Github Repository Latest Releases (Windows CMD and BASH) The First Thread Installation (Same as Last Time) Unzip/untar the release to its own directory, and then add that directory to the list of directories in your PATH environment variable. You again? What's this about? Hey, everybody, I'm MTrop. You may remember me from enjoyable WADs such as this 22-year-old pile of junk that people somehow still like and this short romp that's pretty okay I guess. But did you know I'm a programmer? ...you did? Well that's good, because I've got more programs for ya! As with the previous thread, this is a set of utilities written in Java and built on this fantastic library that I also wrote (DW thread here). Since I went over a bunch of the utilities in the last thread, I'm only gonna go over the new ones here, and let me tell you: you're probably gonna want to use them. DMXConv SLADE3 does an okay job at converting sounds from WAV to Doom's DMX format, but you are like me and chuck your sounds in a project tree and want to convert all of them at once for importing later, this'll do it! Works best if you have FFmpeg on your PATH or somewhere on your computer - then you can convert practically EVERY SOUND FORMAT THAT EVER EXISTED to DMX! If not, it'll still use the existing Java SPI framework for conversion, if you want. dmxconv sounds/*.wav -o ./converted/sounds Typing `--help` will give you more options and explanations. Keep in mind that this is a one-way utility - it does not convert from DMX back to other formats. DECOHack I think you're really gonna love this one. Are you ready? Because I don't think ya are! Have you ever wanted to create some kind of insane mod for Vanilla Doom (and other classic Dooms) but wished that there was a better programmatic way to write weapon, ammo, sound, string, par time, and thing definitions with a DECORATE-like language? Introducing DECOHack, the thing that does exactly that! DECOHack takes a file (or series of files) written in a DECORATE-ish language and turns it into a DEH/BEX file that can be loaded into your favorite source port, or patched into your favorite executable via DeHackEd! Supports all patch schemes up to Extended (aka DEHEXTRA). decohack code.dh --output dehacked.deh Hate backpacks? Turn them into BFGs! #include "classpath:decohack/doom19.dh" #include "classpath:decohack/constants/friendly_things.dh" // copy BFG pickup into backpack thing MTF_BACKPACK : thing MTF_BFG { //keep ednum, though ednum 8 } Make an Imp with a worse attack! #include "classpath:decohack/doom19.dh" #include "classpath:decohack/constants/friendly_things.dh" thing MTF_IMP free states thing MTF_IMP "Worse Imp" { health 200 speed 12 clear states States { Spawn: TROO AB 10 A_Look Loop See: TROO AABBCCDD 3 A_Chase Loop Melee: Missile: TROO EF 8 A_FaceTarget TROO G 6 A_BruisAttack Goto See Pain: TROO H 2 TROO H 2 A_Pain Goto See Death: TROO I 8 TROO J 8 A_Scream TROO K 6 TROO L 6 A_Fall TROO M -1 Stop XDeath: TROO N 5 TROO O 5 A_XScream TROO P 5 TROO Q 5 A_Fall TROO RST 5 TROO U -1 Stop Raise: TROO ML 8 TROO KJI 6 Goto See } } The sky's the limit (within reason, as it is still limited to Doom engine quirks and limitations)! If you're worried about how many states you have left (in total or action-pointer allocated), you can run DECOHack with the `--budget` switch. Full help available via the `--help-full` switch. You can do a lot! It's all documented, even the worst of Doom's hardcodings! DoomMake You've stuck with me long enough - I think you're finally ready for the big guns. Have you ever wanted to start a new project, but didn't want to organize everything, and still have it produce WADs that you can maintain in a code versioning system like Git, compile together in an automated fashion, or keep providing builds via an ultra-nerdy thing like Continuous Integration? Well, in case that's you, you're in luck! DoomMake is here to help you build that giant project with all sorts of bells and whistles with a single command, and produce something compiled together and playable (and with some setups, a reduced texture set)! It leverages WadScript and turns it into a do-anything-you-want build tool that isn't tied to one operating system or environment. You can even call all the rest of the tools in the DoomTools toolset! You can start a new project with maps and new textures sourced from WADs: doommake newproj --new-project maps-texturewads Or even a giant vanilla mod from scratch with all sorts of things, and make it Git-repository-ready: doommake newproj --new-project maps-assets-textures decohack run git And then when you want to build your project in it's current state, you just switch to its project directory, and... doommake It's that easy! Want to feel its power? Try cloning and building this project for starters: https://github.com/MTrop/doommake-example As always, chuck some issues my way if stuff doesn't work, or if you've got some feature requests. Follow the GitHub repository to be notified of updates and releases. Happy Dooming, y'all! Make some cool stuff!
  21. MTrop

    The Official DoomTools Thread

    New Release: https://github.com/MTrop/DoomTools/releases/tag/2023.12.07-RELEASE DoomMake -------- ### Changed for 0.24.0 * `Added` COPYWITHREPLACE function added to DoomMake.
  22. MTrop

    The Official DoomTools Thread

    Not currently. Maybe an enhancement for the future?
  23. MTrop

    The Official DoomTools Thread

    New Release: https://github.com/MTrop/DoomTools/releases/tag/20203.11.28-RELEASE DoomMake -------- ### Changed for 0.23.1 * `Fixed` Corrected an IOError message for reopening a zip file. * `Fixed` Potential NPE in ZIPDIR function if the source directory did not exist. * `Fixed` Problems when appending to an existing Zip in ZIPFILES/ZIPDIR.
  24. MTrop

    The Official DoomTools Thread

    A small oversight I had when running your project from DoomTools was that the first argument after doommake run was going to be a specific port name to use when fetching the correct properties from doommake.properties. After that first argument, though, you can pass as many arguments to the executable as you want. For example, the command line: doommake run prboom -complevel 9 ...would get the executable path from the property doommake.run.exe.prboom and then pass -complevel 9 to it after the rest of the arguments to run the project. You'll just have to set up an additional set of properties to make it work.
  25. MTrop

    The Official DoomTools Thread

    I think there has to be an argument after "-i", which is the directory. Line 3 works because the "null" adds an argument after "-i", as expected. Your specified directory may not be included, after all.
×