Heretic2 rebased over Yamagi Quake II Remaster

May 30, 2026 ยท View on GitHub

Customized Quake2 engine with Heretic2 code parts.

Heretic 2 SDK code based on Ht2Toolkit

Updated code based on Heretic 2 Reconstruction Project

Tested with Heretic 2 Loki release.

Coverity Scan Top Language Code Size Release Release Date Downloads (total) Downloads (latest) Commits Last Commit Build Status Build Status Build Status Build Status Build Status Build Status

cleanup code

sed -i 's/[[:blank:]]*$//' */*.{c,h}

Comments:

It's on really initial steps, it could be complied ;-), it runs mostly without crashes. That's all what is good.

Drawbacks, sorted by priority:

  • remove client->playerinfo.c_mode hack,
  • fix acrobatic,
  • fix rope,
  • fix puzzles,
  • fix invisible FXSphereOfAnnihilation spell (bind 8),
  • use zalloc instead resource_manager,
  • implement menu_help to show level goals,
  • keep old mission goals if map is not provided new one, look to trigger_mission_*,
  • game memory management, fix or replace singlelinkedlist,
  • save code broken as not all callbacks registered
  • effects is not started sometime,
  • only gl1 has full support render
  • need to rewrite RF_TRANS_ADD to use quake2 logic
  • unsupported foodstep with unsupported player ground surface,
  • third person code is different to quake 2,
  • correctly implement misc_remote_camera.
  • progress bars has custom implementation,
  • color type/paticles/effects,
  • get rid C++ code,
  • other logic of animations, reuse jabots code or replace to more sync logic,
  • huge amount of possibly dead code
  • no menu implementations
  • no books implementations
  • code is little bit mess
  • fix attack angle direction,
  • no action on button press,
  • broken jumps,
  • effects protocol is different to quake 2,
  • code use different angles values to quake2,
  • ANGLE_1 usage in client code,
  • different move code and noclip,
  • implement books as sprite,
  • Incorrect 16 bit frame flag unset,
  • MAX_MODELS/MAX_SOUND define hardcode,
  • soft,gl3,vk render has incorrect angles (used same angle in all renders).

Minimal file set from Loki release:

7f705e54da770186abd84f1a904faa28 baseq2/default.cfg
75cd6a0e878f24bb934e640b4d4dd18c baseq2/htic2-0.pak
d771f54be69f8fb9054c5a84a2b61dff baseq2/players/male/Corvus.m8
4633cc6801f36898f0d74ab136ce013e baseq2/players/male/tris.fm
b90b7cc08ec002297a320e06bae6a5eb baseq2/video/bumper.mpg
b92d295e769b2c5a94ee2dbf1bbe12e4 baseq2/video/intro.mpg
9c201601fdd82754068d02a5474a4e60 baseq2/video/outro.mpg

Maps checked:

NamemapVideo
Silverspring Docksssdocksssdocks
Silverspring Warehousessswarehousesswarehouse
The Town of Silverspringsstownsstown
Silverspring Palacesspalacessdocks

Code checked with:

map ssdocks

Goals:

  • Implement minimal set required for single player,
  • Multiplayer game or same protocol is not in priority,
  • Raven code should be placed only in src/game or separate repository,
  • All other code should be GPL or public domain,
  • Minimal set of hacks over quake 2 engine.

Yamagi Quake II Remaster

Coverity Scan Top Language Code Size Release Release Date AUR Version Downloads (total) Downloads (latest) Commits Last Commit Build Status Build Status Build Status Build Status Build Status Build Status Build Status Build Status

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 unstable and could change between alpha releases.
  • MacOS build is only build tested and run is not checked.

Building from Source

If you downloaded the Source Code (ZIP) directly from GitHub, please note that GitHub does not include submodules in these archives. To build the project successfully, you have two options:

  • Follow the step-by-step instructions for a lightweight setup
  • Use CMake without submodules.

Models support:

FormatOriginal GameFrame vertexMeshesComments
mdlQuake / Hexen 28 bitSingleUnsupported grouped textures
mdlHalf-LifefloatMultipleUnsupported animation
md2Quake 28 bitSingle
mdaAnachronoxPart of md2SingleUnsupported skin pass combine
md2Anachronox8/10/16 bitSingleUnchecked with game
mdxKingpin8 bitMultipleNo sfx support, unchecked with game
fmHeretic 28 bitMultipleWithout skeletal animation
defSiNPart of samMultipleUnchecked with game
dkmDaikatana DKM18 bitMultipleUnchecked with game
dkmDaikatana DKM210 bitMultipleUnchecked with game
md3Quake 316 bitMultipleNo tags support
mdrEliteForcefloatMultipleNo tags support. Uses first LOD only
md5Doom 3/Quake 4floatMultipleRequires md2 for skins
sbmSiNPart of samMultipleUnchecked with game
samSiN8 bitMultipleUnchecked with game

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

Texture support:

FormatOriginal GameComments
walQuake 28 bit
walDaikatana8 bit
swlSiN8 bit
m8Heretic 28 bit
m32Heretic 224 bit
pcxQuake224 bit
tgaQuake224 bit
pngretexturing24 bit
jpgretexturing24 bit
bmpDaikatana24 bit

Sprites support:

FormatOriginal GameComments
bkHeretic 2Combine frames to single one, converted to sp2
sprQuakeUnsupported grouped textures, converted to sp2
sp2Quake 2
atdAnachronoxConvert first frame to wall surface texture
pngConvert to sp2
tgaReReleaseConvert to sp2

Maps support:

FormatVersionGame
IBSP29Quake 1 / Hexen II (unfinished)
IBSP30Half Life 1 (unfinished)
IBSP38Quake 2 / Anachronox / Kingpin / Heretic 2
IBSP41Daikatana / SIN
IBSP46Quake 3 (broken)
RBSP1SIN
QBSP38Quake 2 ReRelease
BSPX38Quake 2 ReRelease (Extension to IBSP)

Sound support:

FormatMusicEffects
wavNoYes
oggYesYes
mp3NoYes

Package file support:

FormatDescription
datAnachronox
pakQuake, Quake 2, Daikatana, Kingpin
sinSiN
wadDoom, Doom 2
pk2Quake 2 Mods
pk3Quake 2 Mods, Quake 3
pkzQuake 2 Mods
zipQuake 2 Mods

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.

Dynamic frame names:

groupmonsterplayerdescription
attackYY
breakNN
crattakNYCrouch attack
crdeathNYCrouch death
crpainNYCrouch pain
crstndNYCrouch stand
crwalkNYCrouch walk
deathYY
dodgeY
drainNN
duckY
flyY
flipNY
jumpNY
hoverY
idleY
meleeY
painYY
pointNY
runYY
runsNNRun and shoot
saluteNY
standYY
swimY
tauntNY
waveNY
walkY

Games:

Games check videos:

  • 8.61RR15+:

Check hologram implementation

  • 8.61RR14+:

Check dynamic animation for weapons Check infinity mod

  • 8.61RR13+:

Check dynamic player swim Check demo maps Check demo maps

Checked with:

Check dynamic frames

  • 8.52RR13+:

Check dynamic frames split Check dynamic frames groups Check menu translation and fog

  • 8.52RR12+:

Quake I + Half Life 1 Demo Quake I + Hexen 2 Heretic 2 Book / Translate

  • 8.52RR12:

4k+ coordinates + flare

  • 8.51RR12:

PSX check Vault check

  • 8.42RR12+:

JaBot check Translation check Anacronox dance sector issue

  • 8.42RR11:

First episode Q2DQ2 8.42RR11

  • 8.42RR10:

8.42RR10

  • 8.42RR9:

8.42RR9

  • 8.42RR8:

8.42RR8

  • 8.31RR7:

8.31RR7

Goals, fully finished goals could be checked in here:

  • soft: fix crash with md5 models in player model select and ASAN=1
  • soft: q64/outpost scale textures unsupported,
  • soft: broken wall light and wall glitch,
  • soft: rework 32bit color cinema workarrounds,
  • soft: support scalled textures for models and walls, and fix lighting with remastered maps,
  • soft: use separete texture hi-color buffer for ui in soft render,
  • vulkan: group it_pic images,
  • vulkan: rearange surfaces before render,
  • vulkan: add fog distance effect,
  • soft: add fog distance effect (optional),
  • reuse memory from models cache in renders model list,
  • reuse memory from models cache for bsp,
  • game: cleanup function declarations in game save code,
  • game: fix broken base3 with sorted fields names,
  • game: code has not reset ctf flag on load saves,
  • game: code has reset thirdperson flag on load new level,
  • game: check RealBoundingBox with frame box,
  • ReRelease: mguhub map has sometimes broken logic for surface fall in next maps,
  • ReRelease: incorrect dead animation for Arachnid,
  • ReRelease: broken fire effect for Guardian.
  • ReRelease: water in basicsjam1_ziutek,
  • ReRelease: make lightmap textures dynamic n64jam_palmlix,
  • ReRelease: support textures/*/*.mat load texture effects,
  • ReRelease: support textures/*/*_glow.png load,
  • ReRelease: support tactile/*/*.bnvib/.wav feedback load,
  • ReRelease: console ~ incorrectly show multibyte characters,
  • ReRelease: basicsjam1_detrohogga: fix droptofloor startsolid,
  • gl1, gl3, gl4, vk, soft: implement direction of CS_SHADOWLIGHTS,
  • gl3, gl4: implement color multiplication and alpha gradient for misc_flare,
  • soft: implement color multiplication and alpha combine or make black parts transparent for misc_flare,
  • ReRelease: single player support,
  • ReRelease: support effects and additional flags when possible,
  • ReRelease: implement demo protocol based on https://github.com/res2k/q2proto and https://github.com/Paril/quake2-rerelease-dll,
  • ReRelease: modified game code support with removed KEX only related code.

