News | Forum | People | FAQ | Links | Search | Register | Log in
Spiked Quakespasm Modding/Coding Help Thread
Thread for figuring out all the new particle and modding features in the "Spiked" version of Quakespasm.
-----

Actual QSS engine download:
http://triptohell.info/moodles/qss/

-----

Tutorial on how to enable rain and snow on the Quake start map:

1. Video of snow: https://youtu.be/DvqxsJChXH0
2. Video of rain: https://youtu.be/NRud8T88tDc

Steps:

1. Put this start.ent download in c:/Quake/id1/maps folder. Tells it what textures emit snow and rain.

2. Put this weather.cfg download in c:/Quake/id1/particles folder. Indicates spawn information on particles and how they behave.

3. Enter r_particledesc "weather classic"; map start in the console. I assume "weather" is the name of cfg. Also seems to work with just r_particledesc "weather".

Stuff:

Q: How do you find out the name of textures?

With Quakespasm I don't know that you can, but in Mark V just type "tool_texturepointer 1" in the console and look at a surface and it displays the name of any texture you look at on-screen. screenshot

Q: How is the external ent file made and what does it need?

Open up Mark V and type "map start". Now just type "copy ents" and the entities for the entire map is on the clipboard. Open a text editor and paste. Save it as c:/Quake/id1/maps/start.ent

The first few lines of the file look like this, add the 2 bolded lines that tell the particle system that the texture names are "sky1" for snow and "wizwood1_8" for rain.

{
"sounds" "4"
"classname" "worldspawn"
"wad" "gfx/start.wad"
"_texpart_sky1" "weather.tex_skysnow"
"_texpart_wizwood1_8" "weather.tex_skyrain
"message" "Introduction"
"worldtype" "0"
}


A devkit is also available HERE http://fte.triptohell.info/moodles/qss/QSS_DevKit.zip with source code examples of how to create your own custom HUD using CSQC. The examples show CSQC recreations of the classic HUD as well as variations for the missionpacks and should serve as a good starting point for your own creations. There's a few other goodies in there too (e.g. particle stuff), so check the readme inside the devkit.

Discord
There's now an official Discord for FTE and QSS, find it here: https://discord.gg/E6fTcgB3ev
First | Previous | Next | Last
Mac OSX Version? 
I see that there's a new version of QSS here:

https://triptohell.info/moodles/qss/

Is there an equivalent version available for OSX? What about a version running natively on the M1 Macs? 
 
Anyone knows if QSS suports semi-transparent models? Is there any way to code a translucid enemy (like a ghost) or semi-transparent weapons models (when you pick the ring of shadows)? 
 
Just setting the alpha field on an entity should work. For weapon models, try setting alpha on the player entity. (that would work in fitzquake) 
@metlslime 
Thanks!!!

This trick just work when you're making a map and set an alpha field for an entity?

Can't i set this "alpha" information on the QC file? 
Tribal: 
You can set alpha directly to on entities in the map, no mod required, and if you’re making a mod, you can define a new .float alpha and control it in QC. 
@metlslime 
Thank you so much!!

The .float alpha thing works like a charm :) 
Powerup Timer (sort Of) 
I am trying to make a kind of countdown timer display for powerups. The idea is to have five transparent overlay images for the powerup icons (Quad, Ring of Shadows etc) which cover more and more of the icon when a powerup moves towards expiration.

It's probably a rather simple task, but I don't know how to implement it via CSQC. I guess it involves nextthink since I basically need a delay every 5 seconds before the next overlay image is shown. That or there is a way to directly tap into the runtime of each powerup and use that as a base (which would be even better).

I know it has been done in some mods like Quake 1.5, but I don't quite understand how it was done there. 
Just To Specify 
I would be OK with a function doing this:

- Do nothing for 5 seconds
- Show overlay image #1
- Do nothing for 5 seconds
- Show overlay image #2
[...]

Here is an example of what I tried. I am sure it's horribly wrong (also because it doesn't work):

