BDLite - a slimmed-down effects mod [BETA 2018-11-12]

Projects that alter game functions but do not include new maps belong here.
Forum rules
The Projects forums are ONLY for YOUR 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.

Re: BDLite - a slimmed-down effects mod [2018-10-15]

Postby Dwailing » Wed Oct 17, 2018 9:21 pm

It seems like the fists don't work anymore while the HUD IS working correctly. *scratches head*

Also, on the subject of feedback, the chainsaw feels kind of underwhelming right now. It kills things quickly, but it doesn't seem to make much gore, which is very disappointing.
Dwailing
 
Joined: 28 Jun 2017
Discord: 5896

Re: BDLite - a slimmed-down effects mod [2018-10-15]

Postby NovaRain » Wed Oct 17, 2018 10:58 pm

Is it intended that alt fire (kick) alerts enemies?
User avatar
NovaRain
 
Joined: 20 Jan 2013

Re: BDLite - a slimmed-down effects mod [2018-10-15]

Postby bisousbisous » Thu Oct 18, 2018 1:19 pm

fuck year this is what ive always wanted
User avatar
bisousbisous
 
Joined: 03 Jun 2017

Re: BDLite - a slimmed-down effects mod [2018-10-15]

Postby DavidN » Thu Oct 18, 2018 8:24 pm

I fixed a ton of busywork things and details today, including:

- The return of the "janitor" option that deletes gibs after a while! It's under "Gibs Fade" in the Display Options menu. It works by having each gib actor briefly display its own "lying around" frame (for example, a leg on the ground or half a ribcage), and then jumping into the parent BdGib which will look at the janitor CVar. It uses the "----" pseudo-sprite (which I didn't know existed until midway through this project!) to preserve the look of the gib after calling this label, and depending on whether the CVar was set or not, will either stay in that sprite indefinitely or fade after a while.

Code: Select allExpand view
   States
   {
    Spawn:
      TNT1 A 0 A_SpawnItem("BdBloodSpot",0,0,0,1)
      TNT1 A 0 A_SetUserVar("user_rotationspeed", random(30, 50))
      TNT1 A 0 A_SetUserVar("user_rotationspeed", user_rotationspeed * ((random(0,1)*2)-1)) //Randomly -1 or 1!
      TNT1 A 0 A_Jump(256, "Fly")
   Lying:
      "----" A 1 A_JumpIf(GetCVar("bd_janitor") == 1, "Expiring") //If the janitor cvar is on, skip the infinite frame and go away after a random time instead
      "----" A -1
   Expiring:
      "----" A random(60, 600)
      TNT1 A 0 A_SpawnItemEx("CoolAndNewFlameTrailsLong", 0, 0, 0, 0, 0, 0)
      Stop      
   }


- Added a custom HUD definition to squeeze the carried grenades on to there.
- Fixed the blood actors so that the chainsaw spawns a lot more blood :)

I'm still procrastinating on the effect reclassification because there are just so many of them - at least with the weapons and monsters I had a well defined end point where they were all done. For the effects, it's more like just straightening things out until they look somewhat reasonable.

The kick wasn't intended to alert enemies, it's a side effect of now being an alternative fire on weapons that do alert enemies... I'm not sure how best to avoid this at the current time.
User avatar
DavidN
 
Joined: 28 Dec 2015

Re: BDLite - a slimmed-down effects mod [2018-10-18]

Postby zrrion the insect » Fri Oct 19, 2018 7:20 am

I think the way I have done it in the past is that you make all weapons not alert enemies, and use A_AlertMonsters where needed to make things alert monsters again.
User avatar
zrrion the insect
Like a fish in a child's hands.
 
Joined: 25 Jun 2009
Location: Time Station 1: Moon of Glendale

Re: BDLite - a slimmed-down effects mod [2018-10-18]

Postby DavidN » Fri Oct 19, 2018 8:42 pm

That could be a good idea... it complicates the weapon implementation just slightly, but I do like the idea of punches/kicks being silent. It would also allow the chainsaw to continuously alert enemies even when not firing. I'll think about it, thanks :)

I've been meaning to write this one for a while!

Blood!
If you've played Brutal Doom, you've probably noticed that it contains a certain amount of blood and gore. This is reflected in the PK3 contents, where actors to support this are spread throughout BLOOD.TXT, BLOODSPLASH.TXT, DEAD.TXT, GORE!!!.TXT, GORE2.TXT, GORE3.TXT and many others - and that's before taking into account the decals and the models to simulate floor decals. These text files variously describe classes with names like MuchBlood2, BloodTr255 and XDeathHalfImpUpperPart32. Faced with this, I began experimenting by looking at one of the sergeant's death sequences and using the SUMMON command in-game to look at the spawned classes individually - but having got a vague idea of what about three of the classes were doing from that, I basically chose to throw the entire collection out and build it up again from scratch.

