Doom monster
Register | User Profile | Member List | F.A.Q | Privacy Policy | New Blog | Search Forums | Forums Home
Doomworld Forums : Powered by vBulletin version 2.2.5 Doomworld Forums > Classic Doom > Doom General > I Will Program Small Doom Utilities For You
Pages (6): [1] 2 3 4 » ... Last »  
Author
All times are GMT. The time now is 01:20. Post New Thread    Post A Reply
MTrop
Member


Posts: 426
Registered: 12-05


'Sup, DoomWorld.

I wanna write some programs for y'all.

EDIT 2014-07-08: ...but not at the moment. Kinda busy with other things. Feel free to alert me about issues in existing programs, though!

UPDATE 2014-06-21: These utilities are now on Github!
https://github.com/MTrop/DoomUtils

Why do you want to do this?

During an interview that I did for Tango and st.alfonzo, Tango mentioned (or hinted at) that there may be some demand for small utilities that do helpful Doom-related things (mostly simple, often-overlooked things). I could also use the mental exercise, so I am offering up my services to program a bunch of utilities that the Doom community could need. It would also provide me with an opportunity to be more involved. Hopefully, I'm not biting off more than I can chew, here.

Define "small."

As an example, I wrote something for Xaser for texture replacement for his Hacx 2.0 project a while back. It took a list of textures and flats and a map and replaced each texture with the new names. Stuff like that. Batch replacers, translators, convertors (both map and graphic), inspectors, simple asset browsers, or mergers (of WAD contents/map information).

Stuff outside of the scope of this exercise would be complex front-end launchers, random content generators, node builders, fully-featured editors with provided interface... you know - big things.

What will the programs be written in?

