News | Forum | People | FAQ | Links | Search | Register | Log in
Quakespasm Engine
This engine needs its own thread.

Feedback: I like the OS X version, but I have to start it from the terminal for it to work and can't just double-click it like a traditional OS X app. I'm sure you guys already know this, either way great engine.

http://quakespasm.sourceforge.net/
First | Previous | Next | Last
 
@Poorchop:
setting r_scale to a higher number but that just makes everything look really blurry instead of crispy and chunky, and I can't find any other scaling settings apart from scaling the HUD.
This should make QS render to a half-sized framebuffer (for r_scale 2) and scale it up with nearest interpolation, so each original pixel becomes a 2x2 square. There shouldn't be blurring in the upscaling. If it is actually blurring the pixels together, mind posting your system info / screenshot?

It's not difficult to do, just that it absolutely needs fragment shaders, which might be a step too far for some.
QS 0.93's world faces and alias models go through fragment shaders, so just water, sprites, particles, sky, and anything else I'm forgetting use fixed-function at the moment.

I do want to implement this at some point! (I tried a quick hack a year or so ago, that postprocesses the final 32-bit rendered frame. What I did was make a lookup table from rgb565 to the nearest Quake palette color, then just feed in a 32-bit pixel, decimate it to 16-bit (565), then lookup the nearest Quake color and output that). As Kinn was saying, palletizing a 32-bit rendered image that has fog already baked in tends to look like mud, so this needs to go into the fragment shader before fog is added.

The faster / more natural / software faithful way of doing it is to ignore colored lighting and use the colormap.lmp just like software, having the fragment shader read the textures as 8-bit. Another option is to support colored lighting by blending with the lightmap in 32-bit, the using the rgb565 lookup table to convert that to paletted. 
 
Oops you actually mentioned r_scale!

Hmm I haven't had any blurriness issues with that, assuming the necessary setting of gl_texturemode. 
Wrong Word Choice 
Maybe saying that it looks blurry was the wrong choice of words because it does appear to be doing exactly what you mentioned. It just doesn't look like upscaled WinQuake, which is what I was kind of hoping. I guess I went with blurry because when moving around, it kind of looks like what you would see if you were playing in biting cold wind and your eyes were watering.

Here is r_scale 1:
https://i.imgur.com/jJBlmWr.jpg