if (sitems & IT_QUAD)
{
entity e = spawn();
e.nextthink = time + 5;
e.think = (void()) { drawpic('272 8 0', "gfx/sba1_quad", '16 16 0', '1 1 1', 0.5, 0); };
e.nextthink = time + 5;
e.think = (void()) { drawpic('272 8 0', "gfx/sba2_quad", '16 16 0', '1 1 1', 0.5, 0); };
e.nextthink = time + 5;
e.think = (void()) { drawpic('272 8 0', "gfx/sba3_quad", '16 16 0', '1 1 1', 0.5, 0); };
e.nextthink = time + 5;
e.think = (void()) { drawpic('272 8 0', "gfx/sba4_quad", '16 16 0', '1 1 1', 0.5, 0); };
e.nextthink = time + 5;
e.think = (void()) { drawpic('272 8 0', "gfx/sba5_quad", '16 16 0', '1 1 1', 0.5, 0); };
remove(self);
Even More Specific 
Another thing I tried:

This is how I call the whole thing from another function:

if (autocvar(cl_pwrtime, 1) == 1)
PowerupTimer();

I added this function above it:

static void PowerupTimer()
{
entity ptimer = spawn();
ptimer.nextthink = time + 5;
ptimer.think = PowerGFX1;
ptimer.nextthink = time + 5;
ptimer.think = PowerGFX2;
ptimer.nextthink = time + 5;
ptimer.think = PowerGFX3;
ptimer.nextthink = time + 5;
ptimer.think = PowerGFX4;
ptimer.nextthink = time + 5;
ptimer.think = PowerGFX5;
remove(self);
};

And before that (I am not listing all functions, just the first, and only for one powerup):

static void PowerGFX1()
{
if (sitems & IT_QUAD)
drawpic(pos+'272 8 0', "gfx/sba1_quad", '16 16 0', '1 1 1', 0.5, 0);
};

There are two problems here:
- The replacement image doesn't show up ingame. Tried with text (drawstring) and it also won't work.
- I don't know how to port over the vector "pos" (it's used in the function that draws the itembar on top of the statusbar). 
SPR Replacement? 
Does QSS support replacing .tga (or other format) .spr replacers? Using the FTEQW and MarkV naming convention, it doesn't seem to work so I assume it is unavailable? Would like to know for certain though. 
 
I've encountered a bug with incorrect spawning monsters in my old map and the newer one, which is not released yet. I've tried two different revisions of qss and in them monsters spawn differently. Anyway the both revisions have that problem (2021-03-06 and 2021-09-13). I can fix it by moving monsters above the ground or in a diffrent place in trenchbroom, but it still annoying. The maps work flawlessly in Quakespasm and DarkPlaces. 
 
The map that doesn't work correctly with QSS if you want to check it:
https://www.quaddicted.com/filebase/pillars.zip

The main problem with some monsters in the teleporter closets. 
 
Also, my newer map works fine in the old revision of QSS but it's messy in the latest one. 
QSS Version? 
Have you checked out the latest version with your maps. I thought this might have been fixed but i have no idea. QSS releases can be confusing as you can read above.

No matter what these issues have affected other maps as well. 
It Would Help 
If there was a changelog on the QSS website. I assume most of the updates these days are for Quake Enhanced, but not sure. 
Dumptruck_ds 
I've tried the latest one i think, form QSS website. 
 
*from the QSS website 
@SR 
Did you already tried to change the console command:
sv_gameplayfix_setmodelrealbox ?

QSS has it turned on (1) by default, so the engine takes the real size of the enemy model instead of the size registered inside the QCs files.

I noticed that turning it off (0) can solve a lot of problems like enemies stuck in floors or walls. 
Bounding Boxes 
This problem happens because Quake has two different bounding boxes for it's MDLs. The physics box for clipping, and the geometry box for frustum culling. The physics box size needs to be what it is because of the BSP hulls.

The problem occurs when well-meaning engine coders intend to calculate an accurate culling box (which GLQuake gets wrong) but end up changing the physics box too.

The MDL format actually includes per-frame culling boxes so these don't need to be recalculated at all, they just need to be loaded and used properly. 
Sv_set_this 
Setting an undocumented cvar shouldn't be required to play a map.

How does one know about a cvar if there's no changelog and no documentation? 
@Tribal 
Tried and it didn't help. 
In The Meantime 
There have been a few updates to QSS. Maybe it got fixed? 
 
> MD3 model support, basic IQM support.

What does "basic IQM" mean? 
IQM 
Short for "Inter-Quake Model". It is (or was?) intended as a replacement for MD5 and SMD skeletal animation formats. It was used in Cube 2: Sauerbraten.

If you want to read a bit more about it:
http://sauerbraten.org/iqm/

Anyway, I don't think it's a relevant feature for the average Quake player, rather a feature to cover all bases. 
100% Crash On QSS Version 0.94.1 And Higher 
Starting from version 0.94.1 and higher the QSS engine constantly crashes when switching between replacing models with MD5 from Quake Release and standard MDL models of Quake ID1 and then loading another map or restarting. Moreover it was tested with upgraded folders (particles/progs/textures, etc.) and with a standard ID1 folder and without MD5 models. All the same, versions 0.94.1-0.94.2 100% crashes when switching and loading another map or restart. On QSS version 0.94.0, everything works fine. Who solved this problem and how? 
First | Previous | Next | Last
You must be logged in to post in this thread.
Website copyright © 2002-2024 John Fitzgibbons. All posts are copyright their respective authors.