The programs will be written in Java, and will be distributed as Java (JAR only), and Win32 EXE requiring Java (I tried to make it standalone with Excelsior JET - turns out that you need even more than just the executable, so that's not feasible). I could also write some J2EE-related stuff, if somebody has an idea for something quick that I could write for the web (of course, this would not be a downloadable program).

Will you release the source code for them?

Sure, if possible (and requested). They'll probably use a lot of common code, so I'd have to take some extra time to organize it so that I can release it painlessly. The programs should be compile-able under Java 7, and I'll list the third-party libraries that each program will need, if any.

What are your credentials?

I do this junk for a living, and have been doing some Doom-related programming recently, notably this, this, and this, though that last one is PHP and not Java and technically not Doom-centric.

How do I request something?

Tell me what you would want made, and if enough people want it, I'll get started. Be sure to include:

  • Is it Console or GUI-driven (command-line or windows and junk)?
  • What would it do?
  • How would this be useful to you or others?


As always, I will set the priority in which stuff will be completed, and if it can be feasibly completed.

Don't be shy! If you are unsure about the scope of a project, just ask!

Last edited by MTrop on 07-08-14 at 19:22

Old Post 02-25-13 19:02 #
MTrop is offline Profile || Blog || PM || Email || Homepage || Search || Add Buddy IP || Edit || Quote
MTrop
Member


Posts: 426
Registered: 12-05


This post will be for programs as they are completed or made available.

Stuff on the Plate (To Do)

  • MapDump - Dumps Doom Maps to images.
  • IWADPWAD - Detects replaced IWAD resources in PWADs.

Stuff in Progress

  • MD2Tool GUI - GUI for operating Doomsday's MD2Tool.

Download programs below.

Source downloads contain the source code for the projects, and some documentation. It should be compiled from the "src" directory, as the rest are packages. They require other packages to compile, though - read the documentation!
Standalone downloads are JARs with all of the necessary classes bundled into them. This requires Java 1.7, and is your only alternative if you don't run Windows.
Win32-L4J downloads are standalone EXE files made with Launch4J, so they can be run like any old program, but it STILL requires Java to run. It will send you to a download page if you don't have Java installed.

Beta Programs for Testing (only the brave need apply)

MapSwap v0.9 - Switch map-specific entries to another map slot.
Source - Standalone JAR - Win32 L4J
TEXtract v0.9.7 - Extracts textures from texture packs. Detects animated texture names (both built-in and from ANIMATED/SWITCHES).
Source - Standalone JAR - Win32 L4J
DoomSND v0.9 - WAV to Doom Sound Converter.
Source - Standalone JAR - Win32 L4J
WADSort v0.9 - WAD entry sorter.
Source - Standalone JAR - Win32 L4J

COMPLETED Programs for Public Consumption

MyIdGames v1.0.0 - Doom-launching frontend that also taps into the IdGames Archive API for addt'l functionality.
Win32 L4J
DoomMerge v1.0 - Merges WADs together in a scripted manner.
Source - Standalone JAR - Win32 L4J
DemoSpy v1.0 - Detect/view DEMO lump characteristics.
Source - Standalone JAR - Win32 L4J
ThingSpy v1.1.1 - Output or search for thing editor numbers by map lump.
Source - Standalone JAR - Win32 L4J
TexSpy v1.0.1 - Scans for used texture names in maps (added this myself).
Source - Standalone JAR - Win32 L4J
MapCount v1.0 - Map entry counter (for ZIPS, PK3s, and WADs).
Source - Standalone JAR - Win32 L4J

Last edited by MTrop on 07-08-14 at 04:05

Old Post 02-25-13 19:03 #
MTrop is offline Profile || Blog || PM || Email || Homepage || Search || Add Buddy IP || Edit || Quote
Memfis
Forum Spammer


Posts: 5893
Registered: 04-07


A few requests, tell me if something is not clear. Maybe some of this stuff already exists.

1. Utility that removes unused textures and flats from the wad. Command line would be enough. I think it's pretty obvious how it would be useful.

2. Convenient map swapper. Suppose you have a wad with two maps and music lumps for them. When you open your wad in this program, you see something like this. Then you can click on MAP01, drag-and-drop it below MAP02 and that will swap their slots and, at the same time, rename the corresponding music lumps as well. (so D_RUNNIN will become D_STALKS and vice versa) That would need a GUI I guess and it would save some time for a lot of people.
edit: oh, and it could rename the CWILV graphics too.

3. SR50 checker. Looks at a demo and determines whether SR50 was used by the player. Would be useful for speedrunners.

4. Recently I added many textures and flats to my wad and then noticed that I accidentally replaced some of the iwad graphics. I'd like to have an utility that would tell me the names of these graphics.

5. WAV to Doom Format converter? I know that it's quite easy to do this in sound editing programs like Audacity but maybe you could write an utility that would do this in just one click?

Last edited by Memfis on 02-25-13 at 20:48

Old Post 02-25-13 20:24 #
Memfis is offline Profile || Blog || PM || Email || Search || Add Buddy IP || Edit || Quote
esselfortium
A Major Doomworld Concern


Posts: 6666
Registered: 01-02


Memfis: Slade has functionality for removing unused textures/patches/flats from a wad :)


Also, thanks MTrop for providing this service to the community!

Old Post 02-25-13 20:30 #
esselfortium is offline Profile || Blog || PM || Email || Homepage || Search || Add Buddy IP || Edit || Quote
Memfis
Forum Spammer


Posts: 5893
Registered: 04-07



esselfortium said:
Memfis: Slade has functionality for removing unused textures/patches/flats from a wad :)

Well, I tried it but it didn't do anything to my wad and nobody explained why. (;ω;`)

Last edited by Memfis on 02-25-13 at 20:48

Old Post 02-25-13 20:39 #
Memfis is offline Profile || Blog || PM || Email || Search || Add Buddy IP || Edit || Quote
Enjay
ASK ME ABOUT FOOTBALL / STEAM / DEAD CELEBRITIES / THE BLAIR WITCH PROJECT


Posts: 6393
Registered: 12-00


On texture stripping routines, to be as functional as possible, they need to be aware of animations and switches (ie situations where only one texture is on a wall in a WAD file but in game the wall will have a number of textures applied in sequence). In addition, scripting with texture changes would have to be considered. I don't suppose a tool could do much about that so it would be down to the map author to keep track of textures changed in that way.

Old Post 02-25-13 21:24 #
Enjay is offline Profile || Blog || PM || Email || Homepage || Search || Add Buddy IP || Edit || Quote
Nomad
Not dumb enough to get a custom title


Posts: 2763
Registered: 04-04


I have the same request I've had for years: a utility that copies the used textures from a resource wad to the project wad so you don't have to use the resource wad anymore.