The amount of detail in the original gore library is... insane, for want of a better term - there's a vast collection of distinct organs and microgiblets that are spawned depending on the monster and the manner of violent death, all inheriting from each other in arcane patterns that I wasn't able to identify. As a side effect of the complexity, it's been overlooked that many of the spawned classes are missing some of their sprites, meaning that some don't have the intended effect at all. On the grounds that a player is never going to notice 99% of the detail unless they're wandering around with a clipboard taking inventory of the individual pieces like a crime scene doctor, I opted to greatly simplify the entire system using only a few of the giant collection of body parts available.

The BDLite hierarchy has been pared down to just four families and looks like this.

Image

I'll explain the smaller ones first and then move on to the main hierarchy.

BdBleed contains the actors spawned when monsters are hurt, replacing Doom's original Blood object - these are invisible classes that spawn a variety of the effects below. They're defined in the BloodType of a monster, which has three variations - Blood, BloodSplatter and AxeBlood. Those last two are used mostly by Heretic/Hexen when a weapon uses the BLOODSPLATTER or AXEBLOOD flag - BDLite just uses the same blood type for the first two, but uses BleedSaw for the AxeBlood replacement when using the chainsaw to produce a stronger blood effect.

BdBloodHitEffect is a class spawned by BdBleed, a splash of blood to show impact.

BdBloodSpot are the actors that use models to simulate decals on the floor. There are just four variations - blue, red and whether the spot is small or a spreading pool. The spreading pool was used quite a lot in Brutal Doom, but I've limited it more here and it's usually only used for melting/plasma deaths.

BdBlood is the base class for the actual effects, and for this one I haven't included the subclasses beyond the first layer - each of them has a couple of variations below for blue blood or being drawn slightly larger. This is a point where I would really have liked the opportunity to pass parameters into actors when they're created - I considered abusing the Angle property or something for this but quickly decided that that would make things needlessly confusing. Its immediate subclasses are:

BdFlyingBlood - A drop of flying blood to be sprayed out from an enemy using A_FireProjectile. They leave blood spots behind when they land.

BdFlyingBloodTrail - These are small actors that hang in the air behind flying blood and body parts, giving more 'weight' to their appearance. They can also be used as projectiles if you want small splashes.

BdBloodDrop - A lot like BdFlyingBlood but much smaller, for shorter-range blood effects.

BdBloodDropTrail - As above, the equivalent of BdFlyingBloodTrail

BdBloodLump - Mini-gibs which splat to the ground and stay there - otherwise similar to BdFlyingBlood.

BdBloodSpawner* - These classes act as shortcuts for spawning a lot of different actors to represent large splashes, typically used when a monster dies in a particularly violent way. There are different size variations for the human enemies all the way up to the bosses, spawning more blood as you go up. Usually for a death sequence, this is the class you want to spawn, with additional effects added as you choose.

BdGib - Is a bit more involved. These represent the individual flying body parts that Brutal Doom was so fascinated by, though in a more manageable form. In the original code, all of these were spread out everywhere and had various undetectable differences between them - now, they're all consolidated in one dedicated file under one parent class. There are still about 60 variations, making this the biggest subset of the blood actors.

All gibs are objects that spin through the air (using the actor roll property with the +ROLLSPRITE flag) and land on the ground, where they check if the Janitor CVAR is on and then either enter an infinite state or hang around for a while before disappearing. The vast bulk of all of this is handled in the BdGib base class, which sets a random rotation speed and then leaves the subclass to handle its own display and flight before it lands.

I explained a bit about gibs in the previous post when I mentioned the janitor CVAR - the base class looks like this:

Code: Select allExpand view
ACTOR BdGib : BdBlood
{
   var int user_rotationspeed;

    Radius 8
    Height 8
   
   Speed 10
   Gravity 0.6
   Mass 4
   Decal BrutalBloodSplat
   BounceFactor 0.01
   +DOOMBOUNCE
    +MOVEWITHSECTOR
   +ROLLSPRITE
   +ROLLCENTER
   -RANDOMIZE
   States
   {
    Spawn:
      TNT1 A 0 A_SpawnItem("BdBloodSpot",0,0,0,1)
      TNT1 A 0 A_SetUserVar("user_rotationspeed", random(30, 50))
      TNT1 A 0 A_SetUserVar("user_rotationspeed", user_rotationspeed * ((random(0,1)*2)-1)) //Randomly -1 or 1!
      TNT1 A 0 A_Jump(256, "Fly")
   Lying:
      "----" A 1 A_JumpIf(GetCVar("bd_janitor") == 1, "Expiring") //If the janitor cvar is on, skip the infinite frame and go away after a random time instead
      "----" A -1
   Expiring:
      "----" A random(60, 600)
      TNT1 A 0 A_SpawnItemEx("CoolAndNewFlameTrailsLong", 0, 0, 0, 0, 0, 0)
      Stop      
   }
}


