monster sizes are so small
Moderators: GZDoom Developers, Raze Developers
Forum rules
Before asking on how to use a ZDoom feature, read the ZDoom wiki first. If you still don't understand how to use a feature, then ask here.
Before asking on how to use a ZDoom feature, read the ZDoom wiki first. If you still don't understand how to use a feature, then ask here.
- TRONTRON
- Posts: 5
- Joined: Sun Apr 23, 2023 1:37 pm
- Preferred Pronouns: They/Them
- Operating System Version (Optional): windows 11
- Contact:
monster sizes are so small
I am currently making new monsters for my doom mod but I notice that the original sprite size for monsters is just so very small. When I'm making my monsters do I have to make them this small or is there a way to size them down in game?
Re: monster sizes are so small
I assume that you mean you are making sprites that are larger than the Doom originals (where human-like sprites are typically only around 56 pixels tall)?
If so, then you can indeed scale your larger sprites down to make them effectively higher resolution sprites. Both ZScript and DECORATE support scale properties when defining an actor, and these can be used to scale the sprites of any enemy that you create down to a suitable size. e.g. giving a 128 tall sprite a scale factor of 0.5 will make it 64 world units tall, but it will retain the detail from the 128 pixels.
DECORATE:
ZScript
There are other ways to scale actors and sprites too, but this might be the most straight forward. If it's not suitable, provide more detail of what you are trying to do. There will be a way to do it.
If so, then you can indeed scale your larger sprites down to make them effectively higher resolution sprites. Both ZScript and DECORATE support scale properties when defining an actor, and these can be used to scale the sprites of any enemy that you create down to a suitable size. e.g. giving a 128 tall sprite a scale factor of 0.5 will make it 64 world units tall, but it will retain the detail from the 128 pixels.
DECORATE:
Code: Select all
ACTOR MyActor
{
Scale 0.5
Plus whatever other code you need
Code: Select all
CLASS MyActor
{
Default
{
Scale 0.75;
Plus whatever other default entries you need
}
Plus whatever other code you need
- TRONTRON
- Posts: 5
- Joined: Sun Apr 23, 2023 1:37 pm
- Preferred Pronouns: They/Them
- Operating System Version (Optional): windows 11
- Contact:
Re: monster sizes are so small
That tells me precisely what I needed to know thank you
-
- Posts: 5
- Joined: Wed Apr 30, 2025 11:50 am
- Operating System Version (Optional): Android 11
Re: monster sizes are so small
For variety you could also have a script that randomly sets the scale of monsters, so some are short and some are tall. I think you could also randomly set the width as well. I did that in a mod ages ago but am not sure if I still have a back up of it. I'll check an external hard drive later to see if I backed up the mod there and if so I'll paste the decorate code I used to randomly set monster size if you're interested.
Re: monster sizes are so small
That's actually reasonably straight forward to do directly in the actor's ZScript. I do it with a lot of my custom enemies and decorations. A frame in the spawn state sequence sets a random scale value. IMO, it's best not to make very different values possible because then you could end up with a very small, and a very big one standing right next to each other - and that just looks weird and makes if very obvious what you have done. This also means that it isn't usually necessary to alter the hitbox size - just make it somewhere in the middle of the randomisation extremes.
example of scaling from one of my actors:
There are also several other things to consider (here are just a few that I have come across):
It's a good idea to give the enemies an idle state sequence. If the enemy loses their target (e.g. when a player dies), they go back to their spawn state sequence and re-scale themselves. There are a few ways to fix this but the easiest (IMO) is to give them an idle state sequence. If an enemy has an idle sequence, they go to that, rather than the spawn sequence when they lose their target. So, no more rescaling - and you can get the enemy to do things in their idle state too - like wander around instead of just stopping on the spot.
If an enemy has been set to be dormant in a map, it won't scale itself until it becomes activated. If the player sees that, they can see the change in size. e.g. I had some enemies that were initially like decorations in tanks in a science lab. They were set to be dormant. That meant that they were too big anyway (they needed to be scaled down to look right), but the tanks break and the monsters get released in full view of the player. So, I had to place them as active, rather than dormant, and then freeze them after a couple of tics in an open script when the map starts and before the player could see them.
Also, if you are doing something like having the player teleport invisibly from one location to another identical location (to fake a continuous corridor or whatever) and there are some decorations that are set to randomly scale (e.g. natural scenery like trees would be a suitable candidate here) then the decorations on either side of the teleport setup need to be given the same scale. Otherwise, you can see the size change when you teleport, and this breaks the illusion.
That all probably sounds like a lot of hassle, but in reality, most of the time, those issues simply don't get encountered. So, it just needs to be addressed in the very few occasions when it's a problem, and addressing it is actually pretty easy.
And, as ever, there are alternatives to the above too, if someone wanted to do it a different way. This is just something that I set up years ago and saw no need to change. Or, it doesn't need to be done at all.
example of scaling from one of my actors:
Code: Select all
PRIS A 0 A_SetScale (frandom(0.95,1.1));
It's a good idea to give the enemies an idle state sequence. If the enemy loses their target (e.g. when a player dies), they go back to their spawn state sequence and re-scale themselves. There are a few ways to fix this but the easiest (IMO) is to give them an idle state sequence. If an enemy has an idle sequence, they go to that, rather than the spawn sequence when they lose their target. So, no more rescaling - and you can get the enemy to do things in their idle state too - like wander around instead of just stopping on the spot.
If an enemy has been set to be dormant in a map, it won't scale itself until it becomes activated. If the player sees that, they can see the change in size. e.g. I had some enemies that were initially like decorations in tanks in a science lab. They were set to be dormant. That meant that they were too big anyway (they needed to be scaled down to look right), but the tanks break and the monsters get released in full view of the player. So, I had to place them as active, rather than dormant, and then freeze them after a couple of tics in an open script when the map starts and before the player could see them.
Also, if you are doing something like having the player teleport invisibly from one location to another identical location (to fake a continuous corridor or whatever) and there are some decorations that are set to randomly scale (e.g. natural scenery like trees would be a suitable candidate here) then the decorations on either side of the teleport setup need to be given the same scale. Otherwise, you can see the size change when you teleport, and this breaks the illusion.
That all probably sounds like a lot of hassle, but in reality, most of the time, those issues simply don't get encountered. So, it just needs to be addressed in the very few occasions when it's a problem, and addressing it is actually pretty easy.
And, as ever, there are alternatives to the above too, if someone wanted to do it a different way. This is just something that I set up years ago and saw no need to change. Or, it doesn't need to be done at all.
-
- Posts: 5
- Joined: Wed Apr 30, 2025 11:50 am
- Operating System Version (Optional): Android 11
Re: monster sizes are so small
Unfortunately I didn't back up my Doom mod, but Enjay's post is quite helpful.
Whelp, time to start a new Doom mod.
Whelp, time to start a new Doom mod.
Re: monster sizes are so small
You lost your work? Bummer. 
Just to be clear, everything I spoke about in my most recent post is only relevant if you are scaling the actors randomly using the method I suggested. If you are just putting a scale value in the default section of the actor's code, they will be scaled to that size when they spawn and that's that. None of the above considerations will be necessary.

Just to be clear, everything I spoke about in my most recent post is only relevant if you are scaling the actors randomly using the method I suggested. If you are just putting a scale value in the default section of the actor's code, they will be scaled to that size when they spawn and that's that. None of the above considerations will be necessary.