Commit graph

3151 commits

Author SHA1 Message Date
Yamagi
1ff3760c76 Refine the g_footstep cvar.
There were complains that always generating footsteps is annoying,
because there will be footsteps while swimming or jumping. Refine
the cvar a little bit:

* `0`: No footsteps at all.
* `1`: Vanilla Quake II behavior.
* `2`: Always footsteps as long as the player has a ground entity.
* `3`: Always footsteps.

The changes the meaning of the values, `2` has become `3`.

Closes #738.
2021-08-25 18:34:24 +02:00
Yamagi
5cc9e91b02
Merge pull request #734 from 0lvin/slots_optimize
Preserve sounds/maps and images on map change
2021-08-21 17:54:57 +02:00
Denis Pauk
ea272241a4 soft: Use SmoothColorImage as r_anisotropic 2021-08-08 23:34:47 +03:00
Denis Pauk
aa6032f00f soft: preserve cache on free slots in image and models list 2021-08-08 17:43:14 +03:00
Denis Pauk
35d598bce6 soft: use local model on load 2021-08-07 23:03:48 +03:00
Denis Pauk
8bd39ad5dd soft: port submodel load code from vk render 2021-08-07 17:24:39 +03:00
Denis Pauk
a8b02d4725 Sound: unload only on run of slots 2021-08-07 10:38:02 +03:00
Yamagi
549b0ee714
Merge pull request #732 from devnexen/pak_load_mem_leak
little memory leak possible when the .pak matches
2021-08-06 20:03:19 +02:00
DC
bc6a40e27e little memory leak possible when the .pak matches 2021-08-06 16:29:16 +01:00
Yamagi
0f7790c8e3 Remove code unnecessary / redundant since last commit. 2021-08-02 09:09:31 +02:00
Yamagi
7db0a89fe1 Refactor filtering if numbered paks.
For historical reasons numbered paks must be loaded before all other
paks. The logic is easy: Add all numbered paks. Iterate over all
available paks, filter out numbered paks and add everything that's left.

Until now a simple glob comparisson against 'pak*' was used for the
filtering. This has two problems:

1. All paks starting with 'pak*' were filtered, regardless if they're
   numbered paks or not.
2. Upper case or mixed case file names that are valid on caseinsenstive
   systems like Windows weren't recognized as numbered paks and added
   twice. Once as numbered pak and once as other pak.

Refactor the logic to only match paks starting with 'pak%d' and use
strcasecmp() for comparison. Closed #730.
2021-08-02 08:44:49 +02:00
Yamagi
e2e2bddfa3 Fix demo loop after changing the game through the menu.
Injecting the demo loop right after the `game` cvar was changed cannot
work: The demo loop is implemented through aliases, aliases are expended
as soon as they're added to the command buffer. However, the game isn't
changed as soon as the cvar is set, but the next time when the control
flow enters the file system. Therefor the aliases get expanded to the
wrong game and the demo loops breaks.

This closes #719.
2021-07-25 09:45:51 +02:00
Yamagi
fb1a2b0ce7 Add a warning that the CMakeLists.txt is unmaintained. 2021-07-23 08:25:07 +02:00
Yamagi
3e0af336d0 Revert "Retire unmaintained CMakeLists.txt."
It turned out that there're some special cases not (yet) covered by the
Makefile. Crossbuilding in specialized chroot environments are one
example.
2021-07-23 08:19:28 +02:00
Yamagi
8f8ecb72a6
Merge pull request #727 from devnexen/macos_build_fix
build fix proposal on mac where archs are well defined.
2021-07-09 10:17:28 +02:00
David CARLIER
a15e53ce60 build fix proposal on mac where archs are well defined.
the arch normalization leads to arm32 bit build under mac m1.
2021-07-03 16:02:58 +01:00
Yamagi
8358e386fc
Merge pull request #722 from 0lvin/gamepad
Sync haptic feedback with sound track
2021-06-30 07:28:51 +02:00
Yamagi
5f769e55e2 Remove cmake from the documentation.
Closes #725.
2021-06-29 11:06:19 +02:00
Yamagi
0763dee264 Retire unmaintained CMakeLists.txt.
I added the CMakeLists.txt 6 or 7 years ago so I could load the code
into Jetbrains Clion. I have moved to another editor years ago and the
cmake stuff is effectively unmaintained since then. We kept it around
in case that we'll do a MSVC port, but that's unlikely at this point.
Since bugreport and problems with the CMakeLists.txt keep coming up,
finally retire them. They can be resurrected from the git history if
we'll ever need them again.