This is standard behaviour for all gibs - all each individual one has to do is implement its own Fly and Death states (Death being called when it lands on the ground). Here's one for the imp's arm.

Code: Select allExpand view
ACTOR BdGibImpArm : BdGib
{
    States
    {
   Fly:
      HND4 A 4 A_SpawnProjectile("BdFlyingBloodTrailStrong", 0, 0, random (0, 360), 2, random (0, 360))
      TNT1 A 0 A_SetRoll(roll + user_rotationspeed)
      Loop
    Death:
        TNT1 A 0 A_SpawnItem("BdBloodSpot",0,0,0,1)
        TNT1 AAA 0 A_CustomMissile ("BdFlyingBloodSmall", 0, 0, random (0, 360), CMF_AIMDIRECTION, random (0, 160))
      TNT1 A 0 A_SetRoll(0)
      HND4 A 1
      Goto Lying
    }
}


A Fly state that leaves some type of blood trail as it moves, a Death state that spawns a blood spot and optionally some extra splats, and that's really it - they're simple to implement for new monsters if you need ones that look unique.
User avatar
DavidN
 
Joined: 28 Dec 2015

Re: BDLite - a slimmed-down effects mod [2018-10-18]

Postby YukesVonFaust » Fri Oct 19, 2018 8:50 pm

this is pretty good so far.

but there's only one thing that bugs me:
the zombies are using the same "grunt/sight, grunt/pain, grunt/death" ones.
will you fix that one too?
User avatar
YukesVonFaust
Hard-as-Nails Merc around these parts.
 
Joined: 09 Feb 2015
Location: Zutula
Discord: YukesVonFaust#9009

Re: BDLite - a slimmed-down effects mod [2018-10-18]

Postby Smashhacker » Sun Oct 21, 2018 10:33 pm

I noticed that Pinky demons always perform the arm dismemberment death animation whenever they are killed with the regular shotgun. Could you make it so they actually have more than one death animation when killed with the shotgun?
Smashhacker
 
Joined: 31 May 2016

Re: BDLite - a slimmed-down effects mod [2018-10-18]

Postby SHayden » Mon Oct 22, 2018 1:58 am

I tried playing it, I tried to enjoy it...but I just can't. Mod is good itself very good and smooth, found no bugs whatsoever(although keycards and skulls didn't work on levels other than the original doom wads, or even on the psx TC so I had to cheat and give myself keys idk what's up with that), I would say it's like someone offering me the real coke and diet one, and this is like the diet coke and if I could choose I would take the real thing every time. Idk, also you can't stop reloading shotgun in the middle of reloading so if you're caught reloading around a massive horde you just get slaughtered. I will keep it though, it's still better than vanilla doom and brutal doom is too much for some maps(like unloved) but this is just fine. I sincerely hope the key problem and shotgun reloading will be fixed but no rushing.
User avatar
SHayden
( ͡° ͜ʖ ͡°)
 
Joined: 28 Jan 2017
Location: Searching for appropriate knife....
Discord: SHayden#5626

Re: BDLite - a slimmed-down effects mod [2018-10-18]

Postby DavidN » Mon Oct 22, 2018 7:09 pm

Thanks for bringing that up, SHayden - which mods were you trying that had non-working keys? I've defined the Species of the new keys so they should be usable in the normal locks, but I might have messed up some definition somewhere.

Edit: I see the problem, the PSX TC clears all the lock definitions and defines its own that can only be opened with the PSXRedCard etc... I'm not sure if there's a good way to get around this other than by having BDLite clear all the lockdefs again and put my own definitions in. Really, though, I wouldn't recommend trying to run this on top of anything else that's a total conversion, it replaces too much.
Last edited by DavidN on Mon Oct 22, 2018 8:32 pm, edited 2 times in total.
User avatar
DavidN
 
Joined: 28 Dec 2015

Re: BDLite - a slimmed-down effects mod [2018-10-18]

Postby DavidN » Mon Oct 22, 2018 7:29 pm

Smashhacker wrote:I noticed that Pinky demons always perform the arm dismemberment death animation whenever they are killed with the regular shotgun. Could you make it so they actually have more than one death animation when killed with the shotgun?


I can, and this is a nice opportunity to demonstrate how easy it is :) The demon's DECORATE for dying by shotgun is:

Code: Select allExpand view
   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, "DieArmOff")


To add more variety here, all that's needed is to add some more of the available Die states to that last line.

Code: Select allExpand view
      TNT1 A 0 A_Jump(256, "DieArmOff", "DieNormal", "DieNormal2")


