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
Big Maps Performance 
The most useful thing with big maps was moving MDLs over to vertex buffers too. When you think about it, this makes sense: in any big scene there are going to be a lot of MDLs visible and the stock FitzQuake code is particularly bad for these (and made worse because it does a lot of multipassing).

Quoth maps that use the long torch model heavily make things even worse because there is a lot of insane and intricate detail on that model (which you don't even see 99% of the time) leading to a stupidly high polycount.

This normally needs shaders to be able to handle frame interpolation with vertex buffers, but for QuakeSpasm an intermediate step can be done by using client-side vertex arrays. That will also work on any OpenGL 1.1 or better hardware, which pretty much means everything.

The advantages are being able to take each MDL in a single draw call, and being able to calculate the frame once only then reuse that for each pass. Without VBOs you're still streaming a lot of vertex data to the GPU, but it still adds up to a significant CPU saving. 
Quakespasm 0.90.0 Released 
Version 0.90.0 of QuakeSpasm is finally released.

Changes since the previous version:
http://sf.net/p/quakespasm/news/2014/10/quakespasm-0900/

Downloads:
http://quakespasm.sourceforge.net/download.htm
http://sourceforge.net/projects/quakespasm/files/ 
Two Versions For OS X ? 
What's the diffirence between the "universal" and the SDL2 version for OS X ?

What is SDL2 anyway ? 
Continued 
hey ericw

specs
8gb ram
dx11

in quakespasm i get ~27fps
on the same map in directq,
I get a constant 60fps (vsync on),
constant 72fps vsync off


*Use the DirectQ style of having only the muzzleflash with no interpolation; while all the objects of the gun/monster are interpolated

>>to clarify, I mean in directq, all the gun models' animation are completely interpolated; only the muzzleflash object is not.
so it would make automatic weapons (supernailgun esp) look better when shooting.
Also it would make monsters' attack animations appear smooth instead of choppy


*Read files directly from the game folder, so user can drag & drop models/sounds etc
>>Will this be a feature in the next version?

>Requests
can ambient sounds be made to always loop even if do not contain a repeat node?

...is that you MH lol? please update directq 
Re: Two Versions For OS X 
Quakespasm is built against the SDL framework (don't ask if you don't already know what that is.) The SDL2 version for OSX is basically the same, except that it is built against SDL2 framework instead of SDL 1.2. 
Barnak 
The "universal" one uses SDL1.2 and will run on powerpc / OS X 10.4. The SDL2 one requires OS X 10.5 and an x86/x86_64 cpu.

SDL2 is just the latest version of the library quakespasm uses that handles things like mouse / keyboard input, switching video modes, etc.. http://www.libsdl.org

There shouldn't be much difference but you might as well use the SDL2 one. 
@ Ranger 
Ok, cool. which map is that 27 fps on btw? Do you mind posting the first couple lines of gl_info output from Quakespasm? Oh, check that r_novis is set to 0. QS archives that which can be annoying if you leave it on by accident. Might be worth trying a fresh game directory, just extract the engine, id1/pak0+1.pak, and the mod / map in question with no cfgs carried over.

can ambient sounds be made to always loop even if do not contain a repeat node?
*Read files directly from the game folder, so user can drag & drop models/sounds etc
I can see these two would be convenient for modding, but would be incompatible with other engines so I'm not sure.

re: interpolation, it could be nice to have DirectQ's gun lerping as an option. we haven't touched the interpolation code from fitzquake so I'm not sure how much work it would be. 
DirectQ's Muzzleflash Interpolation 
I'm not too certain I'd recommend it. The main problem is that it makes a guess about which polygons belong to the flash and which belong to the gun: if the back-to-front distance from frame 0 to frame 1 is above a certain amount (don't remember what) it assumes a flash (and tags those polys for all frames as flash polys).

On the one hand this idea has heritage (of sorts) in the "if delta is large assume a teleport and don't lerp" code in CL_RelinkEntities. On the other hand it's easy to imagine it not being in accordance with a content author's wishes (although in practice everything I tested it with was fine so it's something that could happen in future). One potential breaking problem is gun models that don't flash in frame 1, of course (that on it's own is enough to recommend avoiding the code).

It does absolutely nothing to deal with player and grunt model flashes. 
@mh 
For the next release, I'm thinking of going straight to having all mdl data in a static VBO and using a glsl vertex shader (vanilla GL2.0, #version 110) to do lerping and lighting, and fall back to the old Fitz code if glsl isn't available. I have this running and it was pretty straightforward, borrowing the vbo setup code from rmqengine (thanks!).

I got a nice lighting setup that produces identical results as the Fitz code; using the formula you posted here http://forums.inside3d.com/viewtopic.php?f=3&t=2983 to reproduce the anorm_dots table without having to pass the table into the shader - I calculate the shadevector in C, and just do the dot product with each vertex normal in the shader.

code is here if anyone's interested, needs some tidying and fixing lazy memory management in places..
https://github.com/ericwa/Quakespasm/compare/master...glsl-alias 
@ericw 
Since you're working on MDLs, and if you're interested, here's a better way of evaluating mins and maxs: http://pastebin.com/aCTyXjjm (this just reverses the calculation from modelgen.c)

And here you can recalculate normals (again, based on code from modelgen.c): http://pastebin.com/AMdpeB7Z

The anorms table is just an icosahedron subdivided twice so that can also be calculated in code if you like. 
Thanks 
will check those out! 
@ericw 
How can I copy the text from gl_info to a file?
Not sure if this helps but here is the stdout.txt

Command line: C:\id\QUAKE\quakespasm.exe -sndspeed 44100 -heapsize 92000 -surfcachesize 320000 +crosshair 0 -zone 65536 -game aq
Found SDL version 1.2.15
Quake 1.09 (c) id Software
GLQuake 1.00 (c) id Software
FitzQuake 0.85 (c) John Fitzgibbons
FitzQuake SDL port (c) SleepwalkR, Baker
QuakeSpasm 0.90.0 (c) Ozkan Sezer, Stevenaaus
Host_Init
Playing registered version.
Console initialized.
UDP Initialized
WIPX_OpenSocket: Address family not supported by protocol family
WIPX_Init: Unable to open control socket, IPX disabled
Exe: 14:28:31 Sep 29 2014
89.8 megabyte heap
Video mode 1600x900x32 (24-bit z-buffer, 0x FSAA) initialized
FOUND: ARB_vertex_buffer_object
FOUND: ARB_multitexture
GL_MAX_TEXTURE_UNITS: 8
FOUND: ARB_texture_env_combine
FOUND: ARB_texture_env_add
Warning: vertical sync not supported (SDL_GL_GetAttribute failed)
FOUND: EXT_texture_filter_anisotropic
FOUND: GL_ARB_texture_non_power_of_two
Intel Display Adapter detected, enabling gl_clear

Sound Initialization
SDL audio spec : 44100 Hz, 1024 samples, 2 channels
SDL audio driver: dsound, 65536 bytes buffer
Audio: 16 bit, stereo, 44100 Hz
SDL detected 0 CD-ROM drives

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

execing quake.rc
execing default.cfg
execing config.cfg
execing aqalias.cfg
Unknown command "r_maxsurfs"
Unknown command "r_maxedges"
execing autoexec.cfg
Unknown command "#bind"
execing airsay.rc
Airsay.rc v0.9 (21.10.97)
Radio communications script for AirQuake
By FM1_Echo and FM1_Bravo
Based on SayTeam.rc v1.3 by John Laessig
http://tyr.nimad.fi/~fullmoon
3 demo(s) in loop
]gl_info
GL_VENDOR: Intel
GL_RENDERER: Intel(R) HD Graphics 4000
GL_VERSION: 4.0.0 - Build 9.17.10.2963
GL_EXTENSIONS:
GL_EXT_blend_minmax
GL_EXT_blend_subtract
GL_EXT_blend_color
GL_EXT_abgr
GL_EXT_texture3D
GL_EXT_clip_volume_hint
GL_EXT_compiled_vertex_array
GL_SGIS_texture_edge_clamp
GL_SGIS_generate_mipmap
GL_EXT_draw_range_elements
GL_SGIS_texture_lod
GL_EXT_rescale_normal
GL_EXT_packed_pixels
GL_EXT_texture_edge_clamp
GL_EXT_separate_specular_color
GL_ARB_multitexture
GL_EXT_texture_env_combine
GL_EXT_bgra
GL_EXT_blend_func_separate
GL_EXT_secondary_color
GL_EXT_fog_coord
GL_EXT_texture_env_add
GL_ARB_texture_cube_map
GL_ARB_transpose_matrix
GL_ARB_texture_env_add
GL_IBM_texture_mirrored_repeat
GL_EXT_multi_draw_arrays
GL_SUN_multi_draw_arrays
GL_NV_blend_square
GL_ARB_texture_compression
GL_3DFX_texture_compression_FXT1
GL_EXT_texture_filter_anisotropic
GL_ARB_texture_border_clamp
GL_ARB_point_parameters
GL_ARB_texture_env_combine
GL_ARB_texture_env_dot3
GL_ARB_texture_env_crossbar
GL_EXT_Shutting down SDL sound 
@ericw 
can ambient sounds be made to always loop even if do not contain a repeat node?
*Read files directly from the game folder, so user can drag & drop models/sounds etc
I can see these two would be convenient for modding, but would be incompatible with other engines so I'm not sure.

Actually there are a few engines that also read from the folders: directq and i think qrack

the ambient sound looping would also be really useful

>Bugs
when "R_novis 1":
models, doors and sprites are not visible when looking into the water,
and while submerged looking out

>Requests
r_telealpha, r_lavaalpha, r_slimealpha;
those commands don't exist ; r_wateralpha affects all fluids 
 
i think the ambient sound looping feature is bad because it would encourage the creation of less compatible content for no good reason.

Also, it wouldn't even solve the problem fully because looping is needed for more than just ambients.

How about a simple command-line tool to convert any wave file to looping? This would help modders just as much and the results would be compatible with all engines. 
 
You can do looping with http://www.wavosaur.com/ which is freeware! 
R_novis 1 
r_novis 1 turns off vis testing client side which only affects the world model and static entities (torches, func_illusionary, ..)

Server side, the server is still checking to see if an entity is in a visibility leaf.

DirectQ has sv_novis 1 which turns off server-side visibility checking against entities (sprites, doors, monsters).

sv_novis is probably on in your DirectQ. 
@necros 
fair enough lol 
 
ranger, the gl_info output looks ok, only thing i can suggest is try with a clean config if you haven't already. i've tested QS on the hd 4000 i think (recent-ish intel graphics, anyway) and IIRC it can handle even the largest releases like the rubicon pack decently. 
I Got This Error 
"gamedir should be a single directory name, not a path"

How to make the engine accept path (like addon/czg07) as valid argument for gamedir again? 
@eric 
deleting the config did nothing

but removing the heapsize surfcachesize zone
args from the CL has removed the lag 
 
Hey Baker, are you interested in refreshing the QS build in http://quakeone.com/proquake/Quakespasm_Steam_Easy_Install.exe
 
Updated 
 
Well that's service! 
Bugs 
>Bugs
*sometimes the player gets stuck/stopped going down ramps/slopes

*sometimes the mouse randomly goes crazy and makes the camera spin wildly

*When loading maps digs05, digs06

the following appear in the console:

The anomaly
Using protocol 666
Couldn't find a cdrip for track 0
player entered the game
]map digs06
Client player removed
Warning: 40068 faces exceeds standard limit of 32767.
Warning: 48772 marksurfaces exceeds standard limit of 32767.
Warning: 36832 clipnodes exceeds standard limit of 32767.
Warning: 9667 visleafs exceeds standard limit of 8192.
Warning: 9394 byte signon buffer exceeds standard limit of 7998.

FITZQUAKE 0.85 SERVER (51103 CRC)

The Anomaly 2: Water
Using protocol 666
Warning: 370 models exceeds standard limit of 256.
Warning: 69 lightmaps exceeds standard limit of 64.
Couldn't find a cdrip for track 0
player entered the game
Warning: 913 edicts exceeds standard limit of 600.

*There is a lot of Z-fighting visible on maps 
 
*sometimes the player gets stuck/stopped going down ramps/slopes

Do you have host_maxfps above 72?

Frames per second above 72 will cause physics problems in most Quake engines in single player.

[Main exceptions: DarkPlaces and the last couple of version of DirectQ because they have framerate independent server and therefore physics. No Quakeworld engine (like FTEQW) would have this issue either.] 
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.