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
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.] 
@ranger 
I'm not presuming to speak on behalf of the QS devs but I do feel that this needs to be said.

You really shouldn't be reporting many of these things as bugs. If you actually read the text, you'll see that most of them are just simple notifications that standard Quake map limits are exceeded (which is OK because QS can support the higher limits) or that MP3 music is unavailable for the map you're loading.

These are not bugs.

Now, it could be argued (and I have done so in the past) that they shouldn't be displayed to players, but that aside, reporting them as bugs is just wasting people's time.

Regarding z-fighting, it was already dealt with before, and z-fighting is a content bug, not an engine bug. Again, bringing up an issue that's already been dealt with, and doing so without adding anything new to the discussion, is also wasting people's time.

I could add something here about one of the reasons why I bailed out of engine development being terminal annoyance at constant badgering of this nature, but - oh wait, I already have. 
Continued 
>Bugs
*Not sure if it's a bug or a limitation, but models with an internal skin taller than 480 cause qs to crash... because qme allows models to have skins with a max height of 512

@mh
Actually it is a bug: the maps, esp the second map, lag in qs as well as interfere with the player's weapon anim lerp (due to the lag/overflow etc)

I don't know enough about zfighting but i believed that it could be solved via modifications to the renderer?

@baker
my host_maxfps is 72 
 
Skins with max height of 480 is an original limitation of the engine. Width (as far as I know) has no limit though. 
However... 
why would a too-tall skin cause a crash? YOu'd think it would at least give an error message and quit to console, or even better, load it correctly but with a warning. 
Mh: 
Now, it could be argued (and I have done so in the past) that they shouldn't be displayed to players, but that aside, reporting them as bugs is just wasting people's time.

I see your perspective, but I felt that the warnings would be useless if they required Developer 1, since i don't think many mappers use that setting. 
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.