README update, a couple other things, and more partial progress on the Visual Thinker migration.

This commit is contained in:
Mari the Deer 2025-04-28 10:08:05 +02:00
commit fb835a478f
7 changed files with 68 additions and 85 deletions

View file

@ -54,21 +54,25 @@ Recommended settings are as follows:
- **Textures:** Filtering set to either "`None`" or "`None (Trilinear)`". Textures are meant to be chunky.
- **Post-processing:**
- Bloom is recommended at minimum, FXAA should be fine as well.
- Only enable SSAO if you have beefy hardware, it's expensive *(though it doesn't look that great)*.
- Only enable SSAO if you have *REALLY* beefy hardware, it's expensive *(though it doesn't look that great)*.
- It is not advised to use VKDoom's tonemap filters, as they can cause glitches with some visual effects.
- For other post-processing, use [MariFX](https://git.marisa.pw/OrdinaryMagician/marifx_m) *(shameless self-plug)*.
- **Lighting:**
- Dynamic lights must be enabled, or you'll be missing out on a lot.
- It's advised to use "`Classic`" sector lighting, as other modes may over-brighten weapon models.
- If affordable by the hardware, raytraced shadows are recommended *(don't use the "precise" options unless you have a 30xx series card or higher)*.
- With RT shadows, keeping the shadow quality at "`Nearest`" is recommended. That setting has a much higher performance hit when not using regular shadow mapping.
- "`GPU (Per-pixel)`" sprite lighting is also recommended on high-end hardware, though do note that this may cause performance issues on slaughtermaps *(I mean, that's kind of expected)*.
- **Audio:**
- Increasing sound channels to their maximum limit is advised.
- HRTF is not recommended, it may result in excessive CPU usage.
- HRTF is not recommended, it may result in excessive CPU usage and lower quality full-stereo SFX.
This was verified to run smoothly on the Steam Deck *(rarely if ever dips below 60 FPS in combat unless playing geometrically dense maps)*. Still, it is not really possible to bind *ALL* controls beyond the bare essentials, *(this might be addressed in the future)*, and setting up VKDoom itself on the Deck is complicated as well, but the devs are working on that, [last I checked](https://bsky.app/profile/vkdoom.bsky.social/post/3lgarbh5phs2s).
This was verified to run smoothly on the Steam Deck *(rarely if ever dips below 60 FPS in combat unless playing geometrically dense maps)*. Still, it is not really possible to bind *ALL* controls beyond the bare essentials, *(this might be addressed in the future)*, note that for the time being, VKDoom has to be installed on the Deck through an [unofficial flatpak repo](https://github.com/fpiesche/flatpak-builds).
*(Testers are welcome for narrowing down more precise hardware requirements)*
*(If you're going to be playing slaughtermaps with this, these specs and settings may not be enough, duh)*
---
## The Demolitionist

View file

@ -1,3 +1,3 @@
[default]
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r1211 \cu(vie 04 abr 2025 20:51:37 CEST)\c-";
SWWM_SHORTVER="\cw1.3pre r1211 \cu(2025-04-04 20:51:37)\c-";
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r1212 \cu(lun 28 abr 2025 10:08:05 CEST)\c-";
SWWM_SHORTVER="\cw1.3pre r1212 \cu(2025-04-28 10:08:05)\c-";

View file

@ -15,23 +15,23 @@ Weapon models:
Ammo models:
x Plasma Ammo
- SMW.05 Ammo
- Single
- Beta speedloader
- Gamma mag
- 1/2/3 Round(s)
- Beta Speedloader
- Gamma Mag
x Sheen Ammo
x 1/2/3 Rounds
x 1/2/3 Round(s)
x 10 Pack
x 50 Box
x Quadravol Ammo
½ Sparkster Ammo
½ Kinylum Round
½ Nokron Round
½ 1/2/3 Kinylum Round(s)
½ 1/2/3 Nokron Round(s)
x Mortal Rifle Ammo
x Round
x 1/2/3/5 Round(s)
x Mag
x Grenade
- Ray-Khom Ammo
- Single
- 1/2/5 Round(s)
- Mag
- Rafan-Kos Ammo
- Pod
@ -42,10 +42,10 @@ Collectible models:
# Misc
Gib models:
- Meat chunk [0/3]
- Meat chunk w/ bone [0/3]
- Nondescript organ [0/2]
Less generic gib models:
- Meat Chunk [0/3]
- Meat Chunk w/ Bone [0/3]
- Heart/Liver/Stomach [0/3]
Gag gib models:
x Steak
@ -68,8 +68,11 @@ New stuff:
- Battle-Boi Sentry
Extra models:
- Hexen keys
- Hexen puzzle items
- Hexen keys [0/11]
- Hexen puzzle items [0/9]
Collectible models:
- Blåhaj
Character models:
- White Lady

View file

@ -124,22 +124,26 @@ GameInfo
"graphics/M_DEMOCHAN_QUADRAVOL.png",
"graphics/M_DEMOCHAN_MISTER.png",
// preload canvas textures for some weapons
"models/PlasmaLED_L.png",
"models/PlasmaLED_R.png",
"models/canvas/NukuriFnt.png",
"models/canvas/PlasmaLED_L.png",
"models/canvas/PlasmaLED_R.png",
"models/canvas/SheenLEDBar.png",
"models/SheenLED.png",
"models/canvas/SheenLEDBase.png",
"models/canvas/SheenLEDBar.png",
"models/canvas/SheenLEDNums.png",
"models/canvas/SheenLEDSpeed.png",
"models/QuadLED.png",
"models/canvas/QuadLEDBase.png",
"models/canvas/QuadLEDCharge.png",
"models/canvas/QuadLEDRound.png",
"models/canvas/RayZap.png",
"models/MortalLED.png",
"models/canvas/MortalBG.png",
"models/canvas/MortalFireIcons.png",
"models/canvas/MortalFlatChars.png",
"models/canvas/MortalFrameTex.png",
"models/canvas/MortalFireIcons.png",
"models/canvas/MortalGrenadeIcons.png",
"models/MortalLED2.png",
"models/canvas/MortalFlatChars.png",
// preload a few random materials to ensure shaders are compiled
// CanvasProxy.fp, NewLogoAnimated.fp and TexFilterHack.fp
// should already be handled by previous textures in the list

View file

@ -286,11 +286,7 @@ Class KirinPlushGesture : SWWMItemGesture
SWWMHandler.DoFlash(self,Color(24,255,128,128),30);
int numpt = Random[ExploS](6,9);
for ( int i=0; i<numpt; i++ )
{
let s = Spawn('LoveHeartSparkle',Vec3Offset(FRandom[ExploS](-.8,.8)*radius,FRandom[ExploS](-.8,.8)*radius,FRandom[ExploS](.1,.9)*height));
s.angle = FRandom[ExploS](0,360);
s.pitch = FRandom[ExploS](-90,90);
}
SWWMStaticSprite.SpawnAt('LoveHeartSparkle',Vec3Offset(FRandom[ExploS](-.8,.8)*radius,FRandom[ExploS](-.8,.8)*radius,FRandom[ExploS](.1,.9)*height));
int givehp = (Health<=25)?25:(Health<=50)?15:(Health<=100)?10:5;
if ( GiveBody(givehp,200) ) SWWMHandler.DoFlash(self,Color(32,224,128,255),10);
}

View file

@ -208,11 +208,7 @@ Class SWWMGesture : SWWMWeapon
Vector3 dir = SWWMUtility.Vec3FromAngles(angle,pitch);
Vector3 patpos = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz-4),dir*30.);
for ( int i=0; i<numpt; i++ )
{
let s = Spawn('LoveHeartSparkle',patpos);
s.angle = FRandom[ExploS](0,360);
s.pitch = FRandom[ExploS](-90,90);
}
SWWMStaticSprite.SpawnAt('LoveHeartSparkle',patpos);
if ( pt.target && pt.target.bSHOOTABLE )
{
int healamt = 10;

View file

@ -1,56 +1,45 @@
// gesture effects
Class LoveHeartTrail : SWWMNonInteractiveActor
Class LoveHeartTrail : SWWMStaticSprite
{
Default
override void SetupSprite()
{
RenderStyle 'Add';
Alpha .1;
+FORCEXYBILLBOARD;
Super.SetupSprite();
texture = TexMan.CheckForTexture("DOKIA0");
SetRenderStyle(STYLE_Add);
Alpha = .1;
}
override void Tick()
override void OnTick()
{
if ( freezetics > 0 )
{
freezetics--;
return;
}
if ( isFrozen() ) return;
A_FadeOut(.01);
scale *= .95;
}
States
{
Spawn:
DOKI A -1 Bright;
Stop;
Alpha = max(0.,Alpha-.01);
if ( Alpha <= 0. )
Destroy();
}
}
Class LoveHeartSparkle : SWWMNonInteractiveActor
Class LoveHeartSparkle : SWWMStaticSprite
{
Default
double scalestep, fadestep;
override void SetupSprite()
{
Scale .03;
+FORCEXYBILLBOARD;
Super.SetupSprite();
texture = TexMan.CheckForTexture("DOKIA0");
Scale = (.03,.03);
Alpha = .5;
}
override void PostBeginPlay()
{
Scale *= FRandom[ExploS](.75,1.5);
specialf1 = FRandom[ExploS](.95,.98);
specialf2 = FRandom[ExploS](.01,.03);
vel = SWWMUtility.Vec3FromAngles(angle,pitch)*FRandom[ExploS](2,8);
scalestep = FRandom[ExploS](.95,.98);
fadestep = FRandom[ExploS](.01,.03);
double ang = FRandom[ExploS](0,360);
double pt = FRandom[ExploS](-90,90);
vel = SWWMUtility.Vec3FromAngles(ang,pt)*FRandom[ExploS](2,8);
}
override void Tick()
override void OnTick()
{
if ( freezetics > 0 )
{
freezetics--;
return;
}
if ( isFrozen() ) return;
A_SetScale(scale.x*specialf1);
A_FadeOut(specialf2);
Vector3 dir = vel;
double magvel = dir.length();
magvel *= .99;
@ -60,13 +49,10 @@ Class LoveHeartSparkle : SWWMNonInteractiveActor
dir += .2*SWWMUtility.Vec3FromAngles(FRandom[ExploS](0,360),FRandom[ExploS](-90,90));
vel = dir.unit()*magvel;
}
SetOrigin(level.Vec3Offset(pos,vel),true);
}
States
{
Spawn:
DOKI A -1 Bright;
Stop;
Scale *= scalestep;
Alpha = max(0.,Alpha-fadestep);
if ( Alpha <= 0. )
Destroy();
}
}
@ -188,16 +174,12 @@ Class LoveHeart : Actor
for ( int i=2; i<6; i++ )
{
Vector3 dir2 = vel.unit();
let t = Spawn('LoveHeartTrail',level.Vec3Offset(pos,-dir2*steppy*i));
let t = SWWMStaticSprite.SpawnAt('LoveHeartTrail',level.Vec3Offset(pos,-dir2*steppy*i));
t.scale = scale;
}
int numpt = Random[ExploS](1,3);
for ( int i=0; i<numpt; i++ )
{
let s = Spawn('LoveHeartSparkle',pos);
s.angle = FRandom[ExploS](0,360);
s.pitch = FRandom[ExploS](-90,90);
}
SWWMStaticSprite.SpawnAt('LoveHeartSparkle',pos);
if ( !tracer || (tracer.Health <= 0) ) return;
double mag = vel.length();
vel = mag*(level.Vec3Diff(pos,tracer.Vec3Offset(0,0,tracer.height/2)).unit()*mag*6./GameTicRate+vel).unit();
@ -472,9 +454,7 @@ Class LoveHeart : Actor
numpt = Random[ExploS](40,50);
for ( int i=0; i<numpt; i++ )
{
let s = Spawn('LoveHeartSparkle',pos);
s.angle = FRandom[ExploS](0,360);
s.pitch = FRandom[ExploS](-90,90);
let s = SWWMStaticSprite.SpawnAt('LoveHeartSparkle',pos);
s.scale *= RandomPick[ExploS](1,3);
s.alpha *= 2;
}