Giter Club home page Giter Club logo

openarena / engine Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ioquake/ioq3

209.0 209.0 50.0 58.25 MB

OpenArena modifications to the ioquake3 engine

Home Page: http://openarena.ws

License: GNU General Public License v2.0

Makefile 0.46% C 97.70% Assembly 0.26% Objective-C 0.10% MATLAB 0.01% GLSL 0.48% HTML 0.39% Shell 0.22% NSIS 0.07% Yacc 0.02% Roff 0.12% Perl 0.05% Rich Text Format 0.01% CMake 0.11% VBScript 0.01% AMPL 0.01%

engine's People

Contributors

amanieu avatar andreyv avatar cmf028 avatar dersaidin avatar ensiform avatar grantwwoodford avatar hgs3 avatar icculus avatar inolen avatar ir4t4 avatar jeremiah-sypult avatar jonathangray avatar leilei- avatar lnussel avatar losinggeneration avatar nuclearmonster avatar oitzujoey avatar opvolger avatar r-a-sattarov avatar razish avatar richard-allen avatar rilysh avatar sago007 avatar smiletheory avatar thiloschulz avatar timangus avatar tjdub avatar xhairball avatar zturtleman avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

engine's Issues

NT4 crashes with Sys_WritePIDFile

During startup, after "unable to get SHFolder.dll" it sends openarena.x86.exe to Dr. Watson with an illegal exception.

I believe it may be related to creating a PID file. Dummying out the Sys_WritePIDFile stuff in common.c lets the game start properly.

Restore r_gldriver

This cvar is intended to select different GL ICDs and MiniGL drivers, most importantly for using secondary video cards (i.e. 3Dfx Voodoo Graphics / 3Dfx Voodoo2) or using certain wrappers (i.e. GLDirect, AltoGL) or even some software rendering drivers (i.e. SGI OpenGL for Windows)

Currently this is not present, and it causes the game to be forced to use opengl32.dll via SDL.

Get Windows 95 support working again

"but why? No one uses these operating systems!!!"

  • It's still used on some later P4 builds and the like
  • some old video hardware only shipped W9X drivers
  • the engine still has very old limitations that would still keep it in the 9x gaming territory anyway (like no Unicode/UTF-8)

???Possible Solutions???

  • Hack up Mingw64's wspiapi.h to be compatible enough
  • Put PSAPI-dependent stuff in a define

Com_QueueEvent: overflow

oa_issues

and ^3Can't use keys or values with a '"': verload" =

My system is ubuntu16.04.
I can not refresh anything from the server sometime, but most of time it is just fine.
Is there some wrong?

About setting widescreen fov parameter [question]

This thread is more about question than issue. The following code is extracted from RE_RenderScene in tr_scene.c

parms.fovX = tr.refdef.fov_x;
parms.fovY = tr.refdef.fov_y;

if (!( fd->rdflags & RDF_NOWORLDMODEL ) ) // don't affect interface refdefs
{
	float zoomfov = tr.refdef.fov_x / 90;	
	int thisisit;
	float erspact = tr.refdef.width / tr.refdef.height;
	float aspact = glConfig.vidWidth / glConfig.vidHeight;
	if (erspact == aspact) thisisit = 1;
	if (((tr.refdef.fov_x /  tr.refdef.fov_y) > 1.3) && (thisisit))
        {
                // undo vert-
                parms.fovY = parms.fovY * (73.739792 / tr.refdef.fov_y) * zoomfov;
                // recalculate the fov
                parms.fovX = (atan (glConfig.vidWidth / (glConfig.vidHeight / tan ((parms.fovY * M_PI) / 360.0f))) * 360.0f) / M_PI;
                parms.fovY = (atan (glConfig.vidHeight / (glConfig.vidWidth / tan ((parms.fovX * M_PI) / 360.0f))) * 360.0f) / M_PI;
        }
}

It boil down to

