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
Blarget2 
jumping up stairs is a darkplaces change. 
 
^ and one that doesn't come without its own knockon effects, like increasing the effective jump height to 64 units from 48. 
Zerst�rer Cutscenes Camera Weirdness 
In light of the map jam 3 theme, I decided to play Zerst�rer using a recent svn version of Quakespasm. I also tried it with the version that you can install from Ubuntu package manager. I downloaded the Zerst�rer package from Quaddicted. (I had to rename the file names to lower case.)

I found out that the cutscenes didn't work quite as intended with either version of QS.

The first cutscene (with the pit trap) had very noticeably jumpy camera movements at some sections. The end cutscene had the camera zoom off to the void before the conclusion and show mostly black.

There is a play-through video on YT for the maps you can watch for comparison (I think it's with Darkplaces), but I think it's quite obvious without them if you get similar results. Please try to replicate, or suggest config settings that might help (if any).

The maps with these two cutscenes are episode 2 and the end map. 
RE: Zerst�rer 
If you are on windows, can you compare against fitzquake-0.85 so that we can understand the source of the issues, fitz or us. 
Speaking From Memory 
The ending cutscene is a Fitz problem definitely. 
Cutscenes 
 
Afaik reQuiem has some fixes for that builtin and also it smoothes demo gameplay. jdhack was pretty proud of that. 
Yeah 
The camera jerks about when rotating, its a limitation of something in the engine - can't remember what.

Supa solved it in RMQ. 
 
I thought it had to do with the networking or something? Coarse values in rotations for faster transfers. 
 
The cutscenes use a bunch of svc_setangle messages which are controlled by setting ent->v.fixangle (sorry, I don't know the QC equivalent to this). It would be possible to lerp between consecutive svc_setangles engine-side, but there are probably edge cases (aren't there always) that need to be worked out.

Summary is that for zer cutscenes it is a combination of coarseness and widely-spaced (via nextthink) messages. 
Svc_setangle 
Sends a byte angle (256 values representing 360 degrees), so using that to continually reposition the angles is going to be jerky.

[And can't be interpolated client-side because the 'resolution' of byte angles leads to inconsistent rouunding.].

Looks like jdhack has the client read it directly from the server-side camera entity in single player. 
Well 
We had daisy-changing and interpolation between multiple camera positions at once on all three axis in both rotation and position - it was pretty fucking sweet :D 
 
In RMQ engine, it looks like you have it reading/writing float with the RMQ protocol.

jdhack has a lot of code detecting the Zerstorer cut-scene.

I'm hoping that code isn't necessary and just doing svc_setangle as either a short (2 bytes) or a float angle would fix this kind of thing.

The choppy angles in the cutscenes in, say, Zerstorer are annoying. 
Bugs 
The texture bug is fixed in the latest version
Also the lag has been reduced but is still noticeable sometimes

A suggestion, allow quakespasm to read from the the game folders, not only the .pak files 
Bug 
The camera is messed up in the Monster Match mod 
Svdijk, Szo 
I tested Fitz-0.85 with Wine on Linux. It has the same behaviour, as far as I can tell without a careful side-by-side comparison. The zerend fix pak corrected the end map camera placement.

Rewatching the Youtube clip, I now see it stutters too when the camera is rotating. I think I perceive it as much less annoying because the YT video has a lower resolution and a slower framerate.

Thanks for the responses, everyone! Things work well enough with the patch. It would of course be nice to have non-stuttering rotating cameras in modern Quake source ports, but it's not a feature I really need at the moment.

If I do find unexpected engine differences with a more careful comparison, I'll post about them later. For now, I assume it was resolution, window size and FPS that made the rotational stutter so much more striking in the engine. 
Svc_setangle As Short Or Float 
Right now I don't think this is going to fix anything.

The real problem is that you're relying on how often QC updates the angles. If it thinks at 10fps then the angles are only going to update 10 times per second so it's going to be jerky no matter what precision you send the angle as.

The more robust solution seems to be to detect if a Zer cutscene is playing and use the cls.demoplayback angle interpolation code in CL_RelinkEntities.

At least in this case the QC isn't doing a bunch of PF_WriteChar/PF_WriteAngle calls, but that's also something you need to be careful of. 
 
checking the zer progs, seems like camera updates are 100fps (time + 0.01).
This is just the low res angles for the camera. 
 
The irony being that the lower the packetrate used, the smoother the interpolation will be, as the network inprecision is hidden behind larger deltas.
with vanilla quake, with no interpolation, you wanted to spam as fast as you can to try to hit every notch to get it as smooth as possible that way. interpolation won't make that any worse, but you'll see it juddering still as the difference between each frame is non-linear due to rounding. shorts will help counter high packet rates.

my general recommendation would be to update angles exactly once per PlayerPostThink. This allows the client to properly detect when there's a camera active by the fact that every single update contains an angle change. The down side is that this requires the update be sent as unreliable packets instead of reliable ones so that they're kept in sync with entity snapshots over the internet where reliables cannot be acked near-instantly.
Anything else will be jerky in some situation. And yes... needs shorts or low snapshot rates. 
 
is cutscene smoothness an issue over a network though? 
 
Cutscenes wouldn't be affected.

Zerstorer happens to be particularly uncoopable in a way that is more than having extra coop spawn points (I recall be pretty disappointed but can't recall the reason why it is uncoopable).

[Nehahra has at least one cutscene but is coopable (although if I recall a couple of rare maps failed to have multiple spawnpoints), but I don't recall anything about the cutscenes in coop (i.e. did they happen or not).

I know there are a couple of more single player releases with cut-scenes, but I can't their names and whether or not they are coop friendly.] 
Config File Organization Tips Requested 
How do people organize their config files for Quakespasm and multiple game directories? I mean the dirs that are selected with the -game option, of course.

I understand that I should put the bindings and options I want into autoexec.cfg files and it is probably helpful to delete the engine-created config.cfg files after modifying the autoexec files. However, what exactly happens if there are several config files that might apply for a given game setting? In what order are they processed?

What config files should I backup/copy, so I can reproduce my settings on another Quakespasm installation? I don't necessarily want to backup my whole .quakespasm subdir, because I don't want to keep all the saves, screenshots and whatnot.

Basically, I'm asking that if someone has worked out a good practice to follow, could they be kind & share the details. I'm asking here because QS is now my engine of choice for SP Quake. 
Configs 
Preach has a great explanation of how the different config files relate:
http://tomeofpreach.wordpress.com/2013/09/05/quake-rc-and-being-a-good-citizen/

autoexec.cfg runs after config.cfg. You can put an autoexec.cfg in id1 and it'll get run on all mods (as long as the mod doesn't have its own autoexec.cfg), so putting all of your custom settings in id1/autoexec.cfg and backing that up is probably the way to go.

I'm pretty lazy and only change a couple settings from their defaults - always run, r_oldwater, statusbar size - so I don't bother with an autoexec.cfg. 
Thanks Ericw 
Thanks for the link. I also found this useful guide with a Google search.

http://steamcommunity.com/sharedfiles/filedetails/?id=120426294

Thought for the day: If I ever get confused which config files Quake is actually execing, I can put a lines like echo "this is from the foo directory" into them and see at the startup what is prints into the console. That'll help clear any confusion, though I think I got how it works already with the help of these links. 
 
When Quake starts up --- and this is in your console output:

execing quake.rc // This is in a pak file
execing default.cfg // This is in a pak file
execing config.cfg // This is YOURS

couldn't exec autoexec.cfg // This is YOURS

This always prints to the console so you don't need to put an echo in there.

If you are putting your personal settings in autoexec.cfg, that is the only file you need. 
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.