and here is r_scale 5 (went with a much higher value to better demonstrate what I'm talking about):
https://i.imgur.com/UUCZLV0.png

The few rows of pixels going across the screen around where the shotgun model ends exemplifies what I mean when I say it looks blurry. This is especially true when moving.

The only pertinent visual setting that I'm using is gl_texturemode GL_NEAREST_MIPMAP_LINEAR but I think that I also tried this with gl_texturemode 1 with pretty similar results. This is on Windows 10.

Also interesting stuff Kinn. I haven't really put my finger on what exactly it is that captures the original look but it probably has more to do with what you said rather than just chunky pixels. I haven't tried FTE yet but I'll give it a look to get an idea of what you're talking about. Granted newer maps that take advantage of the fog and colored lighting still manage to look really beautiful in Quakespasm - trying to preserve the original look probably would be more of a detriment in this case. I'll have to look at FTE to get an idea of how the fusion of new and old holds up. To be fair, I'm not too hung up on retaining all of the old visuals because I do like the frame interpolation with animations in modern engines and I like the feel of modern engines especially with regard to the more comfortable mouse look. 
 
The few rows of pixels going across the screen around where the shotgun model ends exemplifies what I mean when I say it looks blurry.

That is a problem with the way that GPUs choose mipmaps. WinQuake uses the nearest vertex distance to determine which mipmap should be displayed on the polygon, but GPUs uses the farthest vertex distance, therefore choosing lower-res mipmaps.

I recall someone explaining this in another thread here, and that there's no solution because there's no API to finetune this behavior on GPUs. The only way to minimize the problem is through anisotropic filtering, but afaik it only works in GL_LINEAR_MIPMAP_LINEAR. 
 
I am pretty sure that in Quakespasm (or GL Mark V) the gl_texture_anisotropy setting does affect even gl_nearest_mipmap_linear texturing in some way. Don't have the details handy though. 
 
GPUs uses the farthest vertex distance

That's not true.

With a GPU, mipmap level selection is (1) per fragment, NOT per vertex or per polygon, and (2) based on the screen space derivatives of each fragment.

For fixed pipeline hardware selection is described in the GL spec, e.g for GL 1.4 on page 145: https://www.khronos.org/registry/OpenGL/specs/gl/glspec14.pdf 
 
By "per fragment" you mean trilinear filtering?

I'm on mobile, can't easily search for the specific post where I saw the info.

(2) based on the screen space derivatives of each fragment.

Which means that for polygons that aren't parallel to the camera plane, the texels farther away from the camera gets smaller, so the texel on the vertex farthest away will determine which mipmap to use. That's how I understood it.

What I'm talking about is a comment about the differences between trilinear filtering, anisotropic filtering and why the walls on hardware-accelerated engines gets blurry when seen from an angle. I don't remember the exactly thread, but the comment was somewhat recent. 
 
Okay, here's the exact quotes:

winquake's mipmapping was based purely upon the distance (and texinfo+screensize+d_mipcap). 

on the other hand, opengl decides which mipmap to use based upon the rate of change of the texcoords - or in other words surfaces that slope away from the view are considered more 'distant' and thus get significantly worse mipmaps. 

glquake and winquake have _very_ different mipmapping rules, and glquake just looks blury in about every way possible...

Also Worth Adding...
#3143 posted by mh [137.191.242.106] on 2017/11/22 18:29:07
...that in hardware accelerated versions of Quake, mipmap level selection is not normally something that the programmer has control over; this is done by fixed function components in the graphics hardware.
 
 
The first quote is the #3140 posted by Spike [86.151.115.97] on 2017/11/22 17:55:03. 
 
No, forget about vertexes, they're not relevant. Likewise distances: Not relevant.

Per fragment is not trilinear.

In OpenGL a "fragment" is a collection of values used to produce a final output; please read https://www.khronos.org/opengl/wiki/Fragment for more info.

Texture coords (NOT texture lookups) are linearly interpolated between the per-vertex and per-fragment stages. Those interpolated coords are then used for mipmap level selection and texture lookup, which may have linear or nearest filtering applied.

In shader speak,

in vec2 texcoords;

Vec2 ddx = dFdx (texcoords);
Vec2 ddy = dFdy (texcoords);

Vec4 color = textureGrad (texcoords, ddx, ddy);

And that will give you the same result as the GPU's automatic miplevel selection.

The important message however is that miplevel selection in hardware is NOT per-vertex or per-Surface, because the fragment shader stage just doesn't have access to that info. It's per-fragment; per-pixel if that's easier (even if not 100% correct) terminology.

This is all public information; it shouldn't need to be explained. 
 
mh: Yes, I didn't try to learn exactly how it works, but it was enough to give an answer that despite being not technically correct, points to the right place where the cause is: the GPU mipmap selection algorithm. This way Poorchop knows that it's not a fault of the texture mode or screen scaling algorithm used by QuakeSpasm.

I was just trying to help so the guy won't waste his time messing around with every cvar trying to fix it. In this sense, my answer should give the proper results.

And yes, I recognize I'm way more dumb than I should be when it comes to hardware rendering, but it's not my field. There's no future for me in it. I only learn what I need to know about it from an user perspective. 
Render Gun In Lienar Or Nearest 
Problem Solve ! 
Yet Another Controller Question! 
Is there a way to designate a specific controller in QS?

I just got a lovely Hori Fighting Controller that I use for old d-pad based games and emulation.

Problem is that it's plugged in whereas my analogue controller is wireless. It seems that QS only reads the first controller recognised by Windows or something.

When I boot up QS it only responds to my plugged in controller and I can't find a way to get QS to read what has now become my 'second' controller.

PS: Just a FYI that the Nightlies page has a 502. :) 
 
At the moment it's hardcoded to use the "first controller in the list" returned by SDL.. agree this would be a good / easy thing to improve.

I don't know what would be a good way to store it in a cvar - just the controller index would work I guess, as long as the OS returns them in a consistent order across reboots.

re: Nightlies, thanks.. rebooted. 
 
Do you think that sometime in the future you'll create a menu for controller options? Maybe if players can easily change things in a menu it wouldn't be such an issue if they did have to occasionally change the CVAR.

Of course, I've really no idea how much work it is to add menu stuff in Quake... Just curious. :) 
Potential Code Snippet Donation 
in_sdl.c -> IN_StartupJoystick ...

Replace "for (i = 0; i < SDL_NumJoysticks(); i++) { ... }" block with following.

{
qboolean do_second = COM_CheckParm ("-controller2")
qboolean found_first = false;
for (i = 0; i < SDL_NumJoysticks(); i++)
{
const char *joyname = SDL_JoystickNameForIndex(i);
if ( SDL_IsGameController(i) )
{
const char *controllername = SDL_GameControllerNameForIndex(i);
gamecontroller = SDL_GameControllerOpen(i);
if (gamecontroller)
{
if (do_second && !found_first) {
found_first = true;
continue; // skip to the next one
}
Con_Printf("detected controller: %sn", controllername != NULL ? controllername : "NULL");

joy_active_instaceid = SDL_JoystickInstanceID(SDL_GameControllerGetJoystick(gamecontroller));
joy_active_controller = gamecontroller;
break;
}
else
{
Con_Warning("failed to open controller: %sn", controllername != NULL ? controllername : "NULL");
}
}
else
{
Con_Warning("joystick missing controller mappings: %sn", joyname != NULL ? joyname : "NULL" );
}
}
}


Hipnotic Rogue could just add -controller2 to the command line. 
... 
Someone in the QuakeDroid thread asked for controller support for Android ...

Was about to implement controller support from a SDL2 development blog, then realized if it didn't use the same key names, behaviors and such as Quakespasm would be a missed opportunity.

Short version is that I spent some time researching the differences between the initialization in Quakespasm vs. what I read on the SDL2 development blog, and ended up reading this section of code several times. 
 
Cool, I hope the QS controller code is useful. I'm biased but I really like how it turned out (pretty clean integration with the engine, playable out of the box, defaults went though a lot of player testing - i.e. cubic easing, the deadzone implementation.)

Here is the initial commit that shows the changes outside of in_sdl.c: (mostly just adding K_ABUTTON and K_BBUTTON to the menu code.)
https://sourceforge.net/p/quakespasm/code/1293/

I made some further tweaks which I think were restricted to in_sdl.c. Let me know if anything is unclear.

(Thanks for the -controller2 code snippet, that seems like a good starting point for multi contorller support) 
 
Should you have use for it, @insideqc I posted something for "Quakespasm Ticket #27" (Unix path) that isn't rocket science but perhaps will save you 5-10 minutes.

Go to sv_main.c line 1432 (SV_SpawnServer) and applying that to the sv.model_precache[1 + i] (modifying it) *should* in theory solve the problem for models.

Might need to hit pr_cmds.c PF_precache_sound and pr_cmds.c PF_precache_model. And sv_main.c @SV_StartSound and sv_main.c @SV_ModelIndex

Rough blue print.

/If you decide that is worth addressing at all. The counter-argument is that this falls at the doorstep of the mapper -- the mapper fixes the map and re-releases the map. There are myriads of ways a mapper can foobar a map, perhaps the right answer is "Not going to protect mapper from self". 
Thanks 
Yeah, it's a grey area. If winquake.exe and QS on Windows accept it, that's a good argument for accepting the backslashes on Unix OSes, but it should be a developer warning on all platforms (realistically most maps are only tested on Windows before release). 
 
If winquake.exe and QS on Windows accept it,
that's a good argument for accepting the backslashes
on Unix OSes,


I disagree, we shouldn't have to fix mapper screw-ups.

Not going to protect mapper from self

This is how I see it. 
 
Plus what about mixed case filenames -- say some guy does a upper case file name that happens to match a lower case on in a pak on accident and Windows ignores it ... but Linux should do what?

Trying to protect mappers from their own choices ultimately leads to choices with unexpected consequences.

/Anyway, just throwing out a thought. 
 
fair point, I guess this kind of compatibility hack also indirectly forces other engines to apply the same patch. A developer warning would be good though. 
Ericw 
I do want to implement this at some point!

Zomg, sorry I seem to have missed this post, but that is great news :D

The faster / more natural / software faithful way of doing it is to ignore colored lighting and use the colormap.lmp just like software, having the fragment shader read the textures as 8-bit

I'd happily live without coloured lighting just for the true software look, although it's worth having a gander at how FTE does it, which somehow does the proper 8-bit palette look, but then it can still get tinted by coloured lighting afterwards, which neatly avoids the colours getting mangled. 
@ericw 
The way Quakespasm's SDL2 controller support works totally doesn't work on Android (at least not as of SDL2 2.0.8 - March 1 2018).

That being said, SDL2's controller support for Android appears to be better than in the past.

I think SDL2 used a "Steam/desktop computer mentality" to the controller support for Android, and then started to gravitate towards using the existing controller support already that is part of Android (which from accounts I have read, works outstandingly well).

I may yet get some sort of Android SDL2 controller support to work (I have 6 buttons working, no axis working, several buttons not working).

I think SDL2 has done a tremendous job on Android.

Now I think I understand why the SDL2 blog and your code were different.

Anyway, just wanted to provide some feedback to as to how that went. Should I get it to work, having your skeleton of cvars/deadzone stuff will have been very useful even despite SDL2 Android wiring differences. 
 
