Yamagi Quake II with Q2 Remaster support
Find a file
2024-11-24 23:27:45 +02:00
.github/workflows
doc game: add 'g_language' localization cvar 2024-11-10 21:47:56 +02:00
src client: code style cleanup 2024-11-24 23:27:45 +02:00
stuff game: fix scale for non dynamic definitions 2024-11-21 00:15:47 +02:00
.gitignore
CHANGELOG Version bump 8.42RR10 2024-10-27 02:00:57 +03:00
CMakeLists.txt client: code style cleanup 2024-11-24 23:27:45 +02:00
LICENSE
Makefile game: fix position of dropped objects 2024-11-03 00:48:32 +02:00
README.md game: Add scale entity field (without real usage) 2024-11-18 00:48:31 +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. Saves format is unstabled and could change between alpha releases.

State:

  • Localization requires Q2Game.kpf file in root directory of game,
  • GL1/GLES3/GL3/GL4/VK:
    • base1: no known issues,
    • base2: no known issues,
    • mguhub: sometimes broken logic for surface fall in next maps.
  • SOFT:
    • base1: broken wall light and wall glitch,
    • base2: broken wall light and wall glitch,
    • q64/outpost: scale textures unsupported,
    • mguhub: broken wall light, sometimes broken logic for surface fall in next maps.

Monsters:

  • incorrect dead animation for Arachnid,
  • broken fire effect for Guardian,
  • q64/outpost can't change to next level.

Models support:

Format Original Game Frame vertex Meshes Comments
mdl Quake 1 8 bit Single Unsupported grouped textures
md2 Quake 2 8 bit Single
mda Anachronox Part of md2 Single No tagged surfaces
md2 Anachronox 8/10/16 bit Single No tagged surfaces, unchecked with game
mdx Kingpin 8 bit Multiple No sfx support, unchecked with game
fm Heretic 2 8 bit Multiple
def SiN Part of sam Multiple Unchecked with game
dkm Daikatana DKM1 8 bit Multiple Unchecked with game
dkm Daikatana DKM2 10 bit Multiple Unchecked with game
md3 Quake 3 16 bit Multiple No tags support
mdr EliteForce float Multiple No tags support. Uses first LOD only
md5 Doom 3/Quake 4 float Multiple Requires md2 for skins
sbm SiN Part of sam Multiple Unchecked with game
sam SiN 8 bit Multiple Unchecked with game

All models support only single texture for all meshes and frames limit based on game protocol.

Texture support:

Format Original Game Comments
wal Quake 2 8 bit
wal Daikatana 8 bit
swl SiN 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 / SIN
RBSP 1 SIN
QBSP 39 Quake 2 ReRelease
BSPX 39 Quake 2 ReRelease (Extension to IBSP)

Note:

  • Non Quake 2 maps are limited mostly view only, and could have issues with tranparency or some animations flags and properties.
  • If you like support some other maps type, create pull request for Mod_Load2QBSP function and provide a link to demo maps.
  • Use maptype 1 before load any Heretic 2 maps. Look to maptype_t for more info.

Games:

Games check videos:

  • 8.42RR10:

Latest Video

  • 8.42RR9:

8.42RR9

  • 8.42RR8:

8.42RR8

  • 8.31RR7:

8.31RR7

Goals:

  • 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,
  • suport Daikatana/SiN .pak/.sin format from pakextract,
  • Support flow/scale flags for Q64 maps,
  • Add debug progress loading code for maps,
  • MDR model format from Star Trek: Voyager Elite Force,
  • MDA entity format from Anachronox,
  • CTC entity format from Anachronox,
  • ATD texture format from Anachronox,
  • MDA model skin selection by tag,
  • SDEF/MDA dynamicaly allocate list of skins,
  • Support material load textures/textureinfo.dat from Anachronox,
  • Support textures//.mat load from ReRelease,
  • Support textures//_glow.png load from ReRelease,
  • Support tactile//.bnvib/.wav feedback load from ReRelease,
  • Fix physics with incorrect floor height in psx/base0.bsp,
  • Fix strange white flying boxes in psx/base0.bsp,
  • RGB particles support instead palette based one,
  • Get rid of VID_PaletteColor client internal api use,
  • Broken maps groups from base2 to next,
  • Group it_pic images in vulkan render,
  • Rearange surfaces in vulkan render before render,
  • Fully implement target_camera,
  • Fully implement misc_flare,
  • Single player ReRelease support,
  • Support effects and additional flags for ReRelease when possible.
  • Use shared model cache in client code insted reimplemnet in each render,
  • Check load soft colormap as 24bit color from loaded image,
  • Fix transparent textures in Daikatana/SiN maps,
  • Use separete texture hi-color buffer for ui in soft render,
  • Cleanup function declarations in game save code,
  • Fix broken base3 with sorted fields names,
  • Use 3 bytes vertex normal,
  • Support scalled textures for models and walls in soft render and fix lighting with remastered maps,
  • Modified ReRelease game code support with removed KEX only related code.

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, reliable support for high framerates, a modern sound backend based upon OpenAL, support for modern game controllers 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.

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 LICENSE for further information:

Officially supported operating systems are:

  • FreeBSD
  • Linux
  • Windows

Beside theses Yamagi Quake II has community support for MacOS and most other unixoid operating systems, including NetBSD, OpenBSD and Solaris.

Addons and partner projects

This repository contains Yamagi Quake II itself. The official addons have their own repositories:

Yamagi Quake II Remaster is a project providing optional support for the assets of Quake II Remaster by Nightdive Studios and has a less conservative approach in regards to new features. It also lives in it's own repository:

Development

Yamagi Quake II is a community driven project and lives from community involvement. Please report bugs in our issue tracker:

We are always open to code contributions, no matter if they are small bugfixes or bigger features. However, Yamagi Quake II is a conservative project with big focus on stability and backward compatibility. We don't accept breaking changes. When in doubt please open an issue and ask if a contribution in welcome before putting too much work into it. Open a pull request to submit code:

Also have a look at our contributors guide:

Documentation

Yamagi Quake II has rather extensive documentation covering all relevant areas from installation and configuration to package building. Have a look at the documentation index:

Releases

Yamagi Quake II releases at an irregular schedule. The official releases with source code tarballs and prebuild Windows binaries can be found at the homepage:

Our CI builds unsupported Linux, MacOS and Windows binaries at every commit. The artifacts can be found here: