BDLite [V1.2 RELEASED - 2019-12-20]
Forum rules
The Projects forums are only for projects. If you are asking questions about a project, either find that project's thread, or start a thread in the General section instead.
Got a cool project idea but nothing else? Put it in the project ideas thread instead!
Projects for any Doom-based engine (especially 3DGE) are perfectly acceptable here too.
Please read the full rules for more details.
The Projects forums are only for projects. If you are asking questions about a project, either find that project's thread, or start a thread in the General section instead.
Got a cool project idea but nothing else? Put it in the project ideas thread instead!
Projects for any Doom-based engine (especially 3DGE) are perfectly acceptable here too.
Please read the full rules for more details.
-
- Posts: 219
- Joined: Fri Nov 03, 2017 6:05 pm
Re: BDLite - a slimmed-down effects mod
Not sure if this has been brought to your attention already, but reloading ammo for the rifle seems to be a bit broken. It depletes the entirety of ammo2, even when ammo1 is full. I think it might be related to the "weaponscripts", at least that's what fixed it for me. Other than that, this mod is pretty damn solid!
***edit***
- chainsaw doesn't want to spawn...it's shy.
***edit***
- chainsaw doesn't want to spawn...it's shy.
-
- Posts: 9696
- Joined: Sun Jan 04, 2004 5:37 pm
- Preferred Pronouns: They/Them
- Operating System Version (Optional): Debian Bullseye
- Location: Gotham City SAR, Wyld-Lands of the Lotus People, Dominionist PetroConfederacy of Saudi Canadia
Re: BDLite - a slimmed-down effects mod
ahh okay then, was imagining SM4 had gone off the deep deep end and now we have truck nuts on the shotgun.RikohZX wrote:The infamous nickname for the animated strap the previous version of Brutal Doom had, which bounced every time the gun did anything beyond idle. It was actually removed in later versions, but it stuck around in people's heads I guess.Matt wrote:......shotgun.... testicles?
.......which is apparently a real product (but more for pistols and rifles, at least according to the pictures on tacsac.com)
-
-
- Posts: 266
- Joined: Mon Dec 28, 2015 6:22 pm
Re: BDLite - a slimmed-down effects mod
Americans will never stop astounding me.
Thanks so much for the testing and enthusiasm so far - I've uploaded a new edition with many of the smoke/fire effects cleaned up, the BFG and SSG reinstated, and the Rifle reloading problem fixed. I hadn't recompiled the ACS after I changed the ammo type names, so it was trying to reload up to the RifleAmmo limit (all 300 of them) instead of RifleAmmoLoaded.
Let's talk about the next big change:
Monsters!
The edited monsters are the real meat of Brutal Doom. Each one of them defines a vast tree of states that builds on the normal Doom monster behaviour, most notably what happens when they're shot. Far from just falling over and dying with the same two animations each time, each monster has a large library of sprites for being maimed in a variety of morbidly interesting ways depending on the damage type. These typically spawn large numbers of gibs/remains from the original monster, or even have the monster going into a last stand where it can still attack desperately as it dies. This results in class definitions that are even bigger than the weapons - the Sergeant, for example, weighs in at 1099 lines, with extra definitions for dead variants and other extras bringing the size of the file up to 1376 lines.
Damage types
Before going very far down the class, you can see a large number of PainChance and DamageFactor definitions - and like most other things in Brutal Doom, damage types are all over the place. It's even more difficult to keep track of them than most other elements because damage types don't require definition anywhere - they're just strings, which are easy to typo undetectably and don't have a central place to look them up.
Brutal Doom actually uses some damage types in clever ways - for example, flying body parts from monsters cause the Blood damage type, which everything declares itself immune to - however, the Pain.Blood state still gets called if something is hit by one, producing effects like blood-stained barrels or drips on the player's screen. Another unorthodox damage type is Avoid, which causes no damage but which is intended to cause a monster to attempt to dodge aside if hit by it - it's used in places like the rocket launcher, which fires an invisible hitscan to alert enemies as the real projectile launches.
Deciding what to keep and what to avoid from all of the above was a challenge, but in the end I removed most of the special cases and pared the whole thing down to just eight damage types:
Kick - Caused by short-range physical attacks, typically in slot 1 or the universal kick.
SuperKick - Caused by short-range physical attacks when in Berserk.
Bullet - Slow-firing bullet weapons like the pistol or Brutal Doom rifle.
Shotgun - Shell weapons like the shotgun.
RapidFire - Weapons with a high rate of fire such as the chaingun.
Explosive - Rockets, grenades and so on.
Plasma - Laser and plasma/cell weapons
Flak - Larger and more powerful ballistic weapons, like the Super Shotgun or (because I wanted to include it as my pet weapon) the new Flak Cannon.
There are still a couple of other ones that get used very occasionally, such as GreenFire for the Hell Knight's attacks, but for the vast majority of the time I stuck with the above.
Death states
In Brutal Doom, each damage type's death state for each monster is unique. They contain a lot of hard-to-follow jumps for randomization or special cases, and spawn a ton of additional blood and/or gib items. Here's just one of them taken from the Sergeant class above.
BDLite restructures the death states so that the entry points are much more straightforward:
The death states only do a small amount of work to indicate the monster is dead, and then define a selection of one or more Die___ states to randomly jump to afterwards. Monsters can have as few or as many Die states as you like - for some of them, I used the huge number of sprites available to define many variations, but for others, just a few variations were enough.
The Die states are where the animation and blood-spawning now take place. Each one is named roughly after the style of death it shows - DieInHalf or DieHeadOff, for example, and for the ones that involve madly firing as they fall over I chose to use the term "DieRambo". There's often a bit of repetition in here, but it's much clearer now what they're doing - spawn the gibs, animate the sprite, and end it either with a frame of length -1 or a Stop to remove the actor entirely. Here are four of them - the Sergeant is among the actors with the most possible deaths at 14.
The Plasma death states tend to be the longest as they spawn some extra objects compared to normal deaths (they use a carbonized version of the monster sprite and show flecks of plasma evaporating off them) - but there's now no unexpected jumping around, the animations are all straightforward to read. You'll also notice that the blood and gib classes are entirely different, an overhaul that I'll describe in the next post.
As for pain states, they remain mostly the same as in Doom, with the exception of Kick which typically has a much higher PainChance than it would normally and thrusts the target monster back a bit - this keeps the kick's unique advantage in being able to slow monsters down and get out if they're crowding you in.
Thanks so much for the testing and enthusiasm so far - I've uploaded a new edition with many of the smoke/fire effects cleaned up, the BFG and SSG reinstated, and the Rifle reloading problem fixed. I hadn't recompiled the ACS after I changed the ammo type names, so it was trying to reload up to the RifleAmmo limit (all 300 of them) instead of RifleAmmoLoaded.
Let's talk about the next big change:
Monsters!
The edited monsters are the real meat of Brutal Doom. Each one of them defines a vast tree of states that builds on the normal Doom monster behaviour, most notably what happens when they're shot. Far from just falling over and dying with the same two animations each time, each monster has a large library of sprites for being maimed in a variety of morbidly interesting ways depending on the damage type. These typically spawn large numbers of gibs/remains from the original monster, or even have the monster going into a last stand where it can still attack desperately as it dies. This results in class definitions that are even bigger than the weapons - the Sergeant, for example, weighs in at 1099 lines, with extra definitions for dead variants and other extras bringing the size of the file up to 1376 lines.
Spoiler: BrutalDoom V20 Sergeant definitionA lot of the enemies in Brutal Doom have a concept of memory - as they chase you, they gradually decrement the number of EnemyMemory in their inventory, and if you've been out of sight for a while, they revert to just wandering instead of chasing you. And there are some very fine details like having the Sergeant keep an ammo count - once he's fired all his shells, he has to stop and reload the next time Missile is called. It's a clever idea, but it's a bit wasted because in normal gameplay for a monster that is dispatched so easily, you really aren't going to notice this happening. It would be good for a boss, though.
Damage types
Before going very far down the class, you can see a large number of PainChance and DamageFactor definitions - and like most other things in Brutal Doom, damage types are all over the place. It's even more difficult to keep track of them than most other elements because damage types don't require definition anywhere - they're just strings, which are easy to typo undetectably and don't have a central place to look them up.
Brutal Doom actually uses some damage types in clever ways - for example, flying body parts from monsters cause the Blood damage type, which everything declares itself immune to - however, the Pain.Blood state still gets called if something is hit by one, producing effects like blood-stained barrels or drips on the player's screen. Another unorthodox damage type is Avoid, which causes no damage but which is intended to cause a monster to attempt to dodge aside if hit by it - it's used in places like the rocket launcher, which fires an invisible hitscan to alert enemies as the real projectile launches.
Deciding what to keep and what to avoid from all of the above was a challenge, but in the end I removed most of the special cases and pared the whole thing down to just eight damage types:
Kick - Caused by short-range physical attacks, typically in slot 1 or the universal kick.
SuperKick - Caused by short-range physical attacks when in Berserk.
Bullet - Slow-firing bullet weapons like the pistol or Brutal Doom rifle.
Shotgun - Shell weapons like the shotgun.
RapidFire - Weapons with a high rate of fire such as the chaingun.
Explosive - Rockets, grenades and so on.
Plasma - Laser and plasma/cell weapons
Flak - Larger and more powerful ballistic weapons, like the Super Shotgun or (because I wanted to include it as my pet weapon) the new Flak Cannon.
There are still a couple of other ones that get used very occasionally, such as GreenFire for the Hell Knight's attacks, but for the vast majority of the time I stuck with the above.
Death states
In Brutal Doom, each damage type's death state for each monster is unique. They contain a lot of hard-to-follow jumps for randomization or special cases, and spawn a ton of additional blood and/or gib items. Here's just one of them taken from the Sergeant class above.
Code: Select all
Death.SSG:
SZD1 E 1 A_Pain
SZD1 E 1 A_FaceTarget
TNT1 A 0 A_SpawnItem("BloodSplasher2")
TNT1 AAA 0 bright A_CustomMissile ("SuperGoreSpawner", 35, 0, random (170, 190), 2, random (0, 40))
//TNT1 A 0 A_CustomMissile ("MeatDeath", 0, 0, random (0, 360), 2, random (0, 160))
TNT1 AAAA 0 A_CustomMissile ("XDeath1", 32, 0, random (170, 190), 2, random (0, 40))
TNT1 A 0 A_CustomMissile ("XDeath2", 32, 0, random (170, 190), 2, random (0, 40))
TNT1 A 0 A_CustomMissile ("XDeath3", 32, 0, random (170, 190), 2, random (0, 40))
TNT1 AAAA 0 A_CustomMissile ("Brutal_FlyingBlood", 32, 0, random (170, 190), 2, random (0, 40))
TNT1 AAA 0 A_CustomMissile ("Instestin", 32, 0, random (150, 210), 2, random (0, 40))
TNT1 AAAA 0 A_CustomMissile ("Brutal_FlyingBloodFaster", 32, 0, random (170, 190), 2, random (0, 40))
TNT1 AAAA 0 A_CustomMissile ("Brutal_FlyingBloodMuchFaster", 32, 0, random (170, 190), 2, random (0, 40))
TNT1 AAAA 0 A_CustomMissile ("SuperWallRedBlood", 32, 0, random (170, 190), 2, random (0, 40))
TNT1 AAAA 0 A_CustomMissile ("SuperWallRedBlood", 46, 0, random (170, 190), 2, random (0, 40))
TNT1 AA 0 A_CustomMissile ("XDeathArm1", 32, 0, random (170, 190), 2, random (0, 40))
TNT1 A 0 A_CustomMissile ("XDeathSergeantHead", 32, 0, random (170, 190), 2, random (0, 40))
TNT1 A 0 A_XScream
TNT1 A 0 A_NoBlocking
SZD1 EEFFGH 6
TNT1 A 0 A_SpawnItem ("GrowingBloodPool")
SZD1 H -1
Stop
Code: Select all
Death:
Death.Bullet:
TNT1 A 0 A_ChangeFLag("NODROPOFF", 0)
TNT1 A 0 A_Scream
TNT1 A 0 A_NoBlocking
TNT1 A 0 A_Jump(256, "DieNormal", "DieNormal2")
Death.Kick:
TNT1 A 0 A_ChangeFLag("NODROPOFF", 0)
TNT1 A 0 A_Scream
TNT1 A 0 A_NoBlocking
TNT1 A 0 A_Jump(256, "DieRollBack")
Death.SuperKick:
TNT1 A 0 A_ChangeFLag("NODROPOFF", 0)
TNT1 A 0 A_Scream
TNT1 A 0 A_NoBlocking
TNT1 A 0 A_Jump(256, "DieSplit", "DieGibs")
Death.Shotgun:
TNT1 A 0 A_ChangeFLag("NODROPOFF", 0)
TNT1 A 0 A_Scream
TNT1 A 0 A_NoBlocking
TNT1 A 0 A_Jump(256, "DieBlastedBack", "DieRollBack", "DieArmOff", "DieRoll")
Death.RapidFire:
TNT1 A 0 A_ChangeFLag("NODROPOFF", 0)
TNT1 A 0 A_Scream
TNT1 A 0 A_NoBlocking
TNT1 A 0 A_Jump(256, "DieArmOff", "DieInHalf", "DieHeadOff", "DieHoleThroughChest", "DieRoll")
Death.Explosive:
TNT1 A 0 A_ChangeFLag("NODROPOFF", 0)
TNT1 A 0 A_Scream
TNT1 A 0 A_NoBlocking
TNT1 A 0 A_JumpIf(health > -10, "DieNormal")
TNT1 A 0 A_Jump(256, "DieGibs", "XDeath")
Death.Plasma:
TNT1 A 0 A_ChangeFLag("NODROPOFF", 0)
TNT1 A 0 A_Scream
TNT1 A 0 A_NoBlocking
TNT1 A 0 A_Jump(256, "DiePlasma")
Death.Flak:
TNT1 A 0 A_ChangeFLag("NODROPOFF", 0)
TNT1 A 0 A_Scream
TNT1 A 0 A_NoBlocking
TNT1 A 0 A_Jump(256, "DieJustLegs", "DieInHalf", "DieGibs")
The Die states are where the animation and blood-spawning now take place. Each one is named roughly after the style of death it shows - DieInHalf or DieHeadOff, for example, and for the ones that involve madly firing as they fall over I chose to use the term "DieRambo". There's often a bit of repetition in here, but it's much clearer now what they're doing - spawn the gibs, animate the sprite, and end it either with a frame of length -1 or a Stop to remove the actor entirely. Here are four of them - the Sergeant is among the actors with the most possible deaths at 14.
Code: Select all
DieHeadOff:
TNT1 A 0 A_CustomMissile ("BdGibZombieHead", 48, 0, random (0, 360), 2, random (0, 160))
TNT1 A 0 A_CustomMissile ("BdBloodSpawnerMed", 35, 0, random (0, 360), 2, random (0, 160))
TNT1 AAA 0 A_CustomMissile ("BdBloodLump", 35, 0, random (0, 360), 2, random(45, 80))
SPDH ABCDE 6 A_CustomMissile ("BdBloodDrop", 15, 0, random (0, 360), 2, random (0, 40))
SPDH E -1
DieHoleThroughChest:
TNT1 A 0 A_CustomMissile ("BdBloodSpawnerMed", 35, 0, random (0, 360), 2, random (0, 160))
TNT1 AA 0 A_CustomMissile ("BdBloodLump", 35, 0, random (0, 360), 2, random(45, 80))
TNT1 AAAA 0 A_CustomMissile ("BdGibGut", 35, 0, random (0, 360), 2, random(25, 45))
TNT1 A 0 A_CustomMissile ("BdGibZombieRibcage", 42, 0, random (0, 360), 2, random (10, 160))
ZXZ7 ABCDE 6 A_CustomMissile ("BdBloodDrop", 15, 0, random (0, 360), 2, random (0, 40))
ZXZ7 E -1
DieRoll:
TNT1 A 0 A_CustomMissile ("BdBloodSpawnerMed", 35, 0, random (0, 360), 2, random (0, 160))
TNT1 AAA 0 A_CustomMissile ("BdBloodLump", 35, 0, random (0, 360), 2, random(45, 80))
TNT1 A 0 ThrustThingZ(0,5,0,1)
TNT1 A 0 A_FaceTarget
TNT1 A 0 A_Recoil(random(2, 4))
SPO4 ABCDJ 4 A_CustomMissile ("BdBloodDrop", 15, 0, random (0, 360), 2, random (0, 40))
SPO4 J -1
DiePlasma:
PBR1 A 2
TNT1 AAAAAAAAAAAAAAAAAAAAAAA 0 {
A_CustomMissile ("BdAshes", 32, 0, random (0, 360), 2, random (0, 180));
A_CustomMissile ("BdAshesHeavy", 32, 0, random (0, 360), 2, random (0, 180));
}
TNT1 A 0 A_CustomMissile ("BdBloodSpawnerMelting", 35, 0, random (0, 360), 2, random (0, 160))
PBR1 BBBBBB 2 A_SpawnItemEx("BdPlasmaEvaporate", random(0 - radius/2, radius/2), random(0 - radius/2, radius/2), 48)
PBR1 CDEFGH 6 A_CustomMissile ("Blood", 10, 0, random (0, 360), 2, random (0, 160))
TNT1 A 0 A_SpawnItem ("BdBloodPool")
PBR1 HHHHHHHHHHHHHHHHHHHHHH 8 {
A_CustomMissile ("BdPlasmaSmoke", 10, 0, random (0, 360), 2, random (0, 160));
A_SpawnItemEx("BdPlasmaEvaporate", random(0 - radius/2, radius/2), random(0 - radius/2, radius/2), 8);
}
PBR1 H -1
Stop
As for pain states, they remain mostly the same as in Doom, with the exception of Kick which typically has a much higher PainChance than it would normally and thrusts the target monster back a bit - this keeps the kick's unique advantage in being able to slow monsters down and get out if they're crowding you in.
-
- Posts: 7
- Joined: Sat Jun 24, 2017 7:52 pm
Re: BDLite - a slimmed-down effects mod [2018-10-08]
Chainsaw still does not spawn in doom 2 map 1? And when you shoot a rocket at the water, there is no water splash effect. Are small plasma gun in shot 2 and something looks like flak cannon weapon in slot 7 for testing or they are new weapons?
-
- Posts: 9696
- Joined: Sun Jan 04, 2004 5:37 pm
- Preferred Pronouns: They/Them
- Operating System Version (Optional): Debian Bullseye
- Location: Gotham City SAR, Wyld-Lands of the Lotus People, Dominionist PetroConfederacy of Saudi Canadia
Re: BDLite - a slimmed-down effects mod [2018-10-08]
Dang, dude you're like the Carl Linnaeus of doom brutality. But with, like, actual power to reorganize the source material into your system.
-
- Posts: 44
- Joined: Sat Sep 30, 2017 9:44 pm
Re: BDLite - a slimmed-down effects mod [2018-10-08]
So does this mean we might get an unfucked version of Ketchup along with this rework?
-
- Posts: 147
- Joined: Sat Mar 31, 2012 4:27 am
- Preferred Pronouns: He/Him
- Location: Japan
Re: BDLite - a slimmed-down effects mod [2018-10-08]
Looks quite interesting.
I somewhat miss "last stand" feature but I admire your hard work!
I somewhat miss "last stand" feature but I admire your hard work!
-
- Posts: 307
- Joined: Tue Sep 04, 2012 9:11 pm
Re: BDLite - a slimmed-down effects mod [2018-10-08]
I'm gonna assume you have long since been aware of the lingering "doomguy is a coding aberrant abomination" issues BD has. I remember when Champions first launched earlier this year, and it had ridiculous effects on Brutal Doom at the time like turning the player into a champion, or monsters and the player constantly changing powers because Brutal's code is so botched that it was practically respawning / replacing entities on the spot impractically. It even turned Mark's "starter pack" campaign toilets into champions. The poor author had to essentially build exceptions into Champions to ignore BD stuff rather than BD getting optimized at all for this.
And reading the sheer amount of effort that has to go into stabilizing and standardizing all of this is an experience all of its own.
And reading the sheer amount of effort that has to go into stabilizing and standardizing all of this is an experience all of its own.
-
- Posts: 467
- Joined: Sun Jan 19, 2014 8:12 am
- Location: Hopelessly stuck in the past
Re: BDLite - a slimmed-down effects mod [2018-10-08]
This is the equivalent of someone untangling christmas lights that are also tangled up with fishing line. You're a brave soul for doing this.
-
- Posts: 83
- Joined: Tue Sep 05, 2017 10:59 pm
- Location: The corner of "screw off" and "none of your business."
Re: BDLite - a slimmed-down effects mod [2018-10-08]
I'm really looking forward to seeing a cleaner version of Brutal Doom's code. The mere fact that the code is quite a mess and someone trying to fix this one is a daunting task.
Good luck on this, we're all counting on you.
Good luck on this, we're all counting on you.
-
- Posts: 206
- Joined: Wed Jul 08, 2015 12:29 pm
Re: BDLite - a slimmed-down effects mod [2018-10-08]
Hell Baron appears to have missing sprites. Probably a typo?
Something I'd love to see implemented--the crouch+kick slide attack. In the current build of BDv21 it has an issue where monsters will telefrag you if they land on top of you, but you don't need to replicate monsters flying into the air when you slide-kick them--just a sudden burst of forward speed when kick and crouch are pressed at the same time would be nice. Probably a good place to start zscripting things!
Something I'd love to see implemented--the crouch+kick slide attack. In the current build of BDv21 it has an issue where monsters will telefrag you if they land on top of you, but you don't need to replicate monsters flying into the air when you slide-kick them--just a sudden burst of forward speed when kick and crouch are pressed at the same time would be nice. Probably a good place to start zscripting things!
-
- Posts: 684
- Joined: Fri Nov 22, 2013 8:56 pm
Re: BDLite - a slimmed-down effects mod [2018-10-08]
This is a really neat project, I like what I see so far! Thanks for undertaking such a daunting thing.
-
-
- Posts: 266
- Joined: Mon Dec 28, 2015 6:22 pm
Re: BDLite - a slimmed-down effects mod [2018-10-08]
I'm fairly blazing through this now, though not enough to get together a new snapshot for the third consecutive day - I think I've nearly got all the big stuff out the way now and am moving on to the fiddly parts.
I've started a Trello board to keep track of everything, available here and added to the main post. Oddly the really big monsters are much easier to port because they haven't been altered as much
https://trello.com/b/fmJhYIlv/bdlite
I've started a Trello board to keep track of everything, available here and added to the main post. Oddly the really big monsters are much easier to port because they haven't been altered as much
https://trello.com/b/fmJhYIlv/bdlite
-
- Posts: 2810
- Joined: Thu Jun 04, 2015 9:07 pm
- Preferred Pronouns: He/Him
- Location: Killing spiders.
Re: BDLite - a slimmed-down effects mod [2018-10-08]
small question: Are you going to allow modders to make forks out of your version of BD? Giving proper credits, obviously. =p
-
- Posts: 49
- Joined: Sun Dec 03, 2017 10:44 am
- Location: Elfhelm... waiting for potatoes to get sane again.
Re: BDLite - a slimmed-down effects mod [2018-10-08]
Just a question; do you plan on optimizing it so the gore doesn't cause the game to lag?
I mean I'd like a Janitor option if possible (along with a realistic blood setting).
I mean I'd like a Janitor option if possible (along with a realistic blood setting).