I've got a question about an issue that is suuuuper minor -- but I'm curious so I'll go ahead and post it.

When quitting the game, or when using the menu to start a new singleplayer game while you already have a game active, Quake will pop up an "are you sure" dialog that waits for you to press Y before continuing.

Something I've noticed when using Steam streaming with Quakespasm is that the dialog will be visible on the monitor of the PC that is running the game, but it won't be visible on the TV that the game is being streamed to (through Steam link). On the TV it looks as if the game has frozen up. But you can still of course press Y (or ESC) and things work as expected.

(I'm not sure if this happens with other Quake engines too.)

This is not anything I'm losing sleep over, but do you have any guesses off the top of your head why that dialog doesn't make it to the streamed display? 
 
might be drawn to the back buffer and then the buffers aren't getting swapped before the game stops to wait for input?

Does the same thing happen if you try to start a new game from the single player menu while a map is loaded? 
 
oh, reading a bit more closely... maybe the streaming to a TV doesn't update the most recent frame? It's one frame behind somehow? 
 
Nah, what is likely going on is that the screen is blocking in Quakespasm, like it was in FitzQuake and original Quake before it.

So anything that depends on a normal frame or normal event process isn't going to happen.

(A counter-example: in Mark V very recent builds, the dialog screen is not blocking -- you could stare that the dialog screen all day and, for instance, not disconnect from a server. It might be like that in FTE also, I wouldn't be surprised. I may have even got the idea from FTE and then forgot.) 
Although Actually ... If It Is One Frame Behind ... Here ... 
Although ...

If the issue is "one frame behind" ...

Quakespasm source ...

scr_drawdialog = true;
SCR_UpdateScreen (); <---- I don't draw twice!
scr_drawdialog = false;
...
do {
..
while }

If the stream expects double buffering, it isn't getting it in SCR_ModalMessage.

The test for a solution would be doubling it up ...

scr_drawdialog = true;
SCR_UpdateScreen ();
SCR_UpdateScreen (); // Double buffer it.
scr_drawdialog = false;

(My first reply was on gut instinct about the event queue/not having a normal frame ... because I've experienced a fair number of headaches before due the blocking dialog so I had the blocking dialed in as public nuisance.

But gut instincts aren't always right ...

and although I've run into instances of the blocking dialog not drawing specifically because it is blocking .... may not mean anything at all in this situation ...) 
 
not all systems even support explicit *SwapBuffer calls.
Eg, webgl takes away control of your main loop, redrawning only when your redraw function returns.
There's other systems that do the same sort of thing, including Android's GLSurfaceView or MacOS's cocoa api.

Plus there are drivers that violate the GL spec and force triple-buffering, so you're never sure how many swaps you actually need to make to ensure that its actually swapped.

As a result, its imho easier to just keep redrawing the screen regardless (which is required on many systems anyway, where the system doesn't repaint unless the app explicitly does so - like windows).
But its best to avoid modal things entirely. Sometimes you don't really have a choice though (like QC debugging).

Regarding video capture, the recording program probably set up some code injection that copies the backbuffer to a pbo (or a compute shader) before the swap. Such things generally check the response the frame after that, which avoids forcing the cpu to sync with the gpu. This requires a couple more swaps before the data is available to encode, which of course makes loading screens really messy.
Hurrah for threads!... 
GNU/GPLv2 Question 
Am I allowed to sell a mod on steam, using quakespasm engine ? I need some guidance with GNU/GPLv2. 
 
Here is an example of someone selling something on Steam using a Quake engine: https://store.steampowered.com/app/793670/The_Wastes/

Here is a mod on Steam for Half-Life: https://store.steampowered.com/app/225840/Sven_Coop/

The engine source code license agreement does not have much to do with any of this. 
 
As long as I give credits to quakespasm creators, and if the mod doesn't include quake materials (models, textures, sounds...) it's ok ? 
 
You should read this: https://partner.steamgames.com/steamdirect

But then also ask the question: are there people who are going to pay for a Quake map/mod in 2018?

Probably not. 
 
It's not about the engine, but the vibe (Thirty Flights of Loving, DUSK...)

Thank you for the link. 
 
In the mapping help thread, you asked about WAD3 (Half Life 1 texture format).

FTE is the engine used in the first link I gave you (to the best of my knowledge) and it supports the Half Life 1 map format, which is like basically Quake map format except for the texture format is different which is why J.A.C.K. can easily do both Quake and Half-Life 1 maps.

I mention that because you referenced something with tons of color, and it is basically impossible in Quake because of the color count restrictions. 
 
I stick with Quakespasm. Quake palette haven't much "blue" colors, right. I haven't yet looked into customizing palette.lmp

Do ya know PixaTool ? 
 
Is there any way to smooth out jerky monster movement while they ride platforms or elevators? 
Suggestion: Autocomplete On Load Game 
I tend to store a ton of savegames with crazy names. I really like how the "map" command has auto-complete on the mapname.

Might it be possible to do a similar autocomplete on the "load" command for the savegame names? 
 
just a brainfart, not terribly important of course 
QSS Frame-rate Fix? 
Are there plans to add Spike's frame-rate/physics fix to QS any time soon?

I'm just curious as I've found that it has fixed my issue with intermittent stuttering on my 144Hz monitor. :) 
Yes 
QS has been on the backburner for me, but when I get back to it that is something I want to add. 
Great Stuff! 
It's kinda surprising that Spike's 'little' breakthrough hasn't caused a bit more excitement. I suppose that's to be expected in such a small community. :) 
 
that and that anyone who actually cared already had a choice of other engines that already had fixes for it. 
 
I implemented compute shader water warp (one pass) in vkQuake. Feel free to steal it, can easily be translated to a fragment shader with a triangle over the texture. 
 
I have troubles running "Eargasm" mod for Quakespasm. It seems the engine doesn't accept the new wav files, at least some of them.
For instance :

guncock.wav is played in the engine, but it seems to be filtered/emulated in 11025hz/8bit.

buzz1.wav isn't played at all (I've checked with the command "snd_show 1", the engine doesn't play the sound at all).

I tried x86 and x64 Quakespasm.
I tried to re-encode the files using different wav format settings.

Latest Quakespasm update : 20th Nov 2017.
Eargasm was released on 16th Dec 2017.
Would it be possible to make an update ?

https://www.moddb.com/mods/quake-eargasm/downloads/quake-eargasm 
>moddb 
says it all. 
 
Suggestion: Add option to disable auto weapon switch on pickup 
Makr0n 
That's the realm of QuakeC, and not something that can be done in engine without the hideousest of hacklets. 
#3395 
Not sure if this helps but all non-music sounds must be mono in Quakespasm. Maybe there are some stereo files in that pack designed for use with other less compatible Quake engines. 
Really? 
That explains why some of my sounds from a few mods fail in game. 
@qmaster 
As far as my tests this is the case with QS. I don't have a PC at work today so I can't confirm. But as I see in the DP docs stereo support is mentioned. "Stereo sound file support (useful for cd tracks)" I'm assuming that this was added, some mods were created with stereo files that break compatibility with Fitz variants. Which mods are messed up? I'd like to pursue this further and if you want I can mix the tracks down to mono for you. 
@qmaster 
I read a bit further in the docs and I am right -- DP added stereo sound playback for mods. 
 
stuff like this is why I made QSS convert stereo to mono on load.

also, change sndspeed to anything other than 11025 and that will disable quakespasm's low-quality filter. 
I'll Have To Check 
To save myself the headache of changing precache file paths in the qc when merging in from mods, I kept the files in the same folders.

This had the drawbacks of not being able to tell which files came from which mods as well has name conflicts.

So...might be a while before I can tidy up and get a comprehensive list to find those again. 
@qmaster 
Don't sweat it. I can peruse the files and check on my end if they are included in keep. 
Quakespasm 0.93.1 Released 
What About A Spike Version, For OS X? 
And what about that old quakespasm.pak that have date 1 march 2016, while the newest version (?) is 27 june 2017? 
PNG Screenshot File Sizes 
It seems like the PNG screenshots that QS writes are larger than they have to be? If I resave them in Paint or Paint.NET the file size is halved with no apparent difference in quality.

Also, I would greatly appreciate an option to disable the "wrote xxx.png" message. 
 
Also, I would greatly appreciate an option to disable the "wrote xxx.png" message.

And why does that bother you? 
 
speaking for myself:

When taking multiple screen shots in a row to perhaps catch a monster in a specific position, for example, you have to wait for that message to go away or to use host_timescale to slow down monsters.

When I have r_drawviewmodel 0 and crosshair 0 for screenshots, itd be nice to have some sort of way to avoid all on screen prompts and such. 
Freezeall 
You can freeze monsters at will. Mark V has the freezeall command and other engines have sv_freezenonclients 1 
 
The large PNG's are intentional to try to limit hitching. They're compressed in the main thread of the engine, and default settings of png libraries I tried caused unacceptably long freezes in the game (like 0.5 seconds - 1 second depending on the resolution.)

If we moved the PNG compression to a background thread, we could use good but slow compression settings - this is just more work to set up.

Agree with a cvar for hiding the "wrote" message. 
#3409 
Sometimes I like to take multiple shots at once, but then the best "takes" have the message printed on them which isn't too good aesthetically. 
 
There is a cvar called "con_notifytime" or similar which controls how long the console text appears at top of screen. Try setting it to zero, maybe even make a alias that sets it to zero before your screenshot and then back to default after? 
 
Thanks, metl. That works. Doesnt show on screen but still shows in the console so one can confirm screenshots have been taken. 
@otp 
What mukor said. I've never seen a screenshot with the message showing. Maybe an older version of QS? 
 
Screenshots And Messages 
One way of handling this is, rather than taking the screenshot immediately, just flag an "scr_screenshot" qboolean to true, then run SCR_UpdateScreen and if scr_screenshot is true selectively suppress certain UI elements. Finally glReadPixels and capture the screen. 
@3417 
 
yes, taking one screenshot wont display the message in the screenshot.

spam the screenshot key and youll get the message in the screenshot.

some people implement real world photography concepts into screenshots and one of those concepts is to take a quick series of images to then pull the best one from.

Think of skateboarding where they use shutter speeds to capture the whole trick then pick one of the pictures to use on the cover. 
 
heres a GIF with this in action:

https://i.imgur.com/Xe2Jd1U.gifv 
Here Is Another One 
 
Uuuhhhh 
are these last few posts just one big troll?

you know the "clear" command is a thing yeah? clears the console?

bind F12 "screenshot;clear"

does what you want I think? 
 
metlslimes suggestion of "con_notifytime" is better than using clear, imo. 
Sorry For The Tone 
reading that back again sounds a bit patronising, but I think it's a valid solution for now.

Maybe the fact it clears the console history doesn't make it a perfect solution. 
Con_notifytime 
lol, I skimmed past that.

Yeah that's even better. 
Lol 
yeah, i changed the binding now too.
no trolling intended. 
And Btw 
that rrp gif is 5 yrs old now, i just remembered making it was such a chore not knowing how to disable the message. 
 
It would be neat if QS allowed for changing the actual layout and functionality of the hud. I think stuff like that would be very cool esp for big mods like AD. 
Huddage 
That requires support for CSQC hud code - I think QSS has this supported, but I haven't had time to check it out yet. 
 
I always get warnings when I try to get QSS. 
You Mean 
the website? It's fine FYI.

http://triptohell.info/moodles/qss/ 
Because Spike Injected A Packet Sniffer!! 
j/k i get the same warnings, idk what windows doesn't like about qss, it is annoying. 
 
 
Yeah, getting a virus warning from that. From the zip as well. Wonder why that is exactly. I reckon it is some funky code which gets picked up by heuristics? 
I Was Wondering 
How hard would it be to get temporal dithering, similar to that of Inside, into a quake engine?

The banding that the fog generates, esp in dark areas is pretty harsh. With good temporal dithering, that is limited to the fogged areas, things would look a lot nicer. Obvs this is not important as it is not a gameplay thing at all, but it would be neat. 
 
Also, thanks Kinn for the hud linkage :) 
Cool Idea 
The main roadblock for Quakespasm is the renderer is not fully converted to shaders; mdl and lightmapped faces are, but water, sprites, sky and anything else are still using fixed-function OpenGL.

Dumping some links on dithering I found:
http://loopit.dk/banding_in_games.pdf
https://www.shadertoy.com/view/MslGR8 
 
Ah, I see.

Here's a good talk about what they did in Inside here.

https://www.youtube.com/watch?v=RdN06E6Xn9E

I also think they gave away the plugin, or whatever they wrote for Unity to do this stuff for free. Not that that would help a lot with QS. 
Isn't Fixed Opengl Faster Though? 
 
 
On any hardware from the past 15 or so years, fixed function OpenGL no longer exists: it's emulated with shaders in the driver.

Maybe "fixed function is faster" was true in the GeForce FX era, but time and technology have both seriously moved on since then. 
Classic Settings And Weapon View 
Aside from being unable to get an accurate weapon view like winquake/mark_v I think the features here are almost perfect.

r_scale, cl_sidespeed etc fix any minor gripes I've had.

Any ideas if this will be fixed outside of scr_ofsz -2 would be good. 
@Fifth 
What about r_viewmodel_quake regarding the weapon position. Setting that to 1 does the job pretty good I think.

I personally really would like the oldschool underwater effect in QS, but yeah, shaders, etc.

That and a way to actually have accurate colormap lighting rendition, because a lot of older levels do look a lot better with the harsher lighting, imo at least. 
@Fifth 
Yep r_viewmodel_quake should do the trick.

btw check out the >60Hz monitor support in QSS if you haven't http://triptohell.info/moodles/qss/ - host_maxfps 0 means unlimited, and it keeps physics running at 72fps.

btw thanks for that video ptoing, when I get back into engine coding I'd like to do more with shaders, and the temporal dithering sounds like a cool project. 
@ericw 
Cool :D Would love to see how that looks if properly implemented. I think it would be very nice :) 
 
