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
Actually 
My second post in that thread does do entities, with the exception of statics (it wouldn't be hugely difficult to add statics to it either).

It's definitely worth following the subsequent discussion in it as there's valuable info and experimentation there from quite a few others. 
Macbook Pro "Delete Key" 
On at least the current Macbook Pros, there is a delete key where the backspace key would be.

And it works like the backspace key. If you hold "FN" and press the backspace key, it works like the delete key.

But it doesn't work right in Quakespasm. If I go to customize controls and try it bind it to a key, it says "Backspace."

But in the console it doesn't do anything.

The backspace key works right in Open Arena (ioQuake3) and in my modified ProQuake which uses the Fruitz of Dojo input code.

Oddly enough, the SleepWalkr RMQ Engine build doesn't have this problem. But Quakespasm 0.85.6 OS X does.

I'm just making a note of this here so it is recorded. I might incidentally bump into the nature of this issue and post it here. 
Does Not Appear To Be SDL Issue 
Here is the bad code:

case key_console:
if ((event.key.keysym.unicode != 0) || (modstate & KMOD_SHIFT))
{
#if defined(__QNX__)
if ((sym == SDLK_BACKSPACE) || (sym == SDLK_RETURN))
break; /* S.A: fixes QNX weirdness */
#endif /* __QNX__ */
if ((event.key.keysym.unicode & 0xFF80) == 0)
sym = event.key.keysym.unicode & 0x7F; <----------- Baker
/* else: it's an international character */
}
/* printf("You pressed %s (%d) (%c)\n", SDL_GetKeyName(sym), sym, sym);*/
break;
default:
break;
}


It is turning a sym = 8 (backspace) into sym = 127 (delete)

That only occurs for case keyconsole.

If I change #if defined(__QNX__) to #if defined(__QNX__) || defined(__APPLE__) I no longer have this issue.

Am I the only Mac Quakespam user whose backspace key does not work correctly in the console with 0.85.6 ? 
I Get The Same Bug 
whether pressing the mac Delete key on its own, or Fn+Delete, both act as "forward-delete" in the quakespam 0.85.6 console� i.e. they act like the PC delete key. 
That Is On OS 10.7.2, Macbook 5,2. 
 
Same Here 
Does anyone know how that code got in there? 
 
If I change #if defined(__QNX__) to #if defined(__QNX__) || defined(__APPLE__) I no longer have this issue.
Thanks Baker.
Oz and Sander put some effort into enabling unicode chars, but i suppose OS X needs more work. Natchurallllyyy 
 
Baker: ioquake3 has a special handling of 127 in that unicode portion of the code: in sdl_input.c, find this:

