I saw that this is possible in Brutal Doom, i know that it works with 3d models and some actors like "DetectFloorBullet" or "DetectCeilBullet" but i don´t know what to do with this stuff, someone can help me?
Re: Help - Bulletholes in ceilings and floors
Posted: Wed May 16, 2018 11:52 pm
by ramon.dexter
Crack open brutal doom pk3 and take a look yourself. But I dont recommend you doing it in brutal dooms way, since its incredibly hacky...
Re: Help - Bulletholes in ceilings and floors
Posted: Thu May 17, 2018 9:29 am
by Niphura
ramon.dexter wrote:Crack open brutal doom pk3 and take a look yourself. But I dont recommend you doing it in brutal dooms way, since its incredibly hacky...
Is there any other way? i already checked the pk3 but i have no clue on how to make the bulletholes appears in ceilings and floors
Re: Help - Bulletholes in ceilings and floors
Posted: Thu May 17, 2018 9:41 am
by Caligari87
Very simply: Since we can't have real decals on floors/ceilings, a way to fake it is to use flatsprites or 3D models that look like bullet holes. When the bullet hits a floor or ceiling instead of a wall, it spawns the fake bullethole actor.
Re: Help - Bulletholes in ceilings and floors
Posted: Thu May 17, 2018 9:44 am
by m8f
I don't know how it is implemented in Brutal Doom, but this is how it's done in Complex Doom:
Spoiler:
1. First, a gun fires bullets with custom puff:
Weapons.dec:
...
ACTOR ModdedBulletPuff replaces BulletPuff
{
Radius 0
Height 0
Scale 0.75
RenderStyle Translucent
Alpha 0.5
+NOBLOCKMAP
+NOGRAVITY
+ALLOWPARTICLES
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("DetectFloorPuff",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
TNT1 A 0 A_SpawnItemEx("DetectCeilingPuff",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
...
3. Then DetectFloorPuff checks floor, and if it is on floor, spawns an actor that looks like a decal (FloorPuffDecal).
DetectCeilingPuff does the same thing, but for ceiling.
ACTOR DetectFloorPuff
{
Radius 1
Height 4
+MISSILE
+NOTELEPORT
+NOBLOCKMAP
+THRUACTORS
+MOVEWITHSECTOR
+NODAMAGETHRUST
-DONTSPLASH
States
{
Spawn:
TNT1 A 4
Stop
Death:
TNT1 A 0 A_CheckFloor("FloorPuff")
Stop
FloorPuff:
TNT1 A 0 A_SpawnItemEx("FloorPuffDecal",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
Stop
}
}
Re: Help - Bulletholes in ceilings and floors
Posted: Thu May 17, 2018 11:05 am
by ramon.dexter
m8f: Yeah, you have more cleaner way. BrutalDoom uses ACS to furtherly detect what surface is being hit and spawns according puff/effect. Originally I wanted to use something like that, but when I found out how it's done, I dumped it completely - it looks too resource-heavy.
Re: Help - Bulletholes in ceilings and floors
Posted: Thu May 17, 2018 6:30 pm
by Niphura
m8f wrote:I don't know how it is implemented in Brutal Doom, but this is how it's done in Complex Doom:
Spoiler:
1. First, a gun fires bullets with custom puff:
Weapons.dec:
...
ACTOR ModdedBulletPuff replaces BulletPuff
{
Radius 0
Height 0
Scale 0.75
RenderStyle Translucent
Alpha 0.5
+NOBLOCKMAP
+NOGRAVITY
+ALLOWPARTICLES
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("DetectFloorPuff",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
TNT1 A 0 A_SpawnItemEx("DetectCeilingPuff",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
...
3. Then DetectFloorPuff checks floor, and if it is on floor, spawns an actor that looks like a decal (FloorPuffDecal).
DetectCeilingPuff does the same thing, but for ceiling.
...
ACTOR ModdedBulletPuff replaces BulletPuff
{
Radius 0
Height 0
Scale 0.75
RenderStyle Translucent
Alpha 0.5
+NOBLOCKMAP
+NOGRAVITY
+ALLOWPARTICLES
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("DetectFloorPuff",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
TNT1 A 0 A_SpawnItemEx("DetectCeilingPuff",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
...
3. Then DetectFloorPuff checks floor, and if it is on floor, spawns an actor that looks like a decal (FloorPuffDecal).
DetectCeilingPuff does the same thing, but for ceiling.
ACTOR DetectFloorPuff
{
Radius 1
Height 4
+MISSILE
+NOTELEPORT
+NOBLOCKMAP
+THRUACTORS
+MOVEWITHSECTOR
+NODAMAGETHRUST
-DONTSPLASH
States
{
Spawn:
TNT1 A 4
Stop
Death:
TNT1 A 0 A_CheckFloor("FloorPuff")
Stop
FloorPuff:
TNT1 A 0 A_SpawnItemEx("FloorPuffDecal",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
Stop
}
}
What does this line mean? SXF_NOCHECKPOSITION|SXF_CLIENTSIDE, it´s necessary to put it if i define a different Actor decal?
Also...how would the Decal actor look like?