ptoing, if Vulkan is an option for you vkQuake solves the banding issues by using 10 bit frame buffer precision. 
Bug Report / Replication 
Please note that this bug occured in my IRC fork of 0.93.0

I just got a: "TexMgr_ReloadImage: Invalid source for player_0"

Error occurred in the middle of a game whilst quickloading and quicksaving a lot, also while recording demos.

This bug caused the save file list to disappear, it also caused loading saves from disk to fail.

video of failure: https://www.twitch.tv/videos/280904822 
@Axel 
Just tried vkQuake. That indeed solves most of the banding issues. Also like that it has classic water. Thanks for this tip :) 
 
scratch that last bug report. It occurred again last night without the "TexMgr_ReloadImage: Invalid source for player_0" message. I'm inclined to believe that the bug I'm facing caused that error rather than being caused by it.

either way, with my shoddy coding it could be anything XD 
 
I have a feature request. The following binding doesn't work properly in Quakespasm while it does work in a few other source ports like Qrack:

alias +movejump "+jump;+moveup;"
alias -movejump "-jump;-moveup;"
bind space +movejump

Jump works just fine but when underwater, the player moves up as if holding the jump key rather than the move up key. It makes swimming up slower than it should be. 
 
In Qrack or Mark V, type pq_moveup 1 and you don't need any of that.

Feature originated in original ProQuake and spread to about every engine both of the Quake and Quakeworld variety including FuhQuake/ezQuake/FTE/FodQuake (in QW engines and JoeQuake the cvar is called "cl_smartjump" instead). 
 
Thanks Baker. It turns out that pq_moveup is 1 by default in Qrack, which would explain why the binding seemed to be working when it was really just the cvar. However, setting it to 1 in Mark V causes weird issues - it will stay locked swimming up when I press jump until I press the moveup key. Even pressing movedown won't cancel swimming up and staying at the surface. 
Water And Music 
Is there any way to get the classic software "wavey" water warp when underwater? I don't remember in which engine, but I seem to remember some of them did this. Maybe I am wrong though.

Another thing is, when reloading a game of the same level it restarts the music track, this is probably correct "vanilla" behavior, but is there a way around this? Maybe some CVAR that controls this behavior so there's an option not to restart music track.

And some maps have no music track info or have it set to "0" which results in no music playing. Maybe introduce a CVAR for random music track start (and/or override the map setting)?

Would be so nice

Then again simpler workaround would be having a Quake OST playlist on shuffle in some media player in the background. 
#3454 - Underwater Warp 
FTE does (r_waterwarp 1).
DirectQ does, if I remember right.
And I think vkQuake does too, but it might just be surfaces.
(don't expect them to have the same scale as the software-rendered engines - higher resolutions result in far too many repeats in the vanilla software renderer) 
Mark V 
has water warp as well. 
Quakespasm 0.93.1 Bugs And Suggestions 
bugs
-
>sometimes the player can get stuck going down/up ramps/angled brushes, touching obtuse (convex) corners. See the images for examples
https://ibb.co/mm18p8
https://ibb.co/jVdop8
>sometimes monsters teleport-in without particle effects

suggestions
-
>increase the limit of the number of particles. Sometimes, particles vanish from launched rockets during very chaotic battles 
 
sometimes monsters teleport-in without particle effects
i guess it's a 'spawn silent'/no gfx mode

increase the limit of the number of particles.
there's a command line option -particles 
 
Getting stuck on those corners is not an engine bug. It's an issue in the map, or the compilers to be precise, and occurs during the QBSP stage.

Particles can be increased manually using the commandline option like спы says. 
Sticky Corners 
Its an engine bug in SV_RecursiveHullCheck.
FTE+DP+ezQuake all have fixed(and more efficient) versions, and porting FTE's over to QSS fixes the issue for me.
However there's a potential risk for things to fall out of one of the thousands of possible maps out there. Its probably not a huge risk, but its still there, hence why I was too paranoid to make that change.
Paranoia is a really bad thing. :( 
 
Hi, I think this is my first post...

In this port, is it possible to make the ogre and the zombies take into account your height when they shoot their projectiles?.. 
Nope 
it's not the engine feature, it's QC thingy

i believe it's called z_aware monsters behavior

AD has that feature, some mods too 
 
Port/Engine - runs mods and sometimes has extra features to help with mods.
QC code - allows monsters, weapons, etc. to work properly. All engines already support angles and vectors so adding z-aware enemies for, e.g., ogres, zombies, flak ogres, etc. has been a thing for a while already. AD does the best job in my opinion because it uses a flag on the monster that allows for mappers to choose whether they want particular enemies to be z-aware or not giving mappers the most power. 
I Stand Corrected 
I was under the assumption that the sticky corners (always only 45° it seems) was some QBSP mess-up. Tbh I didn't even know it occured in the stock maps, too. Only ever came across it in custom maps... maybe because the id maps are mostly boxy. 
Textures Are Broken In 0.93.1 
I've been looking around for a while and can't seem to find any info on this. In quakespasm and quakespasm spiked as of 0.93.1 and r10 respectively I can't start a new game and if I launch a map manually the textures all look corrupted and the the lighting seems messed up as well. this only happens in 0.93.1 and r10 but not in 0.93.0. Any help would be appreciated. 
Textures Are Broken In 0.93.1 Screenshots 
https://imgur.com/a/O1ECIKz

The first two are from 0.93.0

The second two are from spiked r10. Its the same in 0.93.1 
Looks Like That Epsilon Mod 
 
@A_COC0NUT 
Weird, not sure why that would happen with 0.93.1.

Can you type "condump" at the console and then upload the id1/condump.txt that is saved?

Does adding "-noglsl" to the command line fix it? 
@ericw 
adding -noglsl to the command line does fix it but it still refuses to start a new game.

here is the condump without the -noglsl thanks for the quick help

IPv4 UDP Initialized
IPv6 UDP Initialized
WIPX_OpenSocket: Address family not
supported by protocol family
WIPX_Init: Unable to open control
socket, IPX disabled
Exe: 11:02:38 Jun 3 2018
256.0 megabyte heap
Video mode 1920x1080x24 60Hz (24-bit
z-buffer, 0x FSAA) initialized
GL_VENDOR: Intel
GL_RENDERER: Intel(R) HD Graphics 530
GL_VERSION: 4.4.0 - Build
20.19.15.4549
FOUND: ARB_vertex_buffer_object
FOUND: ARB_multitexture
GL_MAX_TEXTURE_UNITS: 8
FOUND: ARB_texture_env_combine
FOUND: ARB_texture_env_add
FOUND: SDL_GL_SetSwapInterval
FOUND: EXT_texture_filter_anisotropic
FOUND: ARB_texture_non_power_of_two
FOUND: GLSL
Intel Display Adapter detected,
enabling gl_clear

Sound Initialization
SDL audio spec : 44100 Hz, 1024 samples, 2 channels
SDL audio driver: directsound - Speakers / Headphones +SSE3 (Realtek Audio)
Audio: 16 bit, stereo, 44100 Hz
CDAudio disabled at compile time

========= Quake Initialized =========

execing quake.rc
execing default.cfg
execing config.cfg
execing autoexec.cfg
3 demo(s) in loop
]condump 
@ericw I Think I Fixed It 
Since -noglsl fixed it I decided to test out the uncoupled frame rate that spike offers and noticed in the condump that it was using the intel integrated graphics so I went into the nvidia control panel and forced it to use the 1070 I have and now it looks fine and launches a new game gust fine, even without -noglsl. Thanks for the help and I'll provide any additional info I can to fix the intel graphics if you want. 
Thanks For The Info! 
That helps, I'll see if I can reproduce on a system with Intel graphics 
Quakespasm 0.93.1 Bugs And Suggestions 
What is the particle limit currently set at?

For the "teleport-in without particle effects", Are you certain it's a map issue? For example, sometimes when a group of monsters tele-in, only one or two will have the particle effect, while the rest only play the tele sound

bugs
-
When going up, on an elevator, sometimes the player 'sinks into it' then 'pops out', even multiple times in longer rides. Especially if you look up while the elevator is going up 
1 post not shown on this page because it was spam
First | Previous | Next | Last
Post A Reply:
Name:
Title:
Body:
message
question
exclamation
idea
flame
noflame
error
skull
beer
moon
pent
rocket
sheep
pacman
pig
cheese
worldcraft
gauntlet
crate
pitfall
pimp
smile
cool
sad
frown
oi
yay
tongue
evil
wink
neutral
q1
q2
q3
ut
hl
cs
doom
dkt
serious
cube
Website copyright © 2002-2018 John Fitzgibbons. All posts are copyright their respective authors.