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.
First | Previous | Next | Last
 
There's a bug in the latest win64 dev release where the 'maps' console command won't list any custom maps that are packaged inside a .pak file as opposed to being in /game/maps/. Noticed this behaviour with smej2, dwell and AD 1.8.

For future reference, is the github repository at https://github.com/Shpoike/Quakespasm/ the best way to report any issues?

I absolutely adore QSS, but I wish there were release dates and version numbers for the binaries on the website. I was using a very outdated binary until some issues with AD 1.8 pushed me to investigate more deeply, because every time I checked the website I saw "Release (0.93.2ish)" and assumed that the port was inactive. 
New Dev Release Of QSS Is Live 
and it sounds like Spike (Shpoike(?)- correct me, please) decided to refuse “official” releases and “dev” now there is an official? Changes, as usual unknown, but we are keep in mind about improvements by design ;) 
Somthing Wrong With Sound 
Something wrong with last builds of QSS in Arcane Dimensions. While playing two sounds at once engine is muted sound definitely for time they duration. 
Thanks, Spyike 
for quick response and fixing sound issue! 
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. 
First | Previous | Next | Last
You must be logged in to post in this thread.
Website copyright © 2002-2021 John Fitzgibbons. All posts are copyright their respective authors.