parms.fovX = tr.refdef.fov_x;
parms.fovY = tr.refdef.fov_y;
if (!( fd->rdflags & RDF_NOWORLDMODEL ) ) // don't affect interface refdefs
{
    if ((parms.fovX > parms.fovY * 1.3f) && (tr.refdef.width * glConfig.vidHeight == glConfig.vidWidth * tr.refdef.height ))
    {
        // undo vert-
        parms.fovY = parms.fovX * (73.739792 / 90.0);
        // recalculate the fov_x
        parms.fovX = atan( tan(parms.fovY*(M_PI/360.0)) * glConfig.windowAspect ) * (360.0 / M_PI);
    }
}

because:

  1. glConfig.windowAspect = glConfig.vidWidth / glConfig.vidHeight is already computed previously, don't compute it every time in the main loop.

  2. parms.fovX = (atan (glConfig.vidWidth / (glConfig.vidHeight / tan ((parms.fovY * M_PI) / 360.0f))) * 360.0f) / M_PI are equivalent to parms.fovY = (atan (glConfig.vidHeight / (glConfig.vidWidth / tan ((parms.fovX * M_PI) / 360.0f))) * 360.0f) / M_PI; because:

glConfig.vidWidth / glConfig.vidHeight = tan( parms.fovX * M_PI / 360) / tan( parms.fovY * M_PI / 360)
there no need to compute parms.fovY again, right?

  1. what i am doing is trying to avoid float divided, it seems that adding this code code snippet to my rendergl2 module make sarge run faster. it may somewhere which OA different from ioq3.

I don't know how 1.3f and 73.739792 this two parameters comes from. Can someone tell something about that?

Modularizing the audio/video renderers

This is something we talked on Discord.

3DJ implemented support for OpenAL Soft. The problem is that such support replaces OpenAL HW rather than having it as an alternative. And, well, we don't have exactly a fond memory of when IOQ3 implemented SDL in an invasive way (long story short: it was the beginning of all the big problems).

The ideal solution would be two engine cvars controlling the audio and video devices. This has lots of utilities, among them helping troubleshooting and allowing new devices to be integrated.

That said, unlike gamecode, I don't have enough knowledge of engine to do something about it. So I'm leaving this as just an issue.

.pk3 file download rate slow(no more than 13kb/s) in my ubuntu16.04

issue1

I have downloaded many maps files, but none of the download rate can exceed 13kb/s, I uploaded a video to show the case:
lowDowloadRate.mp4.zip

My OS is Ubuntu16.04, win7 don't have this issue. Onetime when I play OA on WIN7, I find that the map download speed is much faster than my ubuntu, so i try to figure out where the problem is.

It may cause by libcurl 7.35.0 lib.
As I remove the libcurl-7.35.0 folder from the engine SDL2 codebase, then make it link the system default libcurl (7.47.0). After that, the download rate up to 100+kb/s, sometime i can get 1Mb/s.

My system default libcurl is installed by sudo apt-get install curl, the following is the returned information.

Reading package lists... Done
Building dependency tree
Reading state information... Done
curl is already the newest version (7.47.0-1ubuntu2.6).

Integrating latest libcurl can be done in later time.