Old Post 02-25-13 21:24 #
Nomad is offline Profile || Blog || PM || Homepage || Search || Add Buddy IP || Edit || Quote
Maes
I like big butts!


Posts: 12874
Registered: 07-06


Just on a related note here, some time ago I received mail from some bloke that wanted to do a launcher/frontend for Mocha Doom, also in Java (which made more sense, considering that Mocha Doom itself is written in Java). Haven't heard from the guy since last Xmas, though.

Old Post 02-25-13 22:20 #
Maes is offline Profile || Blog || PM || Homepage || Search || Add Buddy IP || Edit || Quote
Tango
Senior Member


Posts: 1758
Registered: 04-06


how about a program that flips maps upside down, a-la Symphony of the Night? :p reverses floor and ceiling heights, etc. if you could even make it automatically generate upside-down versions of the textures too i'd give you a million dollars

Old Post 02-25-13 23:26 #
Tango is offline Profile || Blog || PM || Email || Homepage || Search || Add Buddy IP || Edit || Quote
printz
CRAZY DUMB ZEALOT


Posts: 8910
Registered: 06-06


Simple level tweaker like TeamTNT's CLED. What that does is change one or more map object properties (coordinates, type, cross-references etc.) without having to open an interactive editor. CLED is fine, but is limited to Doom 2 and I don't know if its source code is available (even at TeamTNT's site). It also most likely requires DOSBox these days (it's a command-line tool).

Why would it be useful? Well, opening a map in a full editor may result in side effects. Doom Builder for example always rebuilds nodes, which very likely breaks demo compatibility with past versions. It also allows batch processing if it's command line.

__________________
Automatic Wolfenstein - Version 1.0 - also on Android

Old Post 02-25-13 23:28 #
printz is offline Profile || Blog || PM || Homepage || Search || Add Buddy IP || Edit || Quote
Ribbiks
Senior Member


Posts: 1320
Registered: 02-11



Tango said:
how about a program that flips maps upside down, a-la Symphony of the Night? :p reverses floor and ceiling heights, etc. if you could even make it automatically generate upside-down versions of the textures too i'd give you a million dollars


hah, this would be hilarious. I think I'll take a crack at making this one.

Old Post 02-25-13 23:42 #
Ribbiks is online now Profile || Blog || PM || Search || Add Buddy IP || Edit || Quote
MTrop
Member


Posts: 426
Registered: 12-05



Memfis said:
Utility that removes unused textures and flats from the wad. Command line would be enough. I think it's pretty obvious how it would be useful.



You mean from what is already added in the WAD? That may be doable, but adding/extracting from another WAD would be better (build map first with resource WAD, pull textures from resource WAD when done).


Memfis said:
Convenient map swapper. Suppose you have a wad with two maps and music lumps for them. When you open your wad in this program, you see something like this. Then you can click on MAP01, drag-and-drop it below MAP02 and that will swap their slots and, at the same time, rename the corresponding music lumps as well. (so D_RUNNIN will become D_STALKS and vice versa) That would need a GUI I guess and it would save some time for a lot of people.
edit: oh, and it could rename the CWILV graphics too.



Definitely doable, but I'm thinking of a better interface. Do you mind if lump names are renamed, or would you want the actual physical locations of the data inside the wad to change as well (former method is easier and faster). Drag/drop may not be the best method for control though, especially after the move ("is that the original MAP01, or the new one?"). I'll make it work somehow, don't worry. :)


Memfis said:
SR50 checker. Looks at a demo and determines whether SR50 was used by the player. Would be useful for speedrunners.



Also very doable. This is just checking if certain keys are pressed during the DEMO, right? I'll have to add demo reading to the library first before this gets made, though.


Memfis said:
Recently I added many textures and flats to my wad and then noticed that I accidentally replaced some of the iwad graphics. I'd like to have an utility that would tell me the names of these graphics.



Very doable.


Memfis said:
WAV to Doom Format converter? I know that it's quite easy to do this in sound editing programs like Audacity but maybe you could write an utility that would do this in just one click?



Also doable, but I'm going to take some liberties with this in order to support more than WAV, though (and at no additional cost!). I'll also have to add Doom Audio support to the library, which will take time.


Nomad said:
I have the same request I've had for years: a utility that copies the used textures from a resource wad to the project wad so you don't have to use the resource wad anymore.


Very doable. I need something like this, myself.


Tango said:
how about a program that flips maps upside down, a-la Symphony of the Night? :p reverses floor and ceiling heights, etc. if you could even make it automatically generate upside-down versions of the textures too i'd give you a million dollars


Don't tempt me - I just might do this (but not before a bunch of other things). :P


printz said:
Simple level tweaker like TeamTNT's CLED.


Also doable. If no node rebuilds are your goal though, it will limit what you can change (but not by much).

Old Post 02-26-13 00:33 #
MTrop is offline Profile || Blog || PM || Email || Homepage || Search || Add Buddy IP || Edit || Quote
Memfis
Forum Spammer


Posts: 5893
Registered: 04-07



MTrop said:
or would you want the actual physical locations of the data inside the wad to change as well

Sounds pointless to me, go with easier method. :)

Old Post 02-26-13 00:58 #
Memfis is offline Profile || Blog || PM || Email || Search || Add Buddy IP || Edit || Quote
Gez
Why don't I have a custom title by now?!


Posts: 11555
Registered: 07-07



MTrop said:
or would you want the actual physical locations of the data inside the wad to change as well (former method is easier and faster).

You don't have to change the physical location of the data, you can swap merely the positions in the WAD's directory, while keeping each lump's offset the same. You'd have to rewrite the directory anyway to rename them.

Old Post 02-26-13 00:59 #
Gez is offline Profile || Blog || PM || Search || Add Buddy IP || Edit || Quote
MTrop
Member


Posts: 426
Registered: 12-05



Gez said:

You don't have to change the physical location of the data, you can swap merely the positions in the WAD's directory, while keeping each lump's offset the same. You'd have to rewrite the directory anyway to rename them.



Whoops - sorry, I meant the physical locations of the entries.

My bad.

Moving the content would be ridiculous. :P

Old Post 02-26-13 01:18 #
MTrop is offline Profile || Blog || PM || Email || Homepage || Search || Add Buddy IP || Edit || Quote
Gez
Why don't I have a custom title by now?!


Posts: 11555
Registered: 07-07


Anyway, little utility that could be useful: lump sorter.

Take a wad, puts the miscellaneous/unknown lumps first (MAPINFO, WADINFO, PLAYPAL, etc.), then the maps (sorted cleanly by ascending order, so that MAP01 is before MAP02 and E2M9 is before E3M1), then the recognized lumps (sounds, then music, then graphics, then stuff in namespaces beginning with S_START/S_END and ending with F_START/F_END), using alphabetical sorting in these subcategories.

Old Post 02-26-13 01:38 #
Gez is offline Profile || Blog || PM || Search || Add Buddy IP || Edit || Quote
Tango
Senior Member


Posts: 1758
Registered: 04-06



MTrop said:

Don't tempt me - I just might do this (but not before a bunch of other things). :P



lawl. well when you get to it let me know, because at that point i'll have no choice but to make sotn doom!!!!!1111


Gez said:
Anyway, little utility that could be useful: lump sorter.

Take a wad, puts the miscellaneous/unknown lumps first (MAPINFO, WADINFO, PLAYPAL, etc.), then the maps (sorted cleanly by ascending order, so that MAP01 is before MAP02 and E2M9 is before E3M1), then the recognized lumps (sounds, then music, then graphics, then stuff in namespaces beginning with S_START/S_END and ending with F_START/F_END), using alphabetical sorting in these subcategories.



or even a zdoom-friendly variant that sorts all these things into appropriate folders within the wad/pk3

Old Post 02-26-13 03:03 #
Tango is offline Profile || Blog || PM || Email || Homepage || Search || Add Buddy IP || Edit || Quote
Enjay
ASK ME ABOUT FOOTBALL / STEAM / DEAD CELEBRITIES / THE BLAIR WITCH PROJECT


Posts: 6393
Registered: 12-00


Here's something that I would like - a utility that can look inside a multi-map WAD (Doom, Hexen and UDMF) and dump to a text file all the thing edit numbers used in the WAD on a level by level basis. Then I could load the text file into a text editor and search for specific numbers to find out which maps had a particular thing on it.