Like other Die states, the DieArmOff state spawns the gibs and performs the animation, but it also has a quarter of a chance of having the demon survive and run around with one arm off - so this has the side effect of changing the gameplay a little, making the one-armed demon rarer. However, other Die states shouldn't have that problem.

I'm pretty much finished with tidying up the effects now, but in a very "To hell with it, that'll do" way rather than the more comprehensive rewrite that I gave to the weapons, monsters and blood code - there's a lot of it there and it's proved a bigger task than I thought. Nevertheless, I've got rid of some of the worst of the performance issues (significantly, those caused by the water splashes) and am just about comfortable with saying that's enough. A new snapshot is up now.
User avatar
DavidN
 
Joined: 28 Dec 2015

Re: BDLite - a slimmed-down effects mod [2018-10-22]

Postby TheEternalStruggler » Mon Oct 22, 2018 7:56 pm

Just a silly question... can we expect to see the Pistol as an addon anytime soon?
User avatar
TheEternalStruggler
 
Joined: 03 Dec 2017
Location: Elfhelm... waiting for potatoes to get sane again.
Discord: #5236

Re: BDLite - a slimmed-down effects mod [2018-10-22]

Postby Samarai1000 » Thu Oct 25, 2018 4:35 pm

I have a silly question of my own, as well! I notice that when firing the pump shotgun, after the firing animation finishes it goes to the cocking animation. But there doesn't seem to be any transition between when the shotgun is in the 'firing' position and the 'pumping' position. If there's any way to describe it, look at how when the pump animation finishes, Doomguy lowers the shotgun back down to the firing position. Is it intentional that it snaps, or is it that just not something that's been worked on yet due to the mod still being worked on in many different areas?
Samarai1000
 
Joined: 25 Sep 2016

Re: BDLite - a slimmed-down effects mod [2018-10-22]

Postby DavidN » Thu Oct 25, 2018 9:03 pm

All comments are welcome, because there are so many nooks and crannies in this project that I'm bound to miss things! I see the problem with the shotgun - adding just one frame to transition between the shooting and pumping states makes it look a lot smoother, and I've fixed that and other things in the latest snapshot :) I will take up the challenge of adding a pistol weapon and write about how to do it soon!

The major update for this snapshot is, again, something that isn't all that visible to the player - I had a day off work today and completely wasted it by overhauling the sound definitions. At this point, to describe the SNDINFO file as an absolute bus-crash would be somewhat repetitive - it's full of things that are double-defined, references to sound lumps that don't exist and so on. But to be fair, referring to sounds that are limited to eight-character lump names is bound to get confusing very quickly - so I redid their folder structure and converted the whole file to use full path names.

Code: Select allExpand view
/////////
// Player
/////////

player/scream             "sounds/doomguy/doomguy-death.ogg"
player/glassbreak         "sounds/doomguy/doomguy-break.ogg"
player/pain               "sounds/doomguy/doomguy-pain"

///////////
// Monsters
///////////

monsters/imp/charge       "sounds/monsters/imp-charge.ogg"
monsters/imp/melee1       "sounds/monsters/imp-claw-1"
monsters/imp/melee2       "sounds/monsters/imp-claw-2"
monsters/imp/melee3       "sounds/monsters/imp-claw-3"
$random monsters/imp/melee { monsters/imp/melee1 monsters/imp/melee2 monsters/imp/melee3 }

monsters/cyberdemon/fire  "sounds/monsters/cyberdemon-fire"
$rolloff monsters/cyberdemon/fire 600 2400


Just making things consistent and sanely grouping them together can make a world of difference to the readability of the file, and of the defined sound names - now, it's reasonably possible to recognize a sound by its name instead of having to decipher DSSPLSML and DSPODTH3. This was a risky and large change because it involved renaming a lot of things in the chain - the actual file name, the sound definition, any definitions that derive from that definition (such as $random sounds) and then the references to those sounds from the actors in A_PlaySound or the SeeSound properties. After breaking several things as I fumbled my way through, I took the chance to patch up some sounds that had been missing from before as well, and I think it ended up being just about worth it.
User avatar
DavidN
 
Joined: 28 Dec 2015

Re: BDLite - a slimmed-down effects mod [2018-10-25]

Postby Doctrine Gamer » Mon Oct 29, 2018 8:13 pm

Your version of Brutal Doom is the most optimized I've ever played, congratulations, great work friend.
Is there also Janitor's Option for the blood on the wall in The Future?
User avatar
Doctrine Gamer
Holger Danilchenko
 
Joined: 30 Jan 2013

PreviousNext

Return to Gameplay Mods

Who is online

Users browsing this forum: DotBot, Gorec, TheLightBad96 and 6 guests