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

Does DEHACKED become convenient and logical if you spend enough time learning it?

Recommended Posts

I have a question for people who are well-versed in DEHACKED. Does it become truly easy to use at some point? Do you feel like it's a good tool? Or did it always remain rather confusing and hacky for your taste?

Share this post


Link to post

For me, it became a convenient, logical, easy to use and good tool pretty much immediately, but that might be because I already had experience with programming and specifically low-level programming and I even dare say that the kind of thinking associated with these activities comes very naturally to me, apparently more than it does to other people, possibly even many programmers (at least I often get such a feeling when I speak with programmers about algorithms at the low level).

Share this post


Link to post

That largely depends on how you define convenient and logical.

 

As far as allowing to mess with the original Doom engine, yes, it was very convenient, especially before DOSDoom pioneered the ability to define new actors. Convenience nowadays when most advanced ports allow actor definition is more debatable; but it remains handy for if you want custom stuff while still targeting Boom-compatibility.

 

Logical, yes, but the logic is dictated by the nature of what it modifies. It's necessarily close to the data structures used to define actors in Doom, with the separation between actors, frames, and so on. Very low level.

 

Confusing and hacky? Yes. Again, that's tied to its very nature. It's a program built to allow changes in another program. Every time you use it to modify something, you must work from the bottom up instead of from the top down. It's a hack, by definition. It's even part of its name.

 

It's never going to be intuitive, that's for sure. But you can't expect it to be.

Share this post


Link to post

The subjectivity is in how you define them.

 

Objectively, dehacked was convenient back when it was the only thing we had, simply by virtue of allowing to do stuff that couldn't be done otherwise. But if you're talking about convenience to you in particular, it's a different topic. If you can't figure it out, then it'll never be convenient.

 

Likewise, it's logical, but it's machine logical, not human logical. If you can think like a reverse engineer, and work from the bottom up, basically looking at spare parts and figuring out what the completed object looks like, then you won't have a problem. But if you're more accustomed to thinking from the top down, looking at a completed object and then figuring out what kind of spare parts you need to build it, then you'll have a hard time working with Dehacked.

Share this post


Link to post

For quick and silly mods it's convenient. For anything large scale it gets more and more inconvenient the more ambitious your project gets.

 

There are probably better tools out there for most things, but it has it's uses. And it's fun to limit yourself and try to get tricky.

 

It's a good tool.

Share this post


Link to post

@Gez I see, I just thought that, since the OP said:

3 hours ago, Memfis said:

question for people ... Do you feel ... for your taste

As opposed to:

Quote

question about people ... does the majority feel ... for the typical person's taste

Or:

Quote

question about DEHACKED ... does it have the quality ... according to this definition

The concepts of convenience and logical-ness weren't supposed to be understood as well-defined general qualities of DEHACKED, but as subjective perceptions of each of its users who would reply here.

Edited by scifista42

Share this post


Link to post

Decorate is more straight forward. In Dehacked you have to learn how the default resources are stored, to work out what you can swap in and out to achieve the desired effect.

 

I'm not sure I'd call myself well versed in it though, even after working with it for quite a bit. It's definitely black arts terrority.

Share this post


Link to post

Dehacked provides a direct interface to the frame table. It provides insight into exactly how thing animation is structured. Decorate provides an optimized way to define multiple frames, in the realm of creating an entire monster. Dehacked is geared towards editing individual frames. So, Decorate is thing-centric, whereas Dehacked is frame-centric.

 

The thing that makes Dehacked confusing is that, typically in Dehacked, you must edit and re-purpose already-existing frames, where Decorate allows you to add new monsters and frames.

 

Some newer source ports provide a block of unused frames, allowing you to create new animations without having to steal frames from another monster. The best way to understand Dehacked is to look at how the original monsters are set up. You can practice by editing the frames of, say, the imp, and see how those edits change the way he animates in a map.

Share this post


Link to post

When you know its limitations it's fantastic. There are so many little tweaks that can be done in a flash in Dehacked if you so desire it in your WAD. Sometimes a handful of small Dehacked modifications can add a whole new layer to a Doom experience. The important thing is knowing what it can and cannot realistically achieve.

Share this post


Link to post

Making vanilla Doom Dehacked mods is the most hardcore way to work within limitations. Arm yourself with DOSBox and Dehacked and modify Doomhack.exe. You'll have to work without the nice things from MBF (i.e. friends, bouncy swiss army knives or RandomJump frame scripting — those won't be in vanilla DHE!).

 

Even better, mod Strife instead of Doom, using Sehacked. That won't even let you change code pointers!

Share this post


Link to post

Its main limitation is that no tools allow you to move frames around in a convenient fashion. If you didn't allocate enough space for something and need to move shit around, you're in a world of pain.

 

This is especially problematic if you're making something ambitious, coming up with things as you go. Say you're not happy with how that old monster is behaving. You need two more frames to extend its animation. Except it was half the table back. Oops!

 

Would've been better if WhackEd allowed to name the states like in the source code. Then you could reference them by names rather than by numbers, and moving large chunks of the table would be trivial. You'd only be limited by its size. Then again, if you want to make a complex TC in Boom, convenience is something you shouldn't be taking for granted.

Share this post


Link to post

This is going to sound strange considering we have tools like WhackEd to make things easier, but I would go so far as to recommend learning how to write DeHackEd by hand. What this has done for me is let me visualize exactly what each frame does and how they are linked together without actually having to look anything up. I can simply read my DeHackEd lump to know what's going on. Also, it allows me to use Boom/MBF features that would otherwise be overwritten by WhackEd or whatever tool I'm using. I merely use WhackEd as a reference when initially writing/modifying the lump.

 

The downside to this is that you need to specify all the important properties of each frame (sprite, sprite subnumber, next frame, etc), even if they haven't changed from their default values, making the file a bit longer. Also, you can't indent lines, damnit, cause Boom/PrBoom doesn't like that.

 

Edit: I should note that my post really only applies to patches that are meant to be loaded by a source port.

Edited by EarthQuake

Share this post


Link to post
5 minutes ago, EarthQuake said:

Also, it allows me to use Boom/MBF features that would otherwise be overwritten by WhackEd or whatever tool I'm using.

Could you elaborate on this?

Share this post


Link to post

Yes. If you want to use non-vanilla codepointers or frame fields (Unknown 1/Unknown 2), you have to manually add them to the patch. Loading up a patch with these defined in WhackEd/DeHackEd will delete or reset them.

Share this post


Link to post

I think Whacked can give you access to these, it just depends on how you've configured it.

Share this post


Link to post
3 hours ago, Da Werecat said:

Its main limitation is that no tools allow you to move frames around in a convenient fashion. If you didn't allocate enough space for something and need to move shit around, you're in a world of pain.

 

This is especially problematic if you're making something ambitious, coming up with things as you go. Say you're not happy with how that old monster is behaving. You need two more frames to extend its animation. Except it was half the table back. Oops!

Thanks to the fact that each frame can be assigned an arbitrary next frame, you don't really need to move frames around in such a situation. Let's say you allocated 40 frames, from 201 to 240. You realize that you actually need 2 more frames. So you allocate these 2 frames somewhere else, for example from 701 to 702. You can keep the original 40 frames where they are, just set the next frame of frame 240 to 701.

46 minutes ago, EarthQuake said:

The downside to this is that you need to specify all the important properties of each frame (sprite, sprite subnumber, next frame, etc), even if they haven't changed from their default values, making the file a bit longer.

You don't have to do that. You can only specify those you want to become non-default, and the unspecified rest of them will stay default.

40 minutes ago, EarthQuake said:

Yes. If you want to use non-vanilla codepointers or frame fields (Unknown 1/Unknown 2), you have to manually add them to the patch. Loading up a patch with these defined in WhackEd/DeHackEd will delete or reset them.

Even in the latest WhackEd 4 when you select the BEX patch type?

Share this post


Link to post

 

9 minutes ago, scifista42 said:

You can only specify those you want to become non-default, and the unspecified rest of them will stay default.

Even in the latest WhackEd 4 when you select the BEX patch type?

Of course, but you will probably want to be as verbose as possible when writing a patch by hand in order to stay organized. And yes, WhackEd has a configuration for Boom extensions, but not MBF/Eternity/ZDaemon stuff.

Share this post


Link to post
10 minutes ago, scifista42 said:

Thanks to the fact that each frame can be assigned an arbitrary next frame, you don't really need to move frames around in such a situation. Let's say you allocated 40 frames, from 201 to 240. You realize that you actually need 2 more frames. So you allocate these 2 frames somewhere else, for example from 701 to 702. You can keep the original 40 frames where they are, just set the next frame of frame 240 to 701.

Yes, the alternative is to create a mess.

 

53 minutes ago, EarthQuake said:

Unknown 1/Unknown 2

I thought they weren't hidden?

 

Although there was a version where they were hidden for states that didn't have specific MBF codepointers. I since informed the author that these values aren't useless, so if they were hidden in the vanilla config, it's probably going to be fixed, if it wasn't already.

Share this post


Link to post
5 hours ago, Da Werecat said:

Its main limitation is that no tools allow you to move frames around in a convenient fashion.

Well, shit. That would be a fantastic feature for something like WHackEd. Being able to completely swap or shuffle frames and have all the Things and Next pointers that reference them update automatically would be fucking amazing.

 

Related: last time I tried to do some semi-complex DeHackEd stuff (not quite Batman Doom level, but had some clever shit like breakable crates that dropped ammo), my interest in the experiment collapsed because the frame table turned into a bastard-ass mess that I could hardly follow (even with WHackEd4's filtering), so regarding the question in the OP, my answer would be something along the lines of "Not if you stretch it too far." ;)

Share this post


Link to post
40 minutes ago, Xaser said:

breakable crates that dropped ammo

Doesn't seem too difficult, although having a crate with rotation frames is always gonna look a tad weird considering what we're used to. Just replace the chaingunner and swap the chaingun with what item you want dropped.

Share this post


Link to post

It's not too hard to do by itself, but it gets pretty tough to manage down the line when you've done that for all 3 item drops and have a shitton of other monsters with various frames, swapped all over the place.

Share this post


Link to post

Yeah, that's true. I remember coming back to Maskim Xul after a hiatus and being completely bamboozled for a while. :P

Share this post


Link to post
1 hour ago, Linguica said:

people who dislike DeHackEd truly ARE idiots [...] What fools.. how I pity them. 😂

What's the point of this?

Share this post


Link to post
Just now, scifista42 said:

What's the point of this?

It's a meme. A variation on a pretentious Reddit post about Rick and Morty.

Share this post


Link to post
1 hour ago, Xaser said:

"Not if you stretch it too far."

 

This is probably the most accurate answer. Unlike Decorate, where you can just add more code to create new stuff, Dehacked can get you into a really tangled up mess if you start a project with the prospect of adding one new monster, and then decide during the development process that you want 3 new monsters, a boss monster, destructible scenery, and more. If you want efficient dehackery, you gotta do your homework. Find out what assets you can afford to trash, how many states you are going to need to do what you plan to do, and then get started.

 

IMO I like it because it's convenient for some basic stuff I might want. Maybe one new monster, maybe make the guns shoot a little faster, change the map names, change the item pickup text, etc. Decorate does two things that make me a little iffy:

 

1. Only works in ZDoom based ports

2. The limitless potential makes me feel like I'm not using it as responsibly as I probably should be.

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
×