Other games support goals:

  • Jabot: fix crash in SZ_GetSpace,
  • Jabot: dynamic allocations,
  • Heretic 2: add swim player animation support,
  • Heretic 2: add utf8 colors and fonts support in console,
  • Heretic 2: correct obj placeholders,
  • Doom: implement map load logic,
  • Quake 3: finish map load logic,
  • Quake, Half-Life, Hexen 2: fix brush flags,
  • Half-Life: support mdl,
  • Anachronox: load atd as sprite,
  • Anachronox: fix incorrect scale of ob_stop-flame and ob_wommhill01,
  • Anachronox: skins load broken with mingw win64 build,
  • Anachronox: CTC entity format,
  • Anachronox: support material load textures/textureinfo.dat,
  • Daikatana: Fix protopod animation,
  • Daikatana/SiN: Fix transparent textures in maps,
  • DoD: fix statusbar roarke,
  • Support obj waveform model format for debug other formats.

Fixed:

  • vulkan: implement color multiplication and alpha combine or make black parts transparent for misc_flare,
  • ReRelease: fix vulkan render on open door in mguhub,
  • gl1: reuse R_MakeSkyVec,
  • Anachronox: rowdys save entity disappear in a8080c05,
  • gl4: add fog distance effect,
  • gl3: add fog distance effect,
  • client: share r_farsee,
  • Infinity: implement misc_hologram,
  • Infinity: implement misc_lightning,
  • Infinity: implement misc_text_caption,
  • Infinity: implement misc_rain,
  • Infinity: implement misc_drip,
  • Infinity: implement misc_desk,
  • Infinity: implement misc_chair,
  • Infinity: implement misc_crate,
  • ReRelease: implement misc_lavaball,
  • ReRelease: implement target_story,
  • ReRelease: implement target_crossunit_target,
  • ReRelease: implement target_crossunit_trigger,
  • CppCheck: fix const warnings and scope,
  • renders: share model_t type.
  • ReRelease: Fix jerky rotation animation for func_rotating entities in Call of the Machine