eg

code:
MAP01 1 2 3 4 11 82 2001 2002 2003 2004 2005 2006 2007 2008 2011 2012 2014 2015 2018 2046 3001 3004 MAP02 1 2 3 4 5 9 11 13 14 17 82 2001 etc etc






Or kind of the reverse: a util that I could use to ask a WAD about a specific thing edit number and the util would spit back a list of maps that use the edit number in question.

If you could do either of those it would be much appreciated.

Old Post 02-26-13 09:29 #
Enjay is offline Profile || Blog || PM || Email || Homepage || Search || Add Buddy IP || Edit || Quote
ASD
Member


Posts: 258
Registered: 03-09


Doom to Duke3D or Blood -converter, with the correct scale. There are wad2map, dmdkconv and b2blud which do fine but the only problem is the levels being significantly smaller. Even the skilled dukers and bloodites haven't figured it out but I think it's quite simple: make a comparsion of the 3 characters (Doomguy is the shortest, Caleb is the tallest) by measuring their height and width by pixels and make a multiplier which expands the recreated level by the character's size.

Old Post 02-26-13 14:14 #
ASD is offline Profile || Blog || PM || Email || Search || Add Buddy IP || Edit || Quote
MTrop
Member


Posts: 426
Registered: 12-05



Enjay said:
Here's something that I would like - a utility that can look inside a multi-map WAD (Doom, Hexen and UDMF) and dump to a text file all the thing edit numbers used in the WAD on a level by level basis. Then I could load the text file into a text editor and search for specific numbers to find out which maps had a particular thing on it.


Very doable. I'll put it on the list.


ASD said:
Doom to Duke3D or Blood -converter, with the correct scale. There are wad2map, dmdkconv and b2blud which do fine but the only problem is the levels being significantly smaller. Even the skilled dukers and bloodites haven't figured it out but I think it's quite simple: make a comparsion of the 3 characters (Doomguy is the shortest, Caleb is the tallest) by measuring their height and width by pixels and make a multiplier which expands the recreated level by the character's size.


Unless it is for adjusting Doom map data and Doom map data only, this is not going to be done. I lack the knowledge and resources for doing anything with Build Engine map data.

Old Post 02-26-13 16:14 #
MTrop is offline Profile || Blog || PM || Email || Homepage || Search || Add Buddy IP || Edit || Quote
Marrub
Warming Up


Posts: 10
Registered: 02-13