Part of #725.
2021-06-29 11:06:19 +02:00
Yamagi
376d97c54f Correct braino in LDFLAGS / LDLIBS, Windows build fix 2/2. 2021-06-29 09:01:13 +02:00
Yamagi
fb080fc32c Add missing semicolon, Windows build fix 1/2. 2021-06-29 08:58:40 +02:00
Yamagi
1c9a2d89d1 Fix explosive crate beeing cut of in base3.
This is a subtile map bug, one exploding crate in base3 is cut of and
hovering. Reported by @Shockblast and fixed by @ BjossiAlfreds. Closes
2021-06-26 16:53:17 +02:00
Yamagi
61c08eee13 Fix ASAN and UBSAN builds, enhance sanitizers a little bit.
At least for LLVM / Clang the -fsanitize= option must be passed to the
linker before any objects or libraries, otherwise the sanitizers will
either noch link or are disfunctional. Split LDFLAGS into LDFLAGS for
flags and LDLIBS for librariers, pass LDFLAGS before any objects and
LDLIBS after all objects. While at it set RTLD_NODELETE so that shared
libs opened by dlopen() are never deleted from memory when building
with sanitizers.
2021-06-26 16:28:08 +02:00
Denis Pauk
7f1fd069f4 use LittleShort in S_GetStatistics and S_GetVolume 2021-06-26 15:23:07 +03:00
Denis Pauk
c4526bac51 Sync haptic effect to sound track 2021-06-26 15:23:07 +03:00
Yamagi
d9d5552662
Merge pull request #717 from 0lvin/ogg_sound
Add ogg/vorbis sound for effects
2021-06-25 10:18:41 +02:00
Yamagi
c9f7faa7b1 Add logic to mark search path entries as required or optional.
Until 7.45 we supported adding non existent dirs to the search path,
8.00 bails out if it cannot at a dir. It turned out that some users
install the binary through their package management (SYSTEMWIDE is set),
but use local game data. This case was broken, because the SYSTEMDIR
doesn't exist. Fix this by marking the SYSTEMDIR as optional.

Closes #724.
2021-06-20 18:24:22 +02:00
Yamagi
21483dc1bd
Merge pull request #718 from Spirrwell/master
Fix some leaks
2021-06-19 08:48:54 +02:00
Yamagi
f64837868d Bump the CHANGELOG to 8.00. 2021-06-14 16:38:38 +02:00
Yamagi
61059f0b41 Spelling fixes for the CHANGELOG. 2021-06-14 16:17:28 +02:00
Yamagi
495f8be7dd
Merge pull request #721 from devnexen/solaris_build_fix
solairs/illumos build fix proposal.
2021-06-14 16:12:45 +02:00
Denis Pauk
408e7d9a99 Scale down model preview icon is too big 2021-06-13 15:52:48 +03:00
Denis Pauk
7be959894b fix line duplication 2021-06-13 15:46:16 +03:00
Denis Pauk
d554b89730 sound: cleanup ogg to wav code 2021-06-13 15:46:16 +03:00
Denis Pauk
fbde7b753f fclose is not required with close_on_free=true 2021-06-13 15:46:16 +03:00
Denis Pauk
bf286dc952 Add ogg/vorbis sound for effects 2021-06-13 15:46:16 +03:00
David Carlier
53c684525f solairs/illumos build fix proposal. 2021-06-13 08:25:56 +01:00
Yamagi
f4e7ee59c4 Bump version to 8.00rc1. 2021-06-07 10:10:16 +02:00
Yamagi
bb7bf8ef9e Disable floating-point expression contraction on gcc builds.
While this shouldn't be a problem with C code, better be safe than
sorry. @DanielGibson stumbled over this while debugging some strange
RB-Doom3 / dhewm3 issues with gcc. See this bug report for details:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100839
2021-06-06 18:48:38 +02:00
Yamagi
228c6060f3 Update the CHANGELOG for 8.00. 2021-06-06 17:46:41 +02:00
Daniel Gibson
7ae9655f3a Fix UBSan Warnings
- memcpy() shouldn't be called with NULL, even if length == 0
- In CMod_LoadBrushSides() j (from in->texinfo) could be -1,
  which of course is no valid array index