Not a goal:

  • Multiplayer protocol support with KEX engine,
  • Support KEX engine features (inventory, compass and so on),
  • KEX game library support.

Additional requirements:

  • ReRelease localization requires Q2Game.kpf file in root directory of game. If you like to support your language put it to localization/loc_.txt and extend MAX_FONTCODE to your max symbol code. Used font and language file are defined by language and r_ttffont, as an example could be used fonts like unifont.
  • Heretic 2 localization requires levelmsg.txt in game directory.
  • Hexen 2 localization requires Strings.txt in game directory.

Additional models:

Spawn classnameDescription
misc_actorQuake 2 actor (Restored)
misc_actorvxReRelease vault actor x
misc_actorvyReRelease vault actor y
misc_fighterReRelease vault fighter ship
misc_transprtReRelease vault transport ship
monster_arachnidReRelease arachnid
monster_armyQuake 1 army soldier
monster_boss5Xatrix boss 5
monster_carrierRogue carrier
monster_demonQuake 1 demon
monster_dogQuake 1 dog
monster_enforcerQuake 1 enforcer
monster_floatervReRelease vault technician
monster_flyervReRelease vault flyer
monster_fixbotXatrix fixbot
monster_gnortaReRelease vault gnorta
monster_gekkXatrix gekk
monster_hknightQuake 1 hknight
monster_guardianReRelease guardian
monster_knightQuake 1 knight
monster_mutantvReRelease vault mutant
monster_ogreQuake 1 ogre
monster_rotfishQuake 1 rotfish
monster_shalrathQuake 1 shalrath
monster_shamblerQuake 1 shambler
monster_shockervReRelease vault shocker
monster_stalkerRogue stalker
monster_tankvReRelease vault tank
monster_tarbabyQuake 1 tarbaby
monster_turretRogue turret
monster_wizardQuake 1 wizard
monster_widowRogue widow
monster_widow2Rogue widow 2
monster_zombieQuake 1 zombie
npc_timeminderAnachronox save menu

