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
Well 
I suspect that you won't be very happy with the answer, but the problem is that there's been an overflow in the function PF_Varsting.



what?



Oh, fine then. In the regular quake code PF_Varstring uses a standard c function called strcat to combine the list of strings passed to centerprint into a buffer. strcat is a a very classic c function, and so offers no error protection. If you give it strings which are too long then it will happily overflow the buffer with them.

The standard engine code has a buffer which can hold 255 characters, but just blindly assumes that you wouldn't pass it strings that combine to a higher character count. Evidently the menu in CoCoT's mod exceeds this limit. In regular engines this overflows the buffer, which works as far as the menu is concerned but might overwrite something important in memory.

Evidently Quakespasm uses a safer function for combining strings or does some extra manual checks. The upshot is that your string gets truncated, as the error message has told you. It's hard to fault Quakespasm for fixing a bug that could potentially crash the program.

I suppose that Quakespasm could increase the size of the buffer somewhat to accomodate the mod (which has evidently been getting away with breaking the rules in other engines). It does seem best to recommend that you don't pass more than 255 characters total into centerprint, lest one day it causes memory corruption or a general protection fault. 
 
interesting that is actually a bug. also interesting, i tested the rpg mod quite extensively in FQ and never once experienced a crash or any kind of memory corruption. 
 
FQ might not have crashed because of the way the compiler used to make it into an exe reserved the static buffer used in PF_VarString(). Different brand of compilers and even different versions of the same compiler has every right to adjust such things to their liking. So, FQ never crashed is *purely* by luck. What we do in qs is not trusting our level of luck. 
 
does this have anything to do with needing to use -zone 2048 to prevent crashes? i recall someone on inside3d mentioning that quakespasm allocates strings differently than other engines. 
 
No, nothing related to -zone, at all. 
Adding Features 
Can I request that IPlog be added for Identify please.
It would be swell to know who I am playing against. 
 
look at their nick name, anything else is creepy. people should have a right to anonymity through pseudonyms. 
Re: Text Overflow Error 
PF_VarString's buffer has been increased somewhat in the svn repo, fixing UQC's menu. 
QS : Any New Version Soon ? 
Are there any news about a new version of QuakeSpasm on OS X ?

I'm looking for a full support for FSAA, Vertical sychro screen redraw, and the ability to put the game into background using Command-H (as in Quake3). 
 
Hmmm - We need a new OS X dev. SleepwalkR and I are both busy with other things. 
Support Features Please 
Baker has a new Fitz build and I am hoping to get some of the improvements added for my Linux client.
"Oh yeah, remember your post about talk macros or view interpolations (shaky cam) ... ask for them to add SUPPORTS_TALK_MACROS, SUPPORTS_LEGIT_PING_SCOREBOARD, SUPPORTS_VIEW_ANGLES_INTERPOLATION."
I have had some help with the LOC file support now working.I hope there are more improvements you can use from baker's update though. 
 
step 1: share your own changes/work back to the community.


I never saw SUPPORTS_ flags before, is that new? where does that come from?

those examples look terribly named to my "alphabetical order should equal logical grouping" mind. 
Spirit: 
That's just something baker added in the fitzquake mk. 5 source code to make his changes easier to find. 
 
What is this Bad "cue " chuck length (#) warning and why does it appear every time a map is loaded? 
Bad "cue " Chuck Length 
When a *.wav file is parsed, it looks for the "cue " chunk, if it finds it then it progresses to find a loopstart position. A bad cue chunk in the file is a chunk that reports its size as negative or going past the whole size of the *.wav file. Without such checks I added there, the engine may very well segfault (i.e. crash, which was the case with, IIRC, arwop mod or something.)
The print is done only in developer mode so it doesn't appear in usual game play. 
PF_VarString: Overflow 
Is there anyway to override the centerprint string truncation or suppress the PF_VarString: overflow console message? 
Well 
Even if there was it would be a bad idea to do it, because then your mod will potentially crash other engines by overflowing the buffer. 
Fitz Compatibility 
This works fine with the original Fitz0.85 engine and the new mark V engine. I know a few people who want to use Quakespasm instead of Fitz, so I am asking if this problem could be tweaked via a console command. I don't expect the default to change, I just want the option to override the (new) default used in this engine so I can offer my mod to a wider audience. 
PF_VarString: Overflow 
This is actually a bug fix kicking in. The buffer sizes for these functions could probably be increased but then you get into a war of attrition that I'm sure nobody wants. 
String Overflow 
I do think this situation is sad because without a way to fix this string overflow issue (still don't understand why a startup command line can't be added to allow longer strings) my mod simply won't work with Quakespasm.

I am sure someone is going to say 'Why don't you change your mod?" well, I use the centerprint function as a method for telling my background story and I don't want to delete it after all the effort I have put into creating it. 
Sock: 
is it possible to break the text into smaller chunks so players see a bit of it at a time?

I don't know what you're planning but that might work -- player walks along, sees some text, walks farther, hits another trigger that displays the next bit of text, etc. Or, it can all be triggered without the player moving, just on a delay for each section.

If none of those ideas work, you might be able to hijack the "end of episode" text mode, like maybe have a bsp that gives the player a rune and then ends immediately, causing the text to appear, then when the player hits enter it goes to your "real" bsp which has all the gameplay. 
 
The big problem with extending the string buffer size for PF_VarString is that it has knock-on effects in so many other places. You know the "you got 10 shells" message - that comes from PF_VarString. As does "this hall selects hard skill", "player exited the level" and so many other things.

So if you extend the PF_VarString buffer then you've got to go extend every other buffer that relies on it - including the network message buffers as PF_VarString result go over the network too. And they're restricted to 1400 bytes or you'll get packet fragmentation. Maybe for the purposes of your mod you don't particularly care about MP, but be certain that the QS guys do, and they're aiming for the general case.

So ask yourself: "is my mod really that awesome that I'm willing to break the rest of Quake for it?" 
Sock: 
As mentioned in msg #362, PF_VarString() buffer has been increased from 256 to 384 in the svn (i.e. the development version.) If even that much isn't enough for you then, well, what you're doing is utterly broken. 
Szo: 
Thanks :) Is there anyway to suppress the constant warning message to developer only? I am assuming the engine is truncating the string so does it need to be a constant warning message? 
Sock: 
The message is reminding that the content is misbehaving, so I guess it should be always on for truncation, but *maybe* we change the "exceeds standard limit of 255" warning (where there is no truncation yet) to developer mode. 
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.