Yamagi Quake II with Q2 Remaster support
Find a file
Denis Pauk f3ae3beacd Version bump to 8.31RR6
BraXi (2):
      renders: fix BSPX lightmaps
      Rename functions r_dlightframecount parameter to lightframecount

David Carlier (1):
      models_md5 few memory related fixes

Denis Pauk (58):
      client: add custom protocol with short model index
      client: bump protocol and game version / unstable compatibility
      render: sync count of images with protocol max image count
      models: md5 do not copy token before use
      models: md5 partial COM_Parse in ReadMD5Anim
      models: md5 partial COM_Parse usage in ReadMD5Model
      models: ReadMD5Anim use strtol for parse
      models: ReadMD5Model get rid of sscanf usage
      models: ReadMD5Model more strict validation
      models: ReadMD5Anim get rid sscanf usage
      models: md5 call R_CompressNormalMDL only once for vertex
      soft: reuse R_LerpVerts code
      soft: move R_LerpVerts upper by call stack
      refresh/files: cppcheck warning clean up
      gl3/gl4: fix count lightmap in mgu5m2
      gl1: cppcheck fixes
      models: md3/md5 show count of verts and tris
      models: show number commands in model
      models: md3 compress commands
      models: remove static buffers for commands compress
      models: prepare command compress to share logic
      models: md5 rearrange glcommands generation
      models: save triangles ofs/num in each mesh
      soft: fix multi mesh models render
      client: fix pickup message in demo
      models: md5 tris compress before compress gl commands.
      models: apply md3 compress tris logic
      models: revert slow vect compress logic
      models: md3/md5 share command generation code
      models: mdl compress triangles
      models: mdl support grouped frames
      models: make mdl count frames detect separate function
      models: mdl separate function for image load
      models: mdl fix texture coordinates
      models: dkm Daikatana, md2 Anachronox generate normals
      models: dkm split model to meshes
      models: add mdx / Kingpin models support
      renders: load mdx/Kingpin models support
      models: MDX mesh split by subobj value
      soft: fix cppcheck warnings, remove unused isflattop
      soft: fix cppcheck warning and remove unused fullscreen property
      cin: support tga/jpg/png static image
      models: fix md5 replacement load without md2 model
      filesystem: add support of Anachronox DAT archive format
      filesystem: Anachronox fix load sky
      filesystem: support longer path in archives (up to 128)
      client: add xatrix demo protocol check
      Add windows 32bit build releases
      small build clean up
      Add readme note about SiN maps
      protocol: share configstring convert logic
      server: convert config string to protocol range
      server: support of load original game library
      server: QII97 protocol version check unification
      server: extend count of sound indexes
      server: extend gun frame and index to short
      soft: fix original Quake 2 map lights regression
      renders: split R_BuildLightMap to two function

Feels Duck Man (4):
      Added a speedometer that displays the player's speed in QU/s.  Wasn't quite sure how to implement it without adding GetPlayerSpeed() to pmove.c.  Unsure if there is a cleaner way to do this while keeping it inside cl_screen.c
      Removed 'Speed' label for speedometer when being displayed
      Added an option to draw speed under the crosshair with cl_showspeed 2, fixed drawing the speedometer when the game wasn't playing.
      Added documentation for 'cl_showspeed' in 040_cvarlist.md

Guilherme Nemeth (1):
      berserker: slam attack, running club attack

Sajt (1):
      models: add gl command compress code from qwalk

apartfromtime (3):
      Texture filtering option
      Texture filtering options for OpenGL and Software video modes
      Fix software dithering
2024-03-24 19:01:49 +02:00
.github/workflows Add windows 32bit build releases 2024-03-21 22:59:53 +02:00
doc Merge remote-tracking branch 'yquake2/master' 2024-03-19 22:12:01 +02:00
src Version bump to 8.31RR6 2024-03-24 19:01:49 +02:00
stuff Merge remote-tracking branch 'yquake2/master' 2023-12-16 23:14:52 +02:00
.gitignore Also ignore .d files as they got generated every time. 2015-11-12 19:15:37 +01:00
CHANGELOG Version bump to 8.31RR6 2024-03-24 19:01:49 +02:00
LICENSE Add cURL to the LICENSE file. 2019-05-13 18:02:50 +02:00
Makefile protocol: share configstring convert logic 2024-03-23 18:47:17 +02:00
README.md protocol: share configstring convert logic 2024-03-23 18:47:17 +02:00

Yamagi Quake II Remaster

This is an experimental fork of Yamagi Quake II with ongoing work to add support for Quake II Enhanced aka Q2 Remaster(ed). This enhanced version has a lot non trivial changes, adding support isn't easy and takes time. Feel free to try this code but you mileage may vary.

Have a look at the yquake2 repository for the "normal" Yamagi Quake II: https://github.com/yquake2/yquake2

Alpha windows 64 bit binaries.

State:

  • GL1/GL3/GLES3/VK:
    • base1: no known issies
    • base2: no known issies
    • q64/outpost: no known issies
    • mguhub: loaded, sometimes broken logic for surface fall in next maps
  • GL4:
    • base1: unchecked
    • base2: unchecked
    • q64/outpost: unchecked
    • mguhub: unchecked
  • SOFT:
    • base1: broken wall light
    • base2: broken wall light
    • q64/outpost: no known issies
    • mguhub: broken wall light, sometimes broken logic for surface fall in next maps

Monsters:

  • incorrect dead animation for Arachnid,
  • broken fire effect for Guardian.

Models support:

Format Original Game Frame vertex Meshes Comments
mdl Quake 1 8 bit Single Unsupported grouped textures
md2 Quake 2 8 bit Single
md2 Anachronox 8/10/16 bit Single No tagged surfaces, unchecked with game
mdx Kingpin 8 bit Many No sfx support, unchecked with game
fm Heretic 2 8 bit Many
dkm Daikatana DKM1 8 bit Many Unchecked with game
dkm Daikatana DKM2 10 bit Many Unchecked with game
md3 Quake 3 16 bit Many No tags support
md5 Doom 3/Quake 4 float Many Requires md2 for skins

All models support only single texture for all meshes and only up to 255 frames.

Texture support:

Format Original Game Comments
wal Quake 2 8 bit
wal Daikatana 8 bit
m8 Heretic 2 8 bit
m32 Heretic 2 24 bit
pcx Quake2 24 bit
tga Quake2 24 bit
png retexturing 24 bit
jpg retexturing 24 bit
bmp Daikatana 24 bit

Maps support:

Format Version Game
IBSP 39 Quake 2 / Anachronox / Kingpin / Heretic 2
IBSP 41 Daikatana
QBSP 39 Quake 2 ReRelease
BSPX 39 Quake 2 ReRelease (Extension to IBSP)

Note:

  • SiN Gold has IBSP/41 format but has different size of lump and is unsupported.
  • Non Quake 2 maps are limmited mostly view only, and could have issues with tranparency or some animations flags and properties.

Goals (finished):

  • BSPX DECOUPLEDLM light map support (base1),
  • QBSP map format support (mguhub),
  • Use ffmpeg for load any video,
  • RoQ and Theora cinematic videos support.
  • Cinematic videos support in smk, mpeg, ogv format,
  • Daikatana/Heretic 2 map partial format support,
  • md5 improve load speed,
  • support Anachronox .dat format,
  • add debug progress loading code for maps.

Goals (none of it finished):

  • Single player support,
  • support surface flags for Daikatana, Heretic 2, Anachronox,
  • modified ReRelease game code support with removed KEX only related code.

Bonus goals:

  • Use shared model cache in client code insted reimplemnet in each render,
  • Check load soft colormap as 24bit color,
  • Use separete texture hi-color buffer for ui in soft render,
  • Convert map surface flag by game type,
  • Cleanup function declarations in game save code,
  • Use 3 bytes vertex normal,
  • Support scalled textures for models and walls in soft render and fix lighting with remastered maps.

Not a goal:

  • multiplayer protocol support with KEX engine,
  • support KEX engine features (inventary, compass and so on),
  • KEX game library support.

Code tested with such maps.

Yamagi Quake II

Yamagi Quake II is an enhanced client for id Software's Quake II with focus on offline and coop gameplay. Both the gameplay and the graphics are unchanged, but many bugs in the last official release were fixed and some nice to have features like widescreen support and a modern OpenGL 3.2 renderer were added. Unlike most other Quake II source ports Yamagi Quake II is fully 64-bit clean. It works perfectly on modern processors and operating systems. Yamagi Quake II runs on nearly all common platforms; including FreeBSD, Linux, NetBSD, OpenBSD, Windows and macOS (experimental).

This code is built upon Icculus Quake II, which itself is based on Quake II 3.21. Yamagi Quake II is released under the terms of the GPL version 2. See the LICENSE file for further information.

Documentation

Before asking any question, read through the documentation! The current version can be found here: doc/010_index.md

Releases

The official releases (including Windows binaries) can be found at our homepage: https://www.yamagi.org/quake2 Unsupported preview builds for Windows can be found at https://deponie.yamagi.org/quake2/misc/