Skip to content

UDMF woof namespace#2626

Merged
elf-alchemist merged 44 commits intofabiangreffrath:masterfrom
elf-alchemist:udmf_woof_namespace
Apr 16, 2026
Merged

UDMF woof namespace#2626
elf-alchemist merged 44 commits intofabiangreffrath:masterfrom
elf-alchemist:udmf_woof_namespace

Conversation

@elf-alchemist
Copy link
Copy Markdown
Collaborator

Early draft
Final few major changes to UDMF for 16.0.0

Introducing a dedicated namespace, a handful of new props and UDB config

Copy link
Copy Markdown
Collaborator

@rfomin rfomin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for your efforts. I haven't read the full PR yet, but the additions seem reasonable and will likely be accepted in other ports. Can we rename it mbf2y? It will remain unfinished for a while, but we also have a half-finished declarate.

Comment thread docs/udmf_woof.txt Outdated
II.A : Storage and Retrieval of Data
------------------------------------

Any TEXTMAP lump in the "Woof" namespace must be encoded in UTF-8. Otherwise,
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't support UTF-8. As far as I know, none of the other ports or editors support it in UDMF either. I don't think it's necessary.

Comment thread docs/udmf_woof.txt Outdated
-----------------------------------

For the purposes of demo-accuracy this namespace requires support for the
ZNODES lumps. While BLOCKMAP and REJECT
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unfinished?

Comment thread docs/udmf_woof.txt
alpha = <float>; // Opacity percentage. Default = 1.0.
tranmap = <string>; // Custom translucency map lump. Overides alpha.

comment = <string>; // A comment. No special meaning is attached to it.
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we need comment? Does UDMF support regular comments in code?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's a field intended for editors to store on the level information itself. It's just to explicitly say that we will ignore it during parsing.

@fabiangreffrath
Copy link
Copy Markdown
Owner

What's missing here?

@elf-alchemist
Copy link
Copy Markdown
Collaborator Author

What's missing here?

I'm currently looking over some other things about the UDMF base spec with boris and Quasar, before marking this as ready. There are some changes needed on upstream UDB, which I may have to change and retest this current CFG.

@elf-alchemist elf-alchemist marked this pull request as ready for review April 1, 2026 03:02
@elf-alchemist
Copy link
Copy Markdown
Collaborator Author

I've removed the UDB config for now, I'll make PR to add it later on. Otherwise this is fine to merge for 16.0.0

Comment thread src/p_udmf.c

int32_t lump = W_CheckNumForName(udmf_linedefs[i].tranmap);
if (lump >= 0 && W_LumpLength(lump) == 256 * 256)
if (lump != NO_INDEX && W_LumpLength(lump) == tranmap_lump_length)
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure if it's a good idea to allocate the line's tranmap as PU_CACHE?

Also, why check for demo_compatibility a few lines later in the UDMF parser?

Copy link
Copy Markdown
Owner

@fabiangreffrath fabiangreffrath left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fine with me, thank you!

What does @rfomin say?

@rfomin
Copy link
Copy Markdown
Collaborator

rfomin commented Apr 8, 2026

Fine with me, thank you!

What does @rfomin say?

There is still an unanswered question about UTF-8 in the spec. We don't support it in the parser. Personally, I don't think it's necessary. Just for comments?

@fabiangreffrath
Copy link
Copy Markdown
Owner

Fine with me, thank you!
What does @rfomin say?

There is still an unanswered question about UTF-8 in the spec. We don't support it in the parser. Personally, I don't think it's necessary. Just for comments?

@elf-alchemist could you please clarify this or just change it to ascii?

@fabiangreffrath
Copy link
Copy Markdown
Owner

I'm still not too sure about this one. To be honest, I wouldn't want to introduce a Woof-exclusive name space that's feature-incompatible with other ports. We already have this situation with dsda-doom and I would say that it's an unfortunate one. We should learn from it and not repeat mistakes.

So, how are the chances that the features introduced here will make it into a new mbf2y mapping standard? And should we wait until this will be formally specified?

@elf-alchemist
Copy link
Copy Markdown
Collaborator Author

We should learn from it and not repeat mistakes.

I agree, that's exactly why I made the separate Woof namespace.

I do not believe that any Doom source port should be denied the right to have its own, exclusive modding features, however simple, complex, small or large these features may be. I firmly believe that for the sake of the health of the Doom modding scene we should be clearer and more respectful of the boundary between features considered port-agnostic or port-exclusive. Woof, for all the general restraint and conservative nature of its design, is no less worthy of the right to own its exclusive features than any other source port, be it DSDA, Helion, Odamex or UZD, and in my opinion the creation of a bespoke namespace, not supported by any other port, is an important step in expressing those boundaries cleanly.

In turn, as I want to establish the Woof namespace as ours, I do not wish for the DSDA namespace to have added support in any other source port going forward, with the same logic applying to really all current port-exclusive namespaces, we should respect each others boundaries and let exclusive features remain exclusive until any official notice of a cross-port standard adopting said features is made. The only reason I even used it in the first place is because it was convenient enough to make a map on it using UDB.

Though, you will be happy to know that, yes, most of the things implemented on these past few UDMF runs have been in the name of establishing the viability of many mapping features in a simpler purist port, for the sake of the future cross-port namespace, there's definitely some overlap, for when the new mapping standard comes out. If anything, you could think of this as a 'prototype' of sorts.

I can see why it is that we even reached this mess in the first place. We have no current established cross-port UDMF standard that takes advantage of the possibilities provided by the text-based format, it certainly put pressure in the few port-exclusive namespaces that have existed so far, into being partly adopted in other ports that shouldn't really be doing that.

And by all means, I fully agree with, and will push for, a proper cross-port namespace so that the past mistakes aren't repeated, I just also believe that a cross-port standard doesn't have to come in the way, or at the cost, of port-exclusivity. As it stands, there's very little in the way forward in terms of getting wide cross-port UDMF adoption, I need to iron out some details with Quasar and Boris beforehand, but its all to come sooner, rather than later.

@fabiangreffrath
Copy link
Copy Markdown
Owner

Hm, so you say we can have our own "Woof" namespace and no matter if this will become the new "mbf2y" standard - or a subset or superset of it - adding that new standard will merely require a new check in UDMF_ParseNamespace(). Right? Fine to merge for me then.

@elf-alchemist
Copy link
Copy Markdown
Collaborator Author

Indeed, that is the practical outcome.

Thank you 🙂

@elf-alchemist elf-alchemist merged commit b2e584a into fabiangreffrath:master Apr 16, 2026
9 checks passed
@elf-alchemist elf-alchemist deleted the udmf_woof_namespace branch April 16, 2026 15:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants