DEHACKED vs DECORATE for doom monsters

DECORATE is definitely better for its features and flexibility, but it's ZDoom only. DEHACKED is very limiting, but can be made compatible even with vanilla. Let's not forget a Boom-specific .bex format, which is an improved DEHACKED, still very limiting though.

At first I was into ZDoom and its features. I've learned DECORATE first and messed with it a lot. It was fun for me, but nothing actually successful came out of it. Yet. Years later, I've became fascinated with the wads and community around lower ports such as Boom or even vanilla. I came to a conclusion that targeting this kind of mapping (and players) is worth it - thanks to an easy demo compatibility, there's quite a few people making and playing these maps. So I've learned DEHACKED. I've messed with it a lot too, and was able to create intricate things. As before, nothing successful came out of it yet. My stuff usually doesn't get released because it's either not that awesome, or I don't finish it.

I like both. DECORATE for the wide possibilities, needed to realize extreme and magnific ideas. And DEHACKED for kind of a self-challenge, which I very often find fun as well: "Can I implement this idea in a vanilla compatible way?"

The real determining factor is the target compatibility for the whole particular project. If it's ZDoom-based, there's no need to use DEHACKED. However I believe in advantages of vanilla and Boom wad-creating strongly enough to practice DEHACKED and enjoy it. ;)

Share this post


Link to post

A poll would be silly, they both have a purpose and the choice really depends on what you're trying to do. I guess if for you, modern Doom starts and ends with ZDoom, then DECORATE is the way to go. Lots of people like more compatible/less port-centric maps though.

Share this post


Link to post

DeHackEd!

There's just something inherently clever about utilizing the resources you already have to create something new, and you know how much I like clever things. :)

Share this post


Link to post
Pure Hellspawn said:

Which of these you use or would use for custom doom monsters .....


Since you are placing emphasis on custom monsters, then it's definitely DECORATE
for ZDoom and derivatives. GZDoom when you want to use models.

With DEHACKED you have the possibility to replace existing sprites with custom
ones and then mix and match resources of the original DOOM to determine how the
monsters behave.

DEHACKED, in my opinion is far too limiting.
DECORATE is the imagination machine to help your ideas take shape.

The whole point of DECORATE was, and still is, that it is user driven. You have a
suggestion how something can be made better, and usually Randi, Graf Zahl, Gez ,
or others, will find a way to implement it.

On the other hand, if you go the ZDoom route, then you might consider mapping in UDMFormat.

Share this post


Link to post

Dehacked is hacky, as its name implies. It's all well and good that it has a greater support base; but it is very very limited it what it can do. For complex works (e.g. Batman Doom, Aliens TC, Harmony) it's also very complicated to understand and follow.

I'd only consider using DEHACKED for simple tweaks (like changing level names, monster hit points or weapon max ammo); and any sort of custom object would be defined by a real content definition language like DECORATE.

Share this post


Link to post

DECORATE is definitely awesome, but immediately being at least zdoom compatible is a big turn off. I'll use it for my occasional zdoom-only maps, but most of the time I'd rather be compatible with vanilla/limit-removing/boom and use DEHACKED.

Share this post


Link to post

DEHACKED trickery can be enough to make awesome things with monsters (and new monsters, in combination with sprite replacements), for example:
-modifying health, damage, speed (obviously), but also aggressivity (via duration of walking frames)
-making the monsters to shoot projectiles with splash damage or even BFG behaviour
-monsters with multiple different attacks, randomly chosen (complicated trickery, takes a lot of states)
-turrets shooting in the direction in front of them (done in Batman Doom)
-going crazy with resurrecting abilities (every monster be resurrected, every particular monster can resurrect others)
-permanent ghost monsters, clipping through walls

The downside certainly is, each new thing needs to replace some other, and also replace its action frames which are limited. But it's awesome when you manage to make it work like you plan. :)

Share this post


Link to post

Enjoy reading the responses. I've done DECORATE but not DeHACKED. I assume it is easier to learn DECORATE?

Share this post


Link to post

In my experience, Dehacked isn't necessarily easier than Decorate. What you do have running for you is the restricted canvas of states/codepointers to mess around with. So while you won't get lots of wiggle room to implement new things, the restricted nature makes things a bit simpler (that can be a good thing or a bad thing...it all depends on what your looking for).

However Dehacked can be a big pain if you plan on doing any more than tweaking a few entities or replacing monsters. For example, things get confusing and convoluted if your doing a TC~ish replacement mod. Your states might jump around the table 5 or 6 times for just one entity. Going back to revise states can also be a chore. And your stuck with a limited number of states (you can get creative if you need more, but eventually you'll run out). It's not nearly as straightforward as Decorate. Also if you want to keep your mod vanilla compatible, the Dehacked gets a lot more restricted.

I say this from experience as I've done a lot of Dehacked work in the past couple of years for one of my projects. It really boils down to what your looking for. If you want an exercise in working within a more limited environment and/or if you want a broader range of port compatibility, then Dehacked is worth learning. Once you figure it out, its pretty easy to see how things work; its just gets a bit convoluted the more you dig into it. But if your not worried about port compatibility and/or you want lots of breathing room to play with entities, then I'd say go for Decorate.

Oh, I should note that if you don't mind a slightly narrower port compatibility scope, give the MBF version of Dehacked a try. You get a few cool new codepointers (one of which is a random jump codeopointer which is really useful) and a few extra states which you can replace.

Share this post


Link to post
Pure Hellspawn said:

Enjoy reading the responses. I've done DECORATE but not DeHACKED. I assume it is easier to learn DECORATE?


DECORATE was designed to be a simple and easy way to create custom actors, cutting down on the repetitive boilerplate as much as possible.

DEHACKED was originally a tool that allowed to change values and strings in DOOM.EXE, so that you could modify how Doom behaved. Using DEHACKED means having a keen knowledge of how existing Doom actors work, and being able to cross-reference a lot of data -- state tables, state-with-codepointer tables, actor tables, etc. Using the dedicated editors help, but it's still a lot more complex and complicated than being able to simply write what you need to have. There's a reason why you have a lot of maps with custom actors made for ZDoom, and precisely zero mod made for Fusion (my favorite port nobody uses).

Let's have an example: the Harmony centaur. Here's the relevant (I think) parts of DEHACKED code:

Thing 6 (Revenant / Centaur walking)
Scale = 0.30

Thing 6 (Revenant)
Initial frame = 674
First moving frame = 676
Injury frame = 690
Pain sound = 84
Close attack frame = 339
Death frame = 691
Action sound = 0
Respawn frame = 0

Frame 339
Sprite subnumber = 6
Duration = 10

Frame 340
Sprite subnumber = 32775

Frame 341
Sprite subnumber = 32776

Frame 342
Sprite subnumber = 6
Next frame = 676

Frame 691
Duration = 5

Frame 692
Duration = 5

Frame 693
Duration = 5

Frame 694
Duration = 5

Frame 695
Duration = 5

Frame 696
Duration = -1
Next frame = 0

Pointer 371 (Frame 676)
Codep Frame = 176

And here's its DECORATE code as translated by Blzut3:
actor WalkingCentaur replaces Revenant
{
	scale 0.30
	health 300
	speed 10
	radius 20
	height 56
	reactiontime 8
	painchance 100
	mass 500
	seesound "skeleton/sight"
	painsound "cyber/hoof"
	deathsound "skeleton/death"
	MONSTER
	+FLOORCLIP
	+LONGMELEERANGE
	+MISSILEMORE
	states
	{
		Spawn:
			CYBR AB 10 A_Look
			loop
		See:
			CYBR AABBCCDD 3 A_Chase
			loop
		Pain:
			CYBR G 10 A_Pain
			goto See
		Missile:
		Melee:
			SKEL G 10 A_FaceTarget
			SKEL H 10 bright A_FaceTarget
			SKEL I 10 bright A_SkelMissile
			SKEL G 10 A_FaceTarget
			goto See
		Death:
			CYBR H 5
			CYBR I 5 A_Scream
			CYBR JKL 5
			CYBR M -1 A_Fall
			stop
	}
}

Share this post


Link to post

Fusion? I might just look at that, it sounds quite interesting.

Share this post


Link to post

DECORATE by a country mile, for the reason demonstrated by Gez' last post. DEHackED can be a nightmare to get one's head around, and the only reason I took the time to do so was so I could port a number of DEHackED-specific monsters to DECORATE for a project. DECORATE has everything laid out in nice, (relatively) easy-to-understand state tables and the flexibility offered by its vastly-expanded set of function calls means that it really is limited only by the modder's imagination. And you don't have to replace stuff like you do with DEHackED.

I've seen some pretty impressive things done with DEHackED, but there's a reason I'm a self-confessed Z-fan.

Share this post


Link to post

Dehacked allows you to modify the cheat codes for doom, zdoom doesn't have that ability.

I prefer DECORATE, I find it to be easy to learn against DeHacked.

Share this post


Link to post

DECORATE FTW! I actually used to use DeHackEd for stupid things like yellow skull plasma balls and BFG mancubus balls.

Share this post


Link to post

Decorate definetly.

Decorate is the best, because you can new and diffrent attacks, sounds, scale, speed, translucency, death animations and more.
However, it doesn't work in Vanilla Doom sadly.

Share this post


Link to post

I learned DEHackEd first, because I started in good ol' vanilla.

A lot of people scoff at DEHackEd nowdays, but before DECORATE came along DEHackEd was all there was, and it was (and still is) pretty powerful. As already mentioned, it is still the only way to make your mod compatible with non ZDooM based ports.

Having worked with DEH for years, I can say it can do some pretty amazing things. Justin Fisher used it, for example, to get character dialogue from the Aliens movie to play at spcified locations in Aliens TC in the days before scripting by making invisible monsters placed around corners with the appropriate dialogue as the wake up sound, so the player would be moving down a hallway, and suddenly Apone would shout "Check those corners!". It was very effective.

Back before I switched DeiMWolf and T.U.C.Q. over to GZDooM, these projects were for DooM Legacy. Since Legacy does not have DECORATE, I was limited to DEHackEd, but Legacy kept its copy of the Heretic tables just below the DooM tables. I found I was able to hack into these tables as well by manually editing the DEHACKED lump, and via this method I was able to use the most of the Heretic things, frames, and pointers in addition to the normal DooM ones, greatly extending was I could do in Legacy to a point not so far off what could be done in DECORATE.

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