2021-06-04 13:39:43 +02:00
Daniel Gibson
dc7ad65bb0 Fix crash in soft renderer
RE_Draw_StretchPicImplementation() would write up to
height+picupscale-1 lines.
That overflows the buffer so make sure it doesn't.
2021-06-04 13:38:14 +02:00
Yamagi
2861874da6 Small corrections to the documentation. 2021-06-03 07:24:42 +02:00
Spirrwell
b9129f2fa8 Fix some leaks
Most of these are probably "harmless", but I could definitely see the missing/improper SDL_Quit/SDL_QuitSubsystem causing headaches later.
2021-06-02 19:45:34 -04:00
Yamagi
c9913eb538 Detect if an autosave is loaded and advance world by 100 frames.
Autosaves are special. The are a byproduct of the level change process.
When loaded they aren't respawning the player at it's last position, the
player is relocated to func_playerstart. Since entities spawn at their
start position, the player may end up in the wrong spot.

One example is train.bsp -> base2.bsp. The platform spawns in upper
position, the player in lower position. The platform comes down and
crushes the player.

Most of these cases work by luck when the client isn't paused during
load, because the world advances a few frames before the player is
spawned. Implement a better fix: Detect if an autosave is loaded (name
is save0 or current) and treat it like a map change, advance the world
by 100 frames. We cant use the `autosave` boolean, because it's in the
game savefile.

Fix suggested by @BjossiAlfreds, closes #711.
2021-05-29 17:16:42 +02:00
Yamagi
8f6a085434 Remove ref_vk, the Vulkan renderer ported from vkQuake2.
While having a Vulkan renderer in Yamagi Quake II sounded like a good
idea, especially for cheap hardware with broken OpenGL drivers, the last
weeks showed that the code is not ready for primetime. Some examples
for critical problems:

 * Render glitches when using non-standard assets. Everything with more
   polygons and texture resultion than baseq2 seems to be broken.
 * The startup and shutdown code is a mess. While I fixes the most
   critical bug, there're a lot of cases left. Startup and shutdown
   mostly works by luck.
 * At least one memory leak in the model code.

And neither @DanielGibson nor myself have deeper knowledge about Vulkan.
We don't have the time and the motivation to learn it. While some
community members did excellent work on ref_vk (especially @0lvin and
@rg3), the community maintenance promised in the initial pull request
never really materialized. Therefor we risk ending up with a renderer
that we can't and won't maintain by ourself.

Vulkan is not gone. The code will be recommitted in a separate
repository at: https://github.com/yquake2/ref_vk

We're willing to give community members commit access to that
repository. Send a substantial pull request and ask for it.
2021-05-28 09:33:46 +02:00
Yamagi
76d61d9d8f Remove rev_vk from the client. 2021-05-28 09:33:44 +02:00
Yamagi
0838faf120 Remove ref_vk from the documentation. 2021-05-28 09:32:42 +02:00
Yamagi
ce10213d91 Remove rev_vk from the Makefile. 2021-05-28 09:32:42 +02:00
Yamagi
8c297a003f Remove rev_vk from the CmakeLists.txt. 2021-05-28 09:32:42 +02:00