You can try my code repository( https://github.com/suijingfeng/engine )๏ผŒ to see if the download speed can be improve in ubuntu16.04.

Placeholder shader scripts

Reason: filling in/substitute specific missing textures with special placeholder scripts if a texture is missing. for q3 mapmodels particularly (i.e. generic stone for major/visor/gargoyle/fem/jesus statues, metal for lampposts)

Right now it's

  • load texture, if fail, use a default placeholder shader
  • if default placeholder ishader aren't found, do the white/gray box image

Desired behavior:

  • load texture, if fail, find and load a placeholder special shader script
  • if placeholder shader doesn't exist, do the default placeholder shader
  • if default placeholder ishader aren't found, do the white/gray box image
  • load texture, if exists, disregard whatever the placeholder shader is

Dynamic lights to light up areas

Jedi Academy has a way of doing this and is open source, but under the GPLv2 (with no later version) so that may be incompatible.

Earlier Q3Tests also had a way of doing this by the old Q2-ish way of updating the lightmap, but I think this is all torn out on the source release anyway and it's unlikely that Carmack has kept an archive of the older code and it's also legally unlikely he can clear it for release anyhow.

3dfx V1 paletted texture errors

OA's paletted texture feature is designed for an Index w/ transparent color format, which the 3dfx Voodoo Graphics GL ICD does not support (but all the later Voodoos starting from Voodoo2 do). As a result, all the indexed alpha texels on paletted textures are not rendered transparent.

A solution would be to have them processed as 16-bit RGBA (with a paletted processing, how GLQuake and Quake2 did it) and upload them as that, though it would be trickier to detect the V1's palette support limits to determine this behavior.

Vertex shader leaks and corrupts stuff until it segfaults

In the leidev branch i've realized how bad the vertex shader code has become after cleaning up some of my deprecated shader stuff. Problem is, debugging gdb with it leads to a segfault in other parts in the code (like bots), when there's obvious visual symptoms of a memory issue:

  • Dynamic light texture sometimes gets corrupted

  • Whiteimage sometimes gets corrupted

  • in a debug build, tcMod atlas effects pick the wrong subimage (smoke images becoming shockwave images)

DDS texture load support

Pros:

  • Saves lots and lots of video memory
  • Very quick loading
  • Modern video cards, usually made after 1999 natively support it
  • Smaller overall base data size than TGA+JPG as well as aggressively optimized PNGs

Cons:

  • an evil patent prevents authentic legal software decoding. (Darkplaces has its own patent-free decoding method)
  • No texture processing (which is okay to compromise since there's already mips made in the dds's anyway...usually.)
  • Artifacts occur, like sudden squares being formed around curves and edges. Can be worked around with alternate encoders, like S2TC
  • Not implemented everywhere, particularly Free display drivers steer clear of it due to the aforementioned patent issue. (It is ubiquitous on Windows however, mostly from 1999-2000 hardware on)

Using Wayland render results in Crash

In Arch under a Wayland GNOME session, I get the following error when I try to launch OpenArena using Wayland:

[luke@lt-arch openarena-0.8.8]$ SDL_VIDEODRIVER=wayland ./openarena.x86_64 
ioq3+oa 3.0.0a_GIT_e120f49e-2018-06-16 linux-x86_64 Jul 24 2018
Have SSE support
----- FS_Startup -----
Current search path:
/home/luke/.local/share/OpenArena/baseoa
./baseoa
./baseoa/pak6-patch088.pk3 (711 files)
./baseoa/pak6-patch085.pk3 (559 files)
./baseoa/pak6-misc.pk3 (229 files)
./baseoa/pak5-TA.pk3 (139 files)
./baseoa/pak4-textures.pk3 (1753 files)
./baseoa/pak2-players.pk3 (669 files)
./baseoa/pak2-players-mature.pk3 (231 files)
./baseoa/pak1-maps.pk3 (100 files)
./baseoa/pak0.pk3 (1042 files)

----------------------
5433 files in pk3 files
execing default.cfg
execing q3config.cfg
couldn't exec autoexec.cfg
Hunk_Clear: reset the hunk ok
Gtk-Message: 14:48:09.764: GtkDialog mapped without a transient parent. This is discouraged.
----- Client Initialization -----
----- Initializing Renderer ----
-------------------------------
QKEY found.
----- Client Initialization Complete -----
----- R_Init -----
SDL_Init( SDL_INIT_VIDEO ) FAILED (No available video device)
SDL_Init( SDL_INIT_VIDEO ) FAILED (No available video device)
Setting r_mode -1 failed, falling back on r_mode 3
SDL_Init( SDL_INIT_VIDEO ) FAILED (No available video device)
----- Client Shutdown (Client fatal crashed: GLimp_Init() - could not load OpenGL subsystem) -----
RE_Shutdown( 1 )
Hunk_Clear: reset the hunk ok
-----------------------
GLimp_Init() - could not load OpenGL subsystem
Gtk-Message: 14:48:16.548: GtkDialog mapped without a transient parent. This is discouraged.

Not clear how to disable filtering

I am running the latest version of the OA3 engine...and I noticed that the game looks a lot worse than it usually does. I tried setting r_tvfilter to 0 to see if that would help at all.

...what settings should I set so it looks clear again?

Console window missing

The console window that would appear on startup on Windows is missing.

Why this is a problem:

  • Immediately informative startup errors/crashes, who's going to know to read a stderr.txt or paste an error from the clipboard?
  • Windows doesn't get consoles.
  • Carmack added this for a reason in the first place. Quake2, Wolf3D and the Keen series are the only id Software games without a startup console.

Reasonable texture sizes

OA textures are 2x the resolution at least. Addons for Q3 don't obey this rule so they would look visually inconsistent with their texel density.

The proposal/idea I'm thinking is a text script (scripts/*.texsize) that specifies the "reasonable base width" for each hi-res OA texture so it would be consistent with Q3 picmip values. like

textures/gothic_block/killblock69tall 256
textures/gothic_block/killblock69short 256

which resizes the 512x1024 texture (of any image format) to 256x512 at upload32 time. Specifying height won't be neccessary

To disable it would be r_picmip -1.

When compiling the game on macOS, app bundle generation fails

Setup:
macOS Big Sur 11.6.1 (20G224)
Apple clang version 13.0.0 (clang-1300.0.29.30)

When compiling the game through the make-macosx.sh script, generating app bundle (through make-macosx-app.sh) fails. The openarena.x86_64 binary compiles successfully and can be launched from the Terminal (although you can't really play: #61).

The error message:

./make-macosx-app.sh: no ioquake3 binary architectures were found for target 'release'

After a quick investigation of the make-macosx-app.sh it seemed to me that the PRODUCT_NAME="ioquake3" should be changed to PRODUCT_NAME="openarena" (I don't know how this script ever worked before as-is), so I changed that.

But then, I got many errors similar to...

error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo: no input files specified
usage: lipo <input_file> <command> [<options> ...]

As I'm not familiar with these Xcode command line tools and I'm not sure how/if that worked before, I don't know what's the solution here.

Raspberry Pi2/3 support officially

The "Raspberry Pi version" of OA has mysteriously disappeared, the ioquake3 Raspberry Pi build is over 4 years old, and the latest ioquake3 requires compiling your own kernel to build properly on Pi.

The OpenGL wrapper for the Pi 3 is experimental, and while it "works", it's extremely slow (worse than Rage Pro performance easily), and crash-prone. So that's not a good solution either.

Perhaps an no-nonsense Pi port is in order? Tons of deb packages of everyone reinventing the wheel, but no source code.

directional shrapnel damage

if rocket blows up towards opponent vector say a ground shot directly at them it should spray more damage to make it more realistic as peices of shrapnel and floor would still hit them. also ricashae's would be neat.

Overbright consistency bug with vertex colors

Filing this issue to remind myself.

For example, marks are half the opacity when overbright's on. Vertex-baked colors in maps are also affected

This is entirely my fault and I've just got to figure out where I screwed up in renderer_oa/tr_shader.c

I'm sure my original intent for this was to get the rgbGen vector values shifted down for more practical use with consistent visuals.

Typo in compiling code?

I got this error when compiling. was this just a typo?

sys_unix.c:(.text+0x1e63): undefined reference to `fesetround'

Particle spawn issues

The particle system in renderer_oa has trouble initializing new particle effects for a reason I overlooked.

Filing this issue to remind myself.

Make r_slowness platform-agnostic.

r_slowness and related are a series of cvars introduced by leilei. Here's what they do:

r_slowness
r_slowness_cpu
r_slowness_gpu

should roughly fake the speed of the MHz you set CPU to (based on p2 performance, default is 300) GPU is much looser and is based on mhz (like 93-96 for Voodoo2) and also scales the slowness by screen resolution. There's even a synthetic bottleneck. It won't be practical for play, but may be useful for content production (like for realizing the critical performance choke points in the maps - oa_spirit3 has a BAD one thanks to the portal in the water, for example)

What it really is, is just a sleep command called every finished backend buffer determined by a bunch of division on numbers of vertices, indices, surface count, etc... It's much better for nailing low performance that com_maxfps can't reach.

Currently no way to simulate texture thrashing (r_slowness_vram would be such a cvar, notably R_SumOfUsedImages does not function at all - and would have been great for doing this)

Such useful feature for development should be platform-agnostic, since it currently works only in Windows. How can this be achieved?

Flash reduction (...for your health!)

By default, the game has very bright dynamic lights and bold chiaroscuro effects on models around dynamic lights combined with a bright muzzleflash that happens in almost a single frame which may be a seizure risk when repeated. This is a bad idea nowadays with high framerates.

Plans:

A new cvar, r_dynamicStrength (0-1), 1 being default, 0 being none as if it were off. Affects dynamic lights on models

A new cvar, r_flashOpacity, (0-1). 1 being default, 0 being off.

A new rgbGen identity clone, which is controlled by r_flashOpacity, and is to be assigned to 'flashing' shaders like weapon's muzzleflashes.

3dfx gamma control is broken

You can't adjust brightness or have overbrights on a 3dfx card.

Not an issue in q3 - both can be done. The extension WGL_3DFX_gamma_control is used for this.

Restore 8-bit sound painting

Q3 had this from the start, defaulted it enabled (s_loadas8bit 1 / s_compression 1 would use this) and had significant memory/performance differences. It was gutted out in some 1.30+ version with no trace in the released source nor the released sources of RTCW and JK2.

Reimplementing this might take some work.

FUN FACT: the 4-bit ADPCM painting is still in the code (what used to be s_compression 2) but that's generally slower, but had larger memory savings.

Extension list crash with UI

Clicking the "driver info" button in old menu modules with a really long extension list would cause a crash.

I'd probably want only showing the available extensions that the renderer actually uses and leave off with "and x more" exposed to the modules.

This bug happens in both Linux and Windows.

Remove 3dfx splash

On 3dfx hardware with 3dfx drivers, the game will set off 3dfx's splash animation two or three times when initializing a video mode. This takes up a lot of time and is bad.

Q3 did not do this.

Sound effects can't be interrupted

Q3 used to do this, and this was removed in 1.27b (around the same time they removed A3D support)

Why this is necessary? The quad damage sound distortion is terrible

Split-screen play

One computer, via gamepads

  • would need special cgame tricks as well, like configurable model and handicap. Name probably won't matter
  • maybe bind2 commands and joy2_ cvars to handle controls for the second player
  • up to 4 I am not sure.
  • 4 keyboards and 4 mice are not plain feasible for this so don't even think about it
  • could lead to something special, like a libretro core to bring OA3 to the very barren PC couch shooter world

Spearmint allegedly does it (haven't tried) but that's GPLv3 which is venturing into license toxicity. I'd like to keep GPLv2+ as much as I can

Windows version with XMP cannot be compiled as a static linked binary

Currently the Windows nightly builds (http://openarena.ws/board/index.php?topic=5263.0) are compiled without XMP support.

The nightly build are compiled with static linking in an MXE environment.

I have constructed a Docker image with a static version of libxmp-lite but I get the following linker errors:

LD build/release-mingw32-x86/openarena.x86.exe
/tmp/ccX69R76.ltrans4.ltrans.o:<artificial>:(.text+0x19fb): undefined reference to `_imp__xmp_get_frame_info'
/tmp/ccX69R76.ltrans4.ltrans.o:<artificial>:(.text+0x1a11): undefined reference to `_imp__xmp_get_module_info'
/tmp/ccX69R76.ltrans4.ltrans.o:<artificial>:(.text+0x1a5d): undefined reference to `_imp__xmp_play_buffer'
/tmp/ccX69R76.ltrans4.ltrans.o:<artificial>:(.text+0x1ce5): undefined reference to `_imp__xmp_end_player'
/tmp/ccX69R76.ltrans4.ltrans.o:<artificial>:(.text+0x1cf3): undefined reference to `_imp__xmp_release_module'
/tmp/ccX69R76.ltrans4.ltrans.o:<artificial>:(.text+0x1d01): undefined reference to `_imp__xmp_free_context'
/tmp/ccX69R76.ltrans4.ltrans.o:<artificial>:(.text+0x234a): undefined reference to `_imp__xmp_create_context'
/tmp/ccX69R76.ltrans4.ltrans.o:<artificial>:(.text+0x2364): undefined reference to `_imp__xmp_load_module_from_memory'
/tmp/ccX69R76.ltrans4.ltrans.o:<artificial>:(.text+0x242b): undefined reference to `_imp__xmp_start_player'
/tmp/ccX69R76.ltrans4.ltrans.o:<artificial>:(.text+0x2445): undefined reference to `_imp__xmp_get_module_info'
/usr/lib/mxe/usr/lib/gcc/i686-w64-mingw32.static/4.9.3/../../../../i686-w64-mingw32.static/lib/../lib/libxmp.a(control.o): In function `xmp_free_context':
/tmp/libxmp-lite-4.4.1/src/control.c:57: undefined reference to `_imp__xmp_release_module'
/usr/lib/mxe/usr/lib/gcc/i686-w64-mingw32.static/4.9.3/../../../../i686-w64-mingw32.static/lib/../lib/libxmp.a(load.o): In function `xmp_release_module':
/tmp/libxmp-lite-4.4.1/src/load.c:604: undefined reference to `_imp__xmp_end_player'
/usr/lib/mxe/usr/lib/gcc/i686-w64-mingw32.static/4.9.3/../../../../i686-w64-mingw32.static/lib/../lib/libxmp.a(format.o): In function `format_list':
/tmp/libxmp-lite-4.4.1/src/format.c:62: undefined reference to `xm_loader'
/usr/lib/mxe/usr/lib/gcc/i686-w64-mingw32.static/4.9.3/../../../../i686-w64-mingw32.static/lib/../lib/libxmp.a(format.o):format.c:(.rdata+0x0): undefined reference to `xm_loader'
/usr/lib/mxe/usr/lib/gcc/i686-w64-mingw32.static/4.9.3/../../../../i686-w64-mingw32.static/lib/../lib/libxmp.a(format.o):format.c:(.rdata+0x8): undefined reference to `it_loader'
/usr/lib/mxe/usr/lib/gcc/i686-w64-mingw32.static/4.9.3/../../../../i686-w64-mingw32.static/lib/../lib/libxmp.a(format.o):format.c:(.rdata+0xc): undefined reference to `s3m_loader'
collect2: error: ld returned 1 exit status

As far as I can see the "imp_" means that the binary expect to be linked against a DLL instead.

The solution likely involves a strategic placed "#define" somewhere.

Homepath on *nix should fllow the XDG standard?

I admit that it is a little late to move the home folder to a more standard location but I think it should be done.
This is why there is a "?" in the title.

Currently "$HOME/.openarena" is used.
This should be "$XDG_DATA_HOME/openarena"
Where XDG_DATA_HOME should default to "$HOME/.local/share" if not defined.

A possible solution could be to check for presence of "$XDG_DATA_HOME/openarena" if it exists and then try "$HOME/.openarena" if it does not exist: Create "$XDG_DATA_HOME/openarena" and create a symbolic link in "$HOME/.openarena" to it. After a couple of years then all the documentation has been updated we stop creating the symbolic link.

A way to make the transfer easier is to move the .openarena folder to "$XDG_DATA_HOME/openarena" and create the symbolic link in case .openarena exists and the other does not. It can be a bit risky. We need to test the case where .local/share is mounted on a different disk than .openarena.

Furthermore the engine currently assumes that $HOME is defined. This is normally the case but it should continue to look for passwd in case it is not. I don't think it is worth looking into. People would have complained.

Support for 64 bit Mac OS Catalina

Unfortunately current build doesn't work with newest Mac OS Catalina, since they dropped support for 32 bit applications. I tried to compile using included make-macosx.sh script after installing libogg libvorbis sdl12 from brew. Using resources from original build 0.8.8 the app starts fine. Menu works fine. Unfortunately as soon as there are 3d graphics involved (for example Player settings in menu, or starting or connecting to any game) the app crashes with the following log

stitched 20 LoD cracks
...loaded 4106 faces, 90 meshes, 0 trisurfs, 0 flares
----- Client Shutdown (Received signal 6) -----
----- FS_Startup -----
Current search path:
/Users/user/Library/Application Support/OpenArena/baseoa
./baseoa
./baseoa/tr1ckhouse-beta3.pk3 (27 files)
./baseoa/pak6-patch088.pk3 (711 files)
./baseoa/pak6-patch085.pk3 (559 files)
./baseoa/pak6-misc.pk3 (229 files)
./baseoa/pak5-TA.pk3 (139 files)
./baseoa/pak4-textures.pk3 (1753 files)
./baseoa/pak2-players.pk3 (669 files)
./baseoa/pak2-players-mature.pk3 (231 files)
./baseoa/pak1-maps.pk3 (100 files)
./baseoa/pak0.pk3 (1042 files)
    
----------------------
5460 files in pk3 files
forcefully unloading cgame vm
RE_Shutdown( 1 )
OpenAL capture device closed.
-----------------------
----- Server Shutdown (Received signal 6) -----
==== ShutdownGame ====
AAS shutdown.
---------------------

Is there any direction i should follow to find the problem or maybe there will be an official build with Mac OS Catalina support?

A map crashing with "Unsupported color conversion request" on nightly builds binaries

Hello.
Trying "TrueCombat" Q3 mod (http://www.moddb.com/mods/true-combat/downloads/true-combat-13-full) with OA, it has been noticed that trying to load the map named "Bahamot" casuses the game to crash (tested on Windows with nightly build binaries), with an error saying "Unsupported color conversion request".
The bug happens with nightly builds, while the map works flawlessly with old OA 0.8.8 Windows binaries. Crashing isn't a nice thing, so, although not urgent, I think this may be worth a look before OA3 will be released.

Probably the crash may be caused by some texture with some strange encoding, but I don't know which one.
Probably not the same problem which causes the game to crash in "oacmpctf1" map in OACMP Vol1 v3 (IIRC, jpeg "progressive encoding" not supported in Windows binaries -while supported in Linux binaries-), because that crashed in OA 0.8.8, while the TC "bahamot" map works in 0.8.8 binaries.
Searching a bit, I found this https://dev.etlegacy.com/issues/993 (Enemy Territory Legacy): there, they said the problem was due to a jpg file using "CMYK" color mode. But in their case, it wasn't a crash, it was just a texture not shown, with a warning. So maybe it's yet another thing (grayscale maybe?)...

Possible memory leak with XMP playback

To reproduce:

  • get a nice big mod/s3m/it/xm file.
  • "music" it a bunch of times
  • watch a ncie crash happen.

This might have also been related to using an outdated (2014) libxmp while trying this though, Have not yet updated that to see if it's reproducable in it, but there's still the possibility it's OA's fault here

Software renderer module

My plan was to take TinyGL from the ResidualVM tree and integrate it into renderer_soft or replace the sdl_glimp.c for it

Pros:

  • might be faster than Mesa on some platforms
  • expand portability to non-accelerated platforms (i.e. PS3, PS4, DOS)

Cons:

  • doesn't support every extension (and that's by design)
  • probably a lack of blending modes (that's ok though, r_parseStageSimple is intended to work with that)

Glitchy mirror if sky with farbox is visible - Nightly builds

Hi, I noticed a glitch which happens with current Windows nightly builds (and, although it looks a bit different, also in the Android port, at least on my old S4), while it works correctly with old 0.8.8 binaries.

It looks like that if a sky with a "farbox" (http://toolz.nexuizninjaz.com/shader/shader/section3.htm#3.1) is visible in a mirror, it is drawn very glitchy inside the mirror.

You can test in q3tourney6ish map (http://www.mapraider.com/maps/openarena/free-for-all/5586/q3tourney6ish), which uses skies2/nebula2 shader, but I did some try with some other shader including a farbox such as skies2/nebula and another one, and the result was the same, while "standard" skies were correctly drawn instead. To me it looks like the glitch is somehow related with the presence of a farbox.

Screenshots show comparison of 0.8.8 binaries with 2019-09-29 nightly builds. Windows 10 64 bit with an ATI card.

shot0174

shot0175

A few sound-related bugs

I didn't know if I had to open a distinct "issue" for each one.

These bugs have been tested with engine and gamecode nightly builds from July 2016 (see this forum post). I haven't noticed changes related to them in these last months, so they should still be there.

  • Bug which affects both SDL and OpenAL modes. Specifying "[path]\filename.ogg" in target_speaker causes the game to search for "filename.ogg.wav" and "filename.ogg.ogg", but NOT for "filename.ogg"... I can guess searching for all three (or four, considering also "filename.wav") would be the "safer" solution.
  • Bug which affects OpenAL mode only. Stereo sound files (which in theory should not be used, but maybe somone used them anyway) are played at FULL VOLUME even if you go far from them (in SDL mode, they actually fade out as you go away, like mono sounds do in both modes).

Also, small differences I noticed between DSL and OpenAL modes are yellow warnings related to sounds:

  • In SDL mode, each time the music backgound track (worldspawn) re-starts, "warning: music is not 22k stereo" is shown. That is not shown in OpenAL mode. If that message has no need to exist anymore, it may be completely removed or may be shown only with "/developer 1", maybe...
  • In SDL mode, if it cannot find a sound file for target_speaker, there are warnings in console at map loading AND everytime the sound should have played. In OpenAL mode, only the warning at map loading applies. Which one is better?

I do not know if there are other entities capable of playing user-defined sound files.

"Ignoring surfaces... the max is 32 surfaces" warning (resulting in missing texture) on nightly builds binaries

An user on Discord reported to me about a problem he noticed while using a certain third party model with OA nightly build binaries.

The model is this one
http://en.ws.q3df.org/models/downloads/q3mdl-q4hybrid.zip
it's a quite "heavy" model, the zip even contains two pk3 files, one with lower and one with higher polycount.

If using nightly builds binaries, the model's face is shown as "missing texture", as are the "holograms" it generates during its idle animation. In console there is "WARNING: Ignoring surfaces in 'models/players/q4hybrid/lower_classica.skin', the max is 32 surfaces!" message.

If using classic OA 0.8.8 binaries, instead, that specific warning is not shown and model's face and its "holograms" are shown correctly.

Here you can see a comparison between classic 0.8.8 binaries and nightly build binaries:
shot0093
shot0094
(By the way, by doing this test I see that playing the game with nightly build binaries -with same settings- it looks noticeably darker - I was using Windows 10 with an ATI card, with the game in "windowed" mode, but the same also happens in "fullscreen").

Side notes: using the model shows some issues in general, I just mention them here to say it's not a model I think I would actually use, despite some cool things:

  • I don't like the fact that in the idle animation the model moves away from its hitbox, making it an harder target.
  • Some of its skins appear to rely in some Q3A textures, so with some skins part of its body is just transparent (invisible). This seems to happen the same with 0.8.8 and nightly builds binaries.

Flares stutter with vsync

Any flare can induce a stuttering ro players that use r_swapInterval 1 (or higher). The framerate will fluctutate rapidly when one is on the screen. These happen with r_flarequality set to 1 or higher, and/or r_flaresun and r_flaresdlight set.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.