if (down && keysym->unicode && !(keysym->unicode & 0xFF00))
{
unsigned char ch = (unsigned char)keysym->unicode & 0xFF;
switch (ch)
{
case 127: // ASCII delete
if (*key != K_DEL)
{
// ctrl-h
*buf = CTRL('h');
break;
}

So, if I change the code around line 363 to the following, does it work OK on osx?

case key_message:
case key_console:
if ((event.key.keysym.unicode != 0) || (modstate & KMOD_SHIFT))
{
if ((event.key.keysym.unicode & 0xFF80) == 0)
{
int c = event.key.keysym.unicode & 0x7F;
if (c == 127 && sym != SDLK_DELETE)
sym = 8; /* CTRL-h */
else sym = c;
}
/* else: it's an international character */
}
/* printf("You pressed %s (%d) (%c)\n", SDL_GetKeyName(sym), sym, sym);*/
break;

(Steve: this also removes the qnx special handling of yours: make sure it doesn't break anything.) 
 
SleepwalkR:
> Does anyone know how that code got in there?
Take some time to read SDL_keyboard.h 
Multiplayer 
Do you guys intend to improve the MP experience too? Because this could - at least for us Unix folks - be the engine to end them all.
I saw that you increased the particle size (texturescale var set to 1.27 i think, can't check atm, am @work) which is not so great for MP, would like to see a cvar for this.
Beside that, I checked out the source and added pq_needrl & friends as well as .loc support and other little things, is there interest in this? 
Re: Multiplayer 
How does texturescalefactor, which is about drawing the particles and doesn't seem to have anything to do with net traffic, can not be so good with multiplayer?

As for additional features suggested, we can review and possibly merge patches if you submit them to us through our tracker on our project page. 
Particles In MP 
I think a large part of the particles problem is that the MP community likes to run with high values of host_maxfps (in order to get smoother movement). Because particles are primarily fillrate-bound, lots of particles many more times per second will have a disproportionately higher impact on fillrate (esp when squeezing a 64x64 non-mipmapped particle texture into tiny screenspace areas). 
Interesting... 
so are mipmaps actually a performance gain rather than just a (subjective) quality gain? I could mipmap the particles pretty easily if that is the case. 
 
I never understood that either. I always thought, logically, it should just be a visual improvement but for some reason it factors into performance as well. Isn't it just interpolating across the texture, regardless of the polygon size on the screen? Why do mips matter for performance? 
Re: Multiplayer 
No, for me it's not about FPS in this case. They just get too big and block view more then necessary. With lots of rockets and explosions it really gets annoying, I tried it. Doesn't matter or may even be a visual enhancement in SP that's why I suggest to have a cvar for it (going from 1 up).
I'd like to see quakespasm to stick to the proquake standards for MP.

Sorry that I didn't make that clear in the original post. 
Multiplayer 
Ok, patches uploaded to project homepage. 
Mipmaps 
This more or less says it: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0555a/CHDEIJID.html.

Summary: reduced memory bandwidth and improved cache utilization. 
 
Cache efficiency, OK, I guess I can see that ... 
Patches 
Cheers LeopolD. 
Keyboard Layouts 
Something that I find slightly annoying (in some other engines, too) is that, even though the US layout is used, the console key sticks to the rules of my QWERTZ layout. It has ^ which, along with � and `, doesn't print the symbol right away, but instead requires another key press - space or vowel - because it's supposed to be used for accented letter like in French, e.g. � and �. So in QS, and also Q3/QL, for example, this requires me to press the backspace key twice everytime I open the console in order to delete the ^. More otfen than not I forget to do it and have to retype the whole string of commands because of it. 
 
The console thing happens to me in Q4 too.

I'm also getting a case where I hit the toggleconsole key in QuakeSpasm and as soon as I start typing the console goes away - I need to hit it a second time to bring it back again. Definitely a case of a second ` being cached somewhere as Alt-Tabbing away from the engine to something that has a text editor or text box will bring the ` key with it as the first key in the editing area.

A case can be made for clearing all input state when transitioning between values of key_dest.

A minor niggle but having scr_showfps on should automatically force the tileclear areas to be redrawn each frame. This is an old carryover from Fitz. I'm dubious about the value of skipping this draw anyway.

And +mlook should be enabled by default (set in_mlook.state |= 1 on startup should be all that's needed). 
 
There is something weird with autoexec.cfg files. Install http://www.quaddicted.com/reviews/kinn_bastion.html and try to start a coop server eg like this:
./quakespasm -dedicated -game bastion +deathmatch 0 +coop 1 +teamplay 1 +map bastion

> deathmatch
"deathmatch" is "1.000000"

and all the other cvars were ignored too. It works fine if I delete bastion/autoexec.cfg. That file is setting completely unrelated cvars.

Minor issue 2:
If I load a -dedicated it meshes mdl files and searches for .lit files. Seems unnecessary. 
 
also weird is that if you remove the autoexec.cfg the console gets spammed with warnings:
...
static light with incorrect attenuation at: '-281.0 1959.0 -316.0'
light with wait != 2 at: '-281.0 1959.0 -316.0'
static light with incorrect attenuation at: '-280.0 1960.0 -252.0'
light with wait != 2 at: '-280.0 1960.0 -252.0'
static light with incorrect attenuation at: ' 71.0 1959.0 -316.0'
light with wait != 2 at: ' 71.0 1959.0 -316.0'
static light with incorrect attenuation at: ' 72.0 1960.0 -252.0'
light with wait != 2 at: ' 72.0 1960.0 -252.0'
static light with incorrect attenuation at: '1176.0 1728.0 -312.0'
light with wait != 2 at: '1176.0 1728.0 -312.0'
static light with incorrect attenuation at: '1216.0 2064.0 -56.0'
light with wait != 2 at: '1216.0 2064.0 -56.0'
PR_AllocStringSlots: realloc'ing for 768 slots
static light with incorrect attenuation at: '-392.0 1856.0 -280.0'
light with wait != 2 at: '-392.0 1856.0 -280.0'
static light with incorrect attenuation at: '-392.0 1856.0 -128.0'
...


i guess this is kinn's progs? but why doesn't that show up with the autoexec? 
Necros 
That only happens if you have developer 1 on.

And yes, it's a load of shit in my progs that i should have removed (there's a ton of other stupid crap that goes on in my maps with developer 1 as well tbh).

No idea why the autoexec affects that though... 
Autoexec.cfg 
.. from that bastion mod doesn't have a newline at the end of the file, and quake's original Cmd_InsertText() didn't think about such a case whereas the qw version has it fixed. I fixed it in the svn as of rev.639:
http://quakespasm.svn.sourceforge.net/viewvc/quakespasm?view=revision&revision=639 
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.