What would be nice is a console-based wad unpacker/merger (merging would merge DECORATEs/KEYCONFs/SNDINFOs etc. as well as rename files if needed [so if there's a RIFLA1 it would rename to RIFMA1, something like that]).
It'd be useful because sometimes you need to unpack a whole WAD so that you can reuse certain resources, and merging wads would allow you to have all your resources in wads that you can just merge to add them. There's more uses than that, but those are just some examples.

Old Post 02-28-13 06:45 #
Marrub is offline Profile || Blog || PM || Search || Add Buddy IP || Edit || Quote
MTrop
Member


Posts: 426
Registered: 12-05



Marrub said:
What would be nice is a console-based wad unpacker/merger (merging would merge DECORATEs/KEYCONFs/SNDINFOs etc. as well as rename files if needed [so if there's a RIFLA1 it would rename to RIFMA1, something like that]).
It'd be useful because sometimes you need to unpack a whole WAD so that you can reuse certain resources, and merging wads would allow you to have all your resources in wads that you can just merge to add them. There's more uses than that, but those are just some examples.



A merger/unpacker is very doable, but merging special data in a data-aware way may be more trouble than it's worth, especially if duplicates exist. Concatenating data together may not always be preferable in some circumstances.

I actually have a merger written somewhere, I should probably release it. I used it to put together a bunch of my WADs.

Old Post 02-28-13 08:00 #
MTrop is offline Profile || Blog || PM || Email || Homepage || Search || Add Buddy IP || Edit || Quote
Maes
I like big butts!


Posts: 12874
Registered: 07-06


Just a question here, about the BlackRook WAD management libraries: I recall that one of the reasons I decided against using them in Mocha Doom in 2011, was that they lacked (at the time) the functionality of marshalling/unmarhalling Doom data into single objects/structs, handling the automatic instantiation and reading of array-like structures (e.g. read a SSECTORS lump into an array of SSECTORS objects, and also auto-create and auto-instantiate it) or at least that there were certain limitations for operations such as searching single lumps by name/number, and/or that one had to read all lumps in a WAD in one go (?) and not on a single-lump, per-need basis, which meant that they couldn't be used with a source port using Doom's interspersed lump-reading style, and certain critical parts like the level-loader would have to be rewritten, rather than following vanilla code closely). In other words, their main problem (for me) was that they would impose a different programming model than what I had in mind, which would require far too many changes to the adapted source code.

Have these points changed in the latest version, as it seems that some or all of those operations are now possible (from a superficial browsing of the current API, at least)?

Old Post 02-28-13 08:51 #
Maes is offline Profile || Blog || PM || Homepage || Search || Add Buddy IP || Edit || Quote
Marrub
Warming Up


Posts: 10
Registered: 02-13



MTrop said:
A merger/unpacker is very doable, but merging special data in a data-aware way may be more trouble than it's worth, especially if duplicates exist. Concatenating data together may not always be preferable in some circumstances.

Maybe make an option [such as -s] for merging special data, so that if you know what's in it you merge, if not then don't.

Old Post 02-28-13 09:30 #
Marrub is offline Profile || Blog || PM || Search || Add Buddy IP || Edit || Quote
fraggle
Filled with the code of Doom


Posts: 7830
Registered: 07-00



Marrub said:
What would be nice is a console-based wad unpacker/merger
Anything like this?

Old Post 02-28-13 10:39 #
fraggle is offline Profile || Blog || PM || Email || Homepage || Search || Add Buddy IP || Edit || Quote
Enjay
ASK ME ABOUT FOOTBALL / STEAM / DEAD CELEBRITIES / THE BLAIR WITCH PROJECT


Posts: 6393
Registered: 12-00



MTrop said:
Very doable. I'll put it on the list.


Much appreciated. Support for all map formats?

Old Post 02-28-13 13:44 #
Enjay is offline Profile || Blog || PM || Email || Homepage || Search || Add Buddy IP || Edit || Quote
40oz
Why don't I have a custom title by now?!


Posts: 7032
Registered: 08-07



Tango said:
how about a program that flips maps upside down, a-la Symphony of the Night? :p reverses floor and ceiling heights, etc. if you could even make it automatically generate upside-down versions of the textures too i'd give you a million dollars


I think gggmork made something like this didn't he?

Old Post 02-28-13 15:46 #
40oz is online now Profile || Blog || PM || Email || Homepage || Search || Add Buddy IP || Edit || Quote
MTrop
Member


Posts: 426
Registered: 12-05



Enjay said:


Much appreciated. Support for all map formats?



How does Doom, ZDoom/Hexen, and UDMF sound? ;)

Old Post 02-28-13 16:35 #
MTrop is offline Profile || Blog || PM || Email || Homepage || Search || Add Buddy IP || Edit || Quote
Tango
Senior Member


Posts: 1758
Registered: 04-06



40oz said:


I think gggmork made something like this didn't he?



if he did i'd really like to see it :D


gggpenis, where are you

Old Post 03-01-13 01:19 #
Tango is offline Profile || Blog || PM || Email || Homepage || Search || Add Buddy IP || Edit || Quote
40oz
Why don't I have a custom title by now?!


Posts: 7032
Registered: 08-07


could you make like an image viewer program that you can run with wads to look at overhead automap views of maps?

Old Post 03-01-13 06:06 #
40oz is online now Profile || Blog || PM || Email || Homepage || Search || Add Buddy IP || Edit || Quote
All times are GMT. The time now is 01:20. Post New Thread    Post A Reply
Pages (6): [1] 2 3 4 » ... Last »  
Doomworld Forums : Powered by vBulletin version 2.2.5 Doomworld Forums > Classic Doom > Doom General > I Will Program Small Doom Utilities For You

Show Printable Version | Email this Page | Subscribe to this Thread

 

Forum Rules:
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is OFF
vB code is ON
Smilies are OFF
[IMG] code is ON
 

< Contact Us - Doomworld >

Powered by: vBulletin Version 2.2.5
Copyright ©2000, 2001, Jelsoft Enterprises Limited.