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

Dmon - WAD analysis tool and toughness estimation of DOOM maps

Recommended Posts

I wrote a command line tool to query Doom WADS to get map statistics to assist balancing monster and item placement. Maybe somebody else will find it useful. UDMF map formats are not supported.

 

Dmon home page

 

$ dmon --about

WAD analysis tool and toughness estimation of DOOM maps.

It queries one or more maps in a WAD/PWAD and prints out the number of
hitscanners, health, armor, and ammo items.

It goes further to help map creators answer these questions:
 * how many health and armor points compared to the number of monsters?
 * how many ammo rounds are there for each monster?
 * how many monsters are hitscanners?

To accomplish this the following data points are gathered:
 1) count of monsters that are hitscanners
 2) sum of health points for health bonus(1), stimpacks(10), medkits(25)
 3) sum of armor points for armor bonus(1), green armor(100), blue armor(200)
 4) count of ammo rounds (including rounds that enemies will drop)

These metrics are then derived from the gathered data:
 * Health ratio: number of health points per monster
 * Armor ratio: number of armor points per monster
 * Bullet ratio: bullets per monster
 * Shell ratio: shells per monster

To assist the mapper in making sense of these values, we built a baseline
of recommended values to compare against. The baseline was sampled from DOOM2.

The tool compares the map metrics against the baseline, and if a metric
falls outside the baseline a recommendation is made.

Note: Berserk(100), Soulsphere(100) and Megasphere(200) items are
NOT counted by default. To count these use the "--bonus" option.

Dmon uses Omgifol to read WAD files (see --license)

Indemnity: The metrics used here are subjective to personal opinion.
Decide for yourself if this tool is useful (or not).

Pings @Magicana and @Suitepee - you may find it useful too?

Share this post


Link to post

Very useful stuff!

 

I love the CSV export function, particularly for collecting and organizing multiple dmon reports on maps submitted for large projects (i.e. speedmap sessions, community eps/megawads). Running a content analysis on the maps in your WAD—or your whole catalog, let alone various maps related by theme or year or whatever—will go a lot faster using this.

 

This should also work well for testing, albeit as accompaniment to player reports and demos/videos.

 

How would you recommend altering/expanding the tool to use another broad sample, like from Plutonia or another “baseline” map-pack? I don’t see any description of the sampling methodology yet.

Share this post


Link to post
19 minutes ago, Magicana said:

Is there a straight executable or do I need to get Python to use this?

 

No Python installation is necessary as far as I can tell. The ZIP comes with an EXE file.

 

Anyway, this definitely seems like a useful little tool.

Share this post


Link to post

heya, got this error trying to run it through python:

 

Spoiler

C:\doom\dmon>dmon znato.wad map01 -u
Traceback (most recent call last):
  File "C:\doom\dmon\\dmon.py", line 657, in <module>
    main()
  File "C:\doom\dmon\\dmon.py", line 651, in main
    process_wad(options)
  File "C:\doom\dmon\\dmon.py", line 404, in process_wad
    wad_data = extract_statistics(options)
  File "C:\doom\dmon\\dmon.py", line 161, in extract_statistics
    from omg import omg
  File "C:\doom\dmon\omg\__init__.py", line 30, in <module>
    from omg.wadio import *
  File "C:\doom\dmon\omg\wadio.py", line 81
    raise IOError, "The handle is already open"

 

hopefully i'm just being dim. I had python2.7 already installed!

Share this post


Link to post

This does seem to have some interesting features which I'm sure somebody may find useful every so often. Perhaps someone might be inspired to expand on this tool by adding functionality, even. What I'm not buying into is the "difficulty estimation", however, because I've learned "The Hard Way™" that numbers mean nothing without context.

Share this post


Link to post
2 hours ago, Nine Inch Heels said:

What I'm not buying into is the "difficulty estimation", however, because I've learned "The Hard Way™" that numbers mean nothing without context.

 

Indeed. It probably doesn't take into consideration of stuff like monster infighting, archvile/PE resurrections, enemy placements, real state + cover availability etc.

 

For example, take 2 different maps in which one has cover and the other has no cover at all. In each map, the player has to fight a single spidermastermind and the amount of ammo provided is also equal. Both maps are same in pure "numbers" BUT there is huge difference in difficulty of the 2 maps.

 

Still, it could probably be useful to some degree.

Share this post


Link to post

I just want to see how the numbers line up with the WAD Difficulty rankings that have been compiled lately.

 

Maybe there's more of a correlation than we think.

 

In any case looks awesome and look forward to using it.

Share this post


Link to post
20 hours ago, PasokonDeacon said:

How would you recommend altering/expanding the tool to use another broad sample, like from Plutonia or another “baseline” map-pack? I don’t see any description of the sampling methodology yet.

You can generate a new baseline by giving the "--average --format=dump" options. The entry can be added to the baselines.py source file. Pull requests are welcome (for those who know how) otherwise I am happy to add any new ones on request. I will add Plutonia in the next update.

 

20 hours ago, Magicana said:

Is there a straight executable or do I need to get Python to use this?

There is a windows binary in the download link. First time using py2exe and I am using the binary version to test it, so holding my fingers crossed it does not have any serious issues.

 

20 hours ago, yakfak said:

heya, got this error trying to run it through python:

You are not dim, that is a bug. I cannot reproduce it but would love to fix it. Does it error for other wads too? Did it run the first time or error on the very first try?

 

19 hours ago, Nine Inch Heels said:

What I'm not buying into is the "difficulty estimation", however, because I've learned "The Hard Way™" that numbers mean nothing without context.

I agree, that is why I include the indemnity in the about text "The metrics used here are subjective to personal opinion. Decide for yourself if this tool is useful (or not)."

 

6 hours ago, Andromeda said:

I'm curious, how does this improve on something like WadSpy, or @boris's difficultyanalyzer plugin for Doom Builder? :)

Dmon does not provide a difficulty ratio, only ammo and item ratios. The difficulty is subjective in Dmon and left up to the user to decide. The line that claims "toughness estimation" is misleading so I apologize for that. It should probably read "item and monster balancer" because the tool helps you balancing monster and items. Ultimately it does not improve on those other tools, it only provides a different perspective.

 

17 hours ago, ReaperAA said:

Indeed. It probably doesn't take into consideration of stuff like monster infighting, archvile/PE resurrections, enemy placements, real state + cover availability etc. 

That is correct, Dmon does not account for strategic placement or engine nuances like infighting, nor distinguishes boss monsters from the rest. It is the poor-man's tool for a rough analysis to guide the user.

Share this post


Link to post
2 hours ago, beast said:

Dmon does not provide a difficulty ratio, only ammo and item ratios. The difficulty is subjective in Dmon and left up to the user to decide. The line that claims "toughness estimation" is misleading so I apologize for that. It should probably read "item and monster balancer" because the tool helps you balancing monster and items. Ultimately it does not improve on those other tools, it only provides a different perspective.

 

The difficulty ratio in WadSpy (and my plugin, as it uses the same formula) has to be taken with a huge pile of salt. It's just a monster hitpoints/ammo ratio. It assigns a damage value to each point of ammo, and then divide it through the total hitpoints, estimating if there's enough ammo to kill all monsters. Obiously that doesn't say anything about the difficulty. And while it was ok-ish for Doom 1, it's pretty useless for Doom 2, since one SSG blast does way more damage than two SG shots, but the formula uses the damage of the latter.

Share this post


Link to post
6 hours ago, Armaetus said:

Do I need 2.7 or does anything later than that work?

Currently running under python 3 gives some errors, I will attempt to fix it to run under both major python versions, in the future.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×