ReRelease has updated Shambler that does not have animation groups and frame names, and uses fr_ frame prefixes.

Full list of supported entities classnames.

Quake 1 models usage requires such files:

source Quake 1 Pathdestination Quake 2 Pathmd5 hash
progs/soldier.mdlmodels/monsters/army/tris.mdl5b6c30a984872b4273dd5861412d35c5
progs/demon.mdlmodels/monsters/demon/tris.mdl4c73786e7cfb2083ca38cbc983cd6c4b
progs/dog.mdlmodels/monsters/dog/tris.mdle727fbc39acc652f812972612ce37565
progs/enforcer.mdlmodels/monsters/enforcer/tris.mdl136c265f96d6077ee3312c52e134529f
progs/fish.mdlmodels/monsters/rotfish/tris.mdld770d6ef92ae8b372926e6c3d49e8716
progs/hknight.mdlmodels/monsters/hknight/tris.mdled20e30be6fdb83efbaa6d0b23671a49
progs/knight.mdlmodels/monsters/knight/tris.mdl5328915db5c53e85cf75d46e7b747fb9
progs/ogre.mdlmodels/monsters/ogre/tris.mdlfbb592ca3788a576dd2f31fcf8c80fab
progs/shalrath.mdlmodels/monsters/shalrath/tris.mdldac8f6077b0d2bf970573d2d2c22529f
progs/shambler.mdlmodels/monsters/shambler/tris.mdl9b09375a0f614dc4081e363cc34f1185
progs/tarbaby.mdlmodels/monsters/tarbaby/tris.mdl2bfc45593a43a0191982e3cfdc112dc5
progs/wizard.mdlmodels/monsters/wizard/tris.mdlbf60986594f045e60e8aa6339d553ee7
progs/zombie.mdlmodels/monsters/zombie/tris.mdla923b1d03b9d237dd5ead9bd56acc900
progs/k_spike.mdlmodels/proj/fireball/tris.mdlda95b49a695b34c2c3516a8d789c6b20
progs/v_spike.mdlmodels/proj/pod/tris.mdl2bdc0b264b9fd3443c8eee816305728f
progs/w_spike.mdlmodels/proj/spit/tris.mdl8cf9245df2164e8062b01a220b508d6b
sound/army/death1.wavsound/army/death1.wavfe25952af40b536c3bb67bfca58062eb
sound/army/idle.wavsound/army/idle.wav4cdfbdda8fb5f40b125c7bcddb6e8914
sound/army/pain1.wavsound/army/pain1.wav54d3b05fdcecf7480034858f2b22b06c
sound/army/pain2.wavsound/army/pain2.wave2bbc9d3405b9b9fdae76d2fc298fc2f
sound/army/sattck1.wavsound/army/sattck1.wavb76ac35f900f280a7a7996da7e404362
sound/army/sight1.wavsound/army/sight1.wave2a39533250ddd1b08053d5c4ebf7fd0
sound/demon/ddeath.wavsound/demon/ddeath.wav62a48dcd405ca55c9ce18497e36faa0e
sound/demon/dhit2.wavsound/demon/dhit2.wav9e741696e4d0d66e30e718fc70ec186e
sound/demon/djump.wavsound/demon/djump.wav791ac9d6b6593808316145443cb7e7a0
sound/demon/dland2.wavsound/demon/dland2.wavdb14c7b01838f826b7a712075f9026fd
sound/demon/dpain1.wavsound/demon/dpain1.wav5e6c485878393c9bebb0d0e6659bc479
sound/demon/idle1.wavsound/demon/idle1.wav7a83f8caf3d5b1172a7dc5afdc942988
sound/demon/sight2.wavsound/demon/sight2.wav65171c355c22a5069520b0881677ae3c
sound/dog/dattack1.wavsound/dog/dattack1.wav0c47c9d4aaae0bf3159a288b674f4a35
sound/dog/ddeath.wavsound/dog/ddeath.wavb0e7760b1d7286a028ff9773f6802958
sound/dog/dpain1.wavsound/dog/dpain1.wav28e5ab93b41e13e2916433283a5d1a46
sound/dog/dsight.wavsound/dog/dsight.wav0edc290765bac1fb4fe03ca55bc7c225
sound/dog/idle.wavsound/dog/idle.wav42bd6026ff32bd94523ad9f8fe8362cc
sound/enforcer/death1.wavsound/enforcer/death1.wavf38d7a235e13ef8918aac0c70437320d
sound/enforcer/enfire.wavsound/enforcer/enfire.wavb080a6a53f138bef9fc4403fb9373a24
sound/enforcer/enfstop.wavsound/enforcer/enfstop.wav0bc39c3c88187fb37d20ef21300e7b22
sound/enforcer/idle1.wavsound/enforcer/idle1.wavd0435763860fe54e938ad25bb1780f9e
sound/enforcer/pain1.wavsound/enforcer/pain1.wavd52bc02afe624924684b25295edaa040
sound/enforcer/pain2.wavsound/enforcer/pain2.wavf6b0ad6485d93f5c6d7d61b847d06877
sound/enforcer/sight1.wavsound/enforcer/sight1.wav9e9876444ba92ed18bfce4cec3a2ff12
sound/enforcer/sight2.wavsound/enforcer/sight2.wav815dd4f6a890b0a35dc466005df74850
sound/enforcer/sight3.wavsound/enforcer/sight3.wavf8c8d19905b24d4adb6760a1b3762f3b
sound/enforcer/sight4.wavsound/enforcer/sight4.wav04e40eb925290bc56520de326df6b220
sound/fish/bite.wavsound/fish/bite.wav7c56712615e2a2c3de4fe0e7e35cba05
sound/fish/death.wavsound/fish/death.wav8d6152ee55507430a8c2eb276c4aa8ac
sound/fish/idle.wavsound/fish/idle.wav54a02731b85eb6f8b1a8ecce09771d20
sound/hknight/attack1.wavsound/hknight/attack1.wav695e9d890a085addf1a607aa79137e8e
sound/hknight/death1.wavsound/hknight/death1.wav2d68c3c86632027676b823fcff3af08c
sound/hknight/grunt.wavsound/hknight/grunt.wav122f3d4623e0146732aa0e4deb0fe326
sound/hknight/hit.wavsound/hknight/hit.wavfece24e2548f1d769e8fce39a5c87d01
sound/hknight/idle.wavsound/hknight/idle.wave9ca23c4853472750d1f56e52a3d227b
sound/hknight/pain1.wavsound/hknight/pain1.wav52c20eb6f5b5146ece6b0ac02f423341
sound/hknight/sight1.wavsound/hknight/sight1.wav786d28ec653a0d512d078b32eb8cb58b
sound/hknight/slash1.wavsound/hknight/slash1.wav83e64bb90cff2a4f9764dd53489b9d7d
sound/knight/idle.wavsound/knight/idle.wav1b5c3981bee078318af346d8fe8090b9
sound/knight/kdeath.wavsound/knight/kdeath.wav11a96f48a8f2433c23beae299c8fb96e
sound/knight/khurt.wavsound/knight/khurt.wav32c9f48dd4a6a87752aedf56fe8de668
sound/knight/ksight.wavsound/knight/ksight.waveb75b4af348c88e84d8c87c19d5976fa
sound/knight/sword1.wavsound/knight/sword1.wav93045b5f3178413dc6b01ec2869d1f73
sound/knight/sword2.wavsound/knight/sword2.wav82d1a7c263cd3df7b060dee2f7f8b1fd
sound/ogre/ogdrag.wavsound/ogre/ogdrag.wav658587dc89aaefae5ca3f058f7ff4227
sound/ogre/ogdth.wavsound/ogre/ogdth.wavde98e7bb9e70586edddd3308cfded3db
sound/ogre/ogidle2.wavsound/ogre/ogidle2.wav196ae9c33a4311160e1d5f3da878ab09
sound/ogre/ogidle.wavsound/ogre/ogidle.wav177c829840a87c885bbc8951e7ce962e
sound/ogre/ogpain1.wavsound/ogre/ogpain1.wavac6d133d7720c12df49813fe10e683b5
sound/ogre/ogsawatk.wavsound/ogre/ogsawatk.wav7257bdfd014bb61d778b8f88cb65d560
sound/ogre/ogwake.wavsound/ogre/ogwake.wav3296459e495c4c12b31179d4eeffac19
sound/shalrath/attack2.wavsound/shalrath/attack2.wav777fbda2f81350e45920ea1c36d318e1
sound/shalrath/attack.wavsound/shalrath/attack.wav8814a72b399be619d14223235f78f294
sound/shalrath/death.wavsound/shalrath/death.wav771844c5cfb5a42e82e221a63f101ac7
sound/shalrath/idle.wavsound/shalrath/idle.wav1a45f12579f9cdd27152332d5f816048
sound/shalrath/pain.wavsound/shalrath/pain.wav6ba007b79c50d7d5347f1a29fb315422
sound/shalrath/sight.wavsound/shalrath/sight.wav3d3c2001cc976efc67af1552427eedd3
sound/shambler/melee1.wavsound/shambler/melee1.wav77fe6240973a204b757a427ebf66bcfd
sound/shambler/melee2.wavsound/shambler/melee2.wav3be31638d769e3d690c92311dfafdeac
sound/shambler/sattck1.wavsound/shambler/sattck1.wavec8c3f79ea42d09154cb8975ada1b21c
sound/shambler/sboom.wavsound/shambler/sboom.wav9834601a645d7d1f62001b2a314ec18f
sound/shambler/sdeath.wavsound/shambler/sdeath.wave0e62d229a985a6e39218c6488599059
sound/shambler/shurt2.wavsound/shambler/shurt2.wav1e87631ede95e061a75f9c31629ac0b8
sound/shambler/sidle.wavsound/shambler/sidle.wav368a240e6c3e877793352a79c1828386
sound/shambler/smack.wavsound/shambler/smack.wavbd8c634c9894348360fec7b7419d1649
sound/shambler/ssight.wavsound/shambler/ssight.wav657107577460d5acf3157dec97e07a89
sound/tarbaby/death1.wavsound/tarbaby/death1.wav53f8c73de11c018086ba19ed036833d3
sound/tarbaby/hit1.wavsound/tarbaby/hit1.wav42c5a1edd02421bf6df7ddc3e395c4f8
sound/tarbaby/land1.wavsound/tarbaby/land1.wav5a1585ab22368a48827db9b7d3763b58
sound/tarbaby/sight1.wavsound/tarbaby/sight1.wavdf4dd7ec91e094b5c2235be3f5353e4a
sound/wizard/hit.wavsound/wizard/hit.wav6598d669334df977f1f97b95288edf11
sound/wizard/wattack.wavsound/wizard/wattack.wavb3568a47439f81779d40335e76f5bc2d
sound/wizard/wdeath.wavsound/wizard/wdeath.wav99d9c71343bc23222abb92119d404400
sound/wizard/widle1.wavsound/wizard/widle1.wavb22b1dd9f66879b3447d36ab584316c7
sound/wizard/widle2.wavsound/wizard/widle2.wav7178fd83df227360564adef01bed92c6
sound/wizard/wpain.wavsound/wizard/wpain.wavbd7e59ab7d7b835f9ed8ab51950914de
sound/wizard/wsight.wavsound/wizard/wsight.wavdf5949057c750528917c6cb32b7fd9fd
sound/zombie/idle_w2.wavsound/zombie/idle_w2.wavd2bb59b9d7ac71097c07123a23525641
sound/zombie/z_fall.wavsound/zombie/z_fall.wav6968318b2d196c6d54bc707d8a390547
sound/zombie/z_gib.wavsound/zombie/z_gib.wav199dda66ade8d6f0ef4897e4d7608c0d
sound/zombie/z_hit.wavsound/zombie/z_hit.wav6c66ab3e6b149bf35956a4bbc0057acb
sound/zombie/z_idle1.wavsound/zombie/z_idle1.wav21088a7b38b1124d7ec72e58d5ab93a6
sound/zombie/z_idle.wavsound/zombie/z_idle.wave5e570e38c4405111004190a79f0e925
sound/zombie/z_miss.wavsound/zombie/z_miss.wav96fad96a8c3bc6f7bcc5da6c82678da2
sound/zombie/z_pain1.wavsound/zombie/z_pain1.wavfcd83b89a94b0cadbe1361a4df080ec0
sound/zombie/z_pain.wavsound/zombie/z_pain.wav56637968b8309bd2f825153330bbdfc0
sound/zombie/z_shot1.wavsound/zombie/z_shot1.wav561afb69b7851923a8fb3b54e3e13c96

Look to infighter for more info.

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: