Skip to content

ArxCoop 2026-09-18 (classique 14ai + RT 16ce, barre de sorts + runes visibles + sorts synchronisés + cryptes + coup de pied ragdoll)

Latest

Choose a tag to compare

@Parricidium Parricidium released this 14 Sep 15:58
· 105 commits to coop-hd since this release

Deux versions du mod, à choisir — tout le monde dans une partie doit avoir la même (protocole réseau différent) :

  • ArxCoop-RT-2026-09-18ce.zip — édition RT (protocole v23) : le mod coop + rendu moderne + physique + ray tracing logiciel.
    Menu Options RT (préréglages Off / Faible / Moyenne / Élevée / Ultra, réglages détaillés, à chaud ; Off = rendu d'origine) : éclairage par pixel avec cartes de matériau générées (relief normal map + parallax, brillance selon la matière), ombres dynamiques, reflets spéculaires et reflets du décor, bloom / FXAA ou SMAA / occlusion ambiante / particules douces, eau à vagues et réfraction qui reflète le décor, lave incandescente, physique Jolt (cadavres en ragdoll projetés par le coup fatal, objets qui roulent, objets cassables en morceaux, bannières et rideaux en tissu ; simulée par l'hôte, les joueurs ne sont pas concernés), ray tracing (OpenGL 4.3, sans RTX : reflets tracés dans le niveau, ombres douces tracées de chaque torche, bougie et sort, occlusion et lumière indirecte tracées, ombres tracées des lumières fixes du niveau), option Ambiance (Normale / Sombre / Obscure), brume volumétrique (Légère / Dense / Épaisse) avec rais de lumière et ombres volumétriques. Console de script (touche ²) : tp p2, or p2 100, spawn item … ; Maj+clic vend / range un objet. Shaders dans Graph\shaders\, F7 les recharge. Prérequis : OpenGL 3.0 (4.3 pour le ray tracing).
    • 16ce — cinématique bloquée chez l'hôte (JD, la momie derrière la vitre des cryptes) : quand un autre joueur déclenche une cinématique scriptée, c'est l'hôte qui la joue (il est téléporté à côté du joueur, le jeu a été écrit pour ce chemin). Mais la fin de la scène (caméra rendue, commandes rendues, bandes noires retirées) est souvent armée par un minuteur avant la reprise, au nom du joueur déclencheur : elle partait chez lui, et l'hôte restait bloqué dans la scène (il fallait recharger). Corrigé : tant que l'hôte est dans une scène reprise d'un joueur, ce que les actions de ce joueur adressent « au joueur » revient à l'hôte. Vérifié en test à deux instances (minuteur armé avant la reprise → l'hôte récupère ses commandes 3 s plus tard).
    • 16cd — cryptes (journal de JD, partie à trois dans les cryptes) :
      • Statues qui suivent du regard (gargouilles) : chez les clients, leur tête ne bougeait pas (le mouvement de tête d'un PNJ n'est pas dans l'état réseau). Elle tourne maintenant sur chaque machine vers le joueur le plus proche, comme chez l'hôte.
      • Puzzle des six piliers (une pierre par pilier, la grille s'ouvre à six) : une pierre retirée d'un pilier par un autre joueur que l'hôte restait comptée (la copie de l'hôte était cachée, la zone du pilier ne la voyait jamais partir). Une pierre déplacée d'un pilier à l'autre comptait donc deux fois. Corrigé : le pilier apprend le départ de la pierre au moment où le joueur la prend.
      • Un avertissement inutile dans le journal quand un joueur cliquait sur un coéquipier (« unknown entity coop_player_… »).
    • 16cc — sorts visés et posés, même direction chez tous (vérification demandée par JD ; protocole inchangé, v23) : les sorts placés devant le lanceur (champ de force, champ de feu, champ de glace, invocation, foudre de masse, lever les morts) et les projectiles (glace, poison) étaient posés en miroir chez les autres joueurs — le code d'origine prend l'angle « PNJ » de la marionnette, qui est l'inverse de celui du joueur. Corrigé pour tous : visée, point de départ et tirages aléatoires (dispersion du poison) du lanceur voyagent avec le sort. La boule de feu et l'éclair, qui suivent le regard pendant le sort, lisaient aussi l'angle inversé après le lancement : corrigé. La boule de feu gonfle au même point chez tous (le vrai point de départ du lanceur, pas un os de marionnette hors champ). Vérifié en test à deux instances : même position et même angle dans les deux journaux pour chaque sort.
    • Au passage : les runes vues par les autres (16cb) étaient tracées 1,7 m trop bas (la position d'une marionnette est aux pieds, pas aux yeux) — corrigé.
    • 16cb — runes visibles par tous (demande de JD ; protocole v23, tout le monde doit être en 16ce) : chaque rune qu'un joueur dessine à la souris ou incante depuis la barre de sorts est tracée en lumière devant son personnage chez les autres joueurs, avec la rune prononcée — comme les runes des PNJ lanceurs de sorts.
    • 16ca — barre de sorts (demande de JD) : une barre en bas de l'écran, façon MMORPG. Les trois premières cases sont les pré-incantations du jeu (parchemin lu, runes dessinées en furtif), touches 1-3 comme avant ; le 4 annule toujours le sort en cours ; les six cases 5 à 0 reçoivent les sorts assignés depuis le livre de sorts (survoler ou cliquer un sort, puis la touche de la case ; à nouveau pour vider). Appuyer sur une case incante le sort au lieu de le dessiner : les runes s'allument une à une devant vous (0,4 s chacune, prononcées), puis le sort part à votre niveau du moment pour 10 % de mana en plus qu'un sort dessiné. Un coup reçu, une roulade, un coup de pied, le livre ou la même touche interrompent l'incantation. Une case est grisée sans les runes ou le mana ; les sorts à cible gardent le curseur de visée. Les assignations sont dans votre config (pas la sauvegarde). La barre monte au-dessus de l'inventaire ouvert. Désactivable dans Options > Coopération, touches dans « Ajouts RT / coop ».
    • 16bz : un monstre projeté qui s'arrêtait contre un mur se relevait dans le mur (capture de JD) : au relevé, si sa place est bouchée, il se remet debout au point dégagé le plus proche (jusqu'à 1,8 m autour).
    • 16by — coup de pied : plus de dégâts, projection en ragdoll (retours de JD ; protocole v23, tout le monde doit être en 16ce) :
      • Le coup de pied ne blesse plus (un gobelin mourait en deux coups). Il repousse, c'est tout ; le monstre a quand même son recul et se met en colère.
      • Sous 70 en Combat au corps à corps : le monstre recule d'un mètre ou deux.
      • À partir de 70 : un monstre en combat est projeté en ragdoll sur quatre ou cinq mètres, dans un trou, en bas d'une corniche, dans la lave… Il reste au sol jusqu'à ce qu'il s'immobilise (au sol, il encaisse les coups normalement), puis se relève (fondu d'une demi-seconde de la pose couchée à la pose debout). S'écraser contre un mur lui fait des dégâts proportionnels à la vitesse ; un monstre qui n'atterrit jamais (trou sans fond) meurt ; la lave le brûle comme d'habitude.
      • Immunisés à la projection (simple bousculade, son sourd) : les monstres nettement plus grands ou plus larges qu'un humain — golems, trolls, démons, vers, dragon —, la Bête noire de la forge naine (liste par nom de classe, extensible), et ce qui n'est pas en train de se battre (un badaud, une créature qui ne vous a pas vu : elle recule seulement).
      • En dialogue scripté : intouchable, le coup fait juste un son sourd.
      • Le joueur qui frappe compte avec sa propre compétence, même chez l'hôte ; les clients voient le ragdoll comme celui d'un cadavre, puis le monstre se relever.
    • 16bx — coup de pied, suite (retours de JD) : le pied partait vers l'arrière en vue à la 3ᵉ personne — corrigé (le sens de rotation de la hanche était inversé, mesuré cette fois : pied 100 unités devant la hanche). En vue à la première personne, votre pied monte dans l'image au moment de l'impact, comme dans Dark Messiah. Endurance : un coup en prend un tiers, elle revient en quelques secondes (trois coups d'affilée au plus). HUD coop réorganisé en bas à gauche : vie, dessous mana (l'orbe bleu disparaît en coop), dessous faim et endurance côte à côte.
    • 16bw — coup de pied (protocole v23 : tout le monde doit être en 16ce) :
      • Coup de pied façon Dark Messiah : bouton 4 de la souris (latéral) ou Y par défaut (Options > Contrôles > « Ajouts RT / coop », ligne « Coup de pied »). Le pied droit part ; ce qui est devant (à portée de bras, 40° de chaque côté) est repoussé : un monstre prend un peu de dégâts (3 + un cinquième de votre force) et est projeté sur quelques mètres — dans un trou, en bas d'une corniche, dans la lave ; un objet libre (physique) vole.
      • Animation de la jambe faite maison (le jeu n'a pas d'animation de coup de pied), visible sur les autres joueurs ; en vue à la première personne la vue plonge un peu au moment de l'impact. Son de coup ; pas en l'air, en lévitation, en escalade, en mode magie ni pendant une roulade.
      • La poussée et les dégâts sont calculés par l'hôte avec la force du joueur qui frappe : tout le monde voit la même chose.
    • 16bv — sprays (tags) et menu Personnalisation (protocole v23 : tout le monde doit être en 16ce) :
      • Spray : touche K par défaut (Options > Contrôles > « Ajouts RT / coop », ligne « Spray ») : peint votre image, comme les sprays de Counter-Strike, sur le mur, le sol ou le plafond que vous regardez (à portée de bras). Tous les joueurs la voient au même endroit, droite, éclairée comme la surface, avec la transparence de votre PNG (un JPG donne un rectangle). Petit son, deux secondes entre deux sprays.
      • Image à déposer dans userdata\coop\sprays\ (bouton « Ouvrir le dossier des sprays »), n'importe quelle taille, réduite à 128×128 ; elle part une fois aux autres joueurs à la connexion, jamais écrite sur leur disque.
      • Les sprays restent avec le niveau : enregistrés avec la partie, retrouvés en revenant, envoyés à un joueur qui rejoint. Un seul par joueur et par niveau, comme dans CS : en refaire un efface le précédent.
      • Menu « Personnalisation » dans le menu principal : le visage (déplacé depuis Options > Coopération) et le spray, avec leurs aperçus.
    • 16bt — ray tracing de l'éclairage (cycle Ray tracing étendu de deux crans, sur une nouvelle page « Ray tracing et ambiance… » d'Options RT) :
      • + occlusion, lumière indirecte : l'occlusion ambiante est tracée dans le niveau (remplace le SSAO : coins, dessous de table et jonctions justes, plus d'artefact aux bords de l'écran), et une lumière indirecte tracée remplace l'ambiance uniforme cuite dans les niveaux : un mur éclairé par une torche renvoie sa lumière dans la pièce, les sols colorés teintent les murs, les recoins que rien n'éclaire s'assombrissent. Curseur Lumière indirecte (force ; le milieu = défaut).
      • Complet (lumières fixes aussi) : les lumières fixes du niveau (appliques, feux, bougies posées) projettent des ombres douces tracées par pixel, là où le jeu d'origine n'avait qu'un éclairage par sommet sans ombre fine. Réglage Éclairage d'origine conservé (0 / 25 / 50 / 75 %) pour doser entre l'éclairage d'origine et les ombres tracées (25 % par défaut).
      • Chaque cran remplace la technique classique correspondante, rien ne se cumule : SSAO coupé quand l'occlusion est tracée (le curseur Occlusion ambiante règle alors la force de l'occlusion tracée), ombres du décor tracées à partir de Reflets + ombres (les shadow maps ne servent qu'aux personnages), Éclairage par pixel forcé et grisé dès que le ray tracing est actif.
      • Un rayon par pixel et par image en demi-résolution, en damier, accumulé sur les images précédentes : l'image se stabilise en une demi-seconde après un mouvement de caméra. Coût mesuré au-dessus de Reflets + ombres : +1,2 ms (occlusion + lumière indirecte) / +1,6 ms (Complet) par image en 1440p.
      • Purement local, comme le reste du ray tracing : joueurs avec et sans jouent ensemble.
      • Menu : la page Options RT est scindée, les réglages Ray tracing, Ambiance et Brume volumétrique sont sur « Ray tracing et ambiance… » (la page débordait).
      • Vues de debug : post_debug="gi" / "rtao" / "rtstatic" ; shaders post_trace.frag, post_trace_blur.frag (F7).
    • 16bs : la moitié tranchée d'un monstre qui restait suspendue en l'air (chez l'hôte aussi) : le morceau naissait dans le mur contre lequel le monstre s'appuyait, ou à un point périmé du maillage, et ne tombait jamais. Il naît maintenant au plus près du corps, et un morceau immobile avec du sol bien en dessous est relâché.
    • 16br : un morceau tranché qui restait suspendu en l'air chez un client (pas d'état reçu de l'hôte) tombe de lui-même au bout de 3 s ; sa création est notée dans le journal (userdata�rx.log) pour retrouver la cause.
    • 16bq — eau et sang « physiques » (deux options dans Options RT, activées par défaut) :
      • Rides sur l'eau : ronds concentriques quand quelque chose tombe dans l'eau (objet, flèche, plongeon), sillage derrière qui patauge (joueurs, coéquipiers, monstres), les ondes se propagent, s'amortissent et s'estompent. Simulé sur la carte graphique autour de vous ; chaque joueur voit la même chose. Plus visible sur une eau calme ou éclairée que sur une mare sombre.
      • Traces de sang : marcher dans une tache de sang fraîche laisse des empreintes rouges sur les pas suivants (cinq, de plus en plus pâles), pour vous comme pour vos coéquipiers et les monstres ; les taches de sang durent aussi deux fois plus longtemps.
    • 16bp — morceaux tranchés et sang :
      • Démembrement : la partie tranchée d'un monstre (tête, torse, membre) ne s'évapore plus en sang au bout de 300 ms (comportement du jeu d'origine) : elle reste au sol comme les cadavres, tombe avec la physique de l'hôte, au même endroit chez tous les joueurs, et on la retrouve en revenant dans le niveau (enregistrée avec les cadavres). Sans butin (il reste sur le corps), non ramassable.
      • Sang dans le noir : les taches de sang (et les flaques d'eau) prennent l'éclairage du sol où elles sont ; elles ne ressortaient plus rouges dans les zones d'ombre.
      • Au passage : un bras droit tranché était compté comme une tête (coquille du moteur).
    • 16bo : la flèche plantée disparaît bien quand on la ramasse (le moteur continuait de dessiner le projectile immobile).
    • 16bn : Options > Contrôles propose maintenant « Touches du jeu (vanilla) » (les deux pages d'origine) et « Ajouts RT / coop » (vue 3ᵉ personne, caméra, roulade, marqueur, administration) sur une page à part — tout tenait sur la première page et débordait du cadre.
    • 16bm — roulade et flèches plantées :
      • Roulade (esquive) : touche Z par défaut (W sur un clavier AZERTY : la touche physique à gauche de X ; à changer dans Options > Contrôles, ligne « Roulade (esquive) »). Roulade dans le sens des touches de déplacement (avant par défaut, arrière, gauche, droite), courte invulnérabilité au milieu, petit temps de recharge ; les autres joueurs la voient. Pas en l'air, en lévitation, en escalade ni en mode magie.
      • Flèches plantées : une flèche qui touche le décor reste plantée là où elle a touché (70 % ; 30 % se brisent), visible par tous avec l'étiquette « Flèche (ramasser) ». La ramasser remplit le carquois que vous portez (jusqu'à sa capacité, 100), ou en devient un si vous n'en avez pas. Les flèches enflammées explosent, pas de flèche à récupérer.
    • 16bl : les flèches ne traversent plus le sol à bas fps.
    • 16bk — projectiles synchronisés (retours de JD, 17/09) :
      • Missile magique (et boule de feu, projectile de glace, éclair) : chez les autres joueurs, le sort d'un coéquipier partait dans une direction miroir. Corrigé : visée exacte, point de départ et tirages aléatoires du lanceur voyagent avec le sort → même trajectoire partout.
      • Flèches : les flèches des autres joueurs se voient maintenant partir de leur personnage (même position, vitesse et chute) ; les dégâts restent ceux du tireur, via l'hôte.
    • 16bj : plantage de l'hôte après un changement de niveau en vue à la 3ᵉ personne avec une torche allumée (copie de torche périmée).
    • 16bi — corrections coop (retours de partie à deux, 16/09 soir) :
      • Plantage de l'hôte quand un client double-cliquait sur une porte gardée (le PNJ qui demande le mot de passe) : corrigé (liste des répliques modifiée pendant son propre parcours).
      • Enchantements synchronisés : une arme ou armure enchantée garde ses bonus, son nom, son prix et son aura quand on la donne, la lâche, la range dans un coffre ; l'aura se voit sur les autres joueurs qui la portent.
      • Parchemins : un parchemin donné ou lâché par un autre joueur gardait le geste mais perdait son sort (lévitation, boule de feu…). Corrigé : les objets transmis emportent tout ce que leurs scripts en ont fait.
      • Réanimation : le joueur relevé reçoit l'effet du sort de soin (lumière, particules, son), visible par tous.
    • 16bh : champs de force invisibles, joueurs en feu pour toujours, compétences des clients, alchimie et crochets des clients, étiquette « serrure : NN de Mécanisme requis », pièges visant le bon joueur, boules de feu des plaques de pression, dégâts en double, plantage FLT_OVERFLOW de la physique.
    • Tout le reste comme 15bf.
  • ArxCoop-2026-09-14ai.zip — version classique (protocole v13), rendu d'origine, inchangée (ces corrections coop n'y sont pas encore).

Installation : dézipper dans le dossier d'Arx Fatalis (celui qui contient data.pak), voir le LISEZMOI.


Two builds of the mod — everybody in a party must use the same one (different network protocol):

  • ArxCoop-RT-2026-09-18ce.zip — RT edition (protocol v23): the co-op mod + modern rendering + physics + software ray tracing. Options RT menu (presets Off / Low / Medium / High / Ultra, live settings; Off = original look): per-pixel lighting with generated material maps, dynamic shadows, specular and scene reflections, bloom / FXAA or SMAA / SSAO / soft particles, water with waves and refraction mirroring the scene, glowing lava, Jolt physics (ragdoll corpses thrown by the killing blow, tumbling objects, breakables shattering, cloth banners; host-simulated, players unaffected), ray tracing (OpenGL 4.3, no RTX needed: reflections traced through the level, traced soft shadows of every torch, candle and spell, traced occlusion and indirect light, traced shadows of the level's fixed lights), Mood option (Normal / Dark / Pitch dark), volumetric haze (Light / Dense / Thick) with light shafts and volumetric shadows. Script console (² key): tp p2, or p2 100, spawn item …; Shift+click sells / stores an item. Shaders in Graph\shaders\, F7 reloads them. Needs OpenGL 3.0 (4.3 for ray tracing).
    • 16ce — host stuck in a cutscene (JD, the mummy behind the crypt window): when another player triggers a scripted cutscene the host plays it (teleported next to that player, the path the game was written for). But the end of the scene (camera back, controls back, black bars off) is often armed by a timer before the take-over, in the triggering player's name: it went to them and the host stayed stuck in the scene (a reload was needed). Fixed: while the host is in a scene taken over from a player, whatever that player's actions direct at "the player" belongs to the host. Verified with two instances (timer armed before the take-over: the host gets its controls back 3 s later).
    • 16cd — the crypts (JD's log, a three-player session in the crypts):
      • Statues that follow you with their eyes (gargoyles): on the clients their head did not move (an NPC's head turn is not in the network state). It now turns on every machine toward the nearest player, like on the host.
      • The six-pillar puzzle (one stone per pillar, the portcullis opens at six): a stone lifted off a pillar by a player other than the host stayed counted (the host's copy was hidden, the pillar's zone never saw it leave), so a stone moved from one pillar to another counted twice. Fixed: the pillar learns the stone is gone when the player takes it.
      • A useless log warning when a player clicked a teammate ("unknown entity coop_player_...").
    • 16cc — aimed and placed spells, same direction for all (check asked by JD; protocol unchanged, v23): spells placed in front of the caster (create field, fire field, ice field, summon, mass lightning, raise dead) and the ice and poison projectiles were placed mirrored on the other players' screens - the original code takes the puppet's "NPC" yaw, the opposite of the player's. Fixed for all of them: the caster's aim, start point and random draws (poison spread) travel with the cast. Fireball and lightning, which follow the look during the spell, read the mirrored yaw after the launch too: fixed. The fireball grows at the same point everywhere (the caster's real start point, not a puppet bone out of view). Verified with two instances: same position and yaw in both logs for every spell.
    • Also: the runes seen by the others (16cb) were traced 1.7 m too low (a puppet's position is at the feet, not the eyes) - fixed.
    • 16cb — runes seen by all (JD's request; protocol v23, everybody must be on 16ce): every rune a player draws with the mouse or incants from the spell bar is traced in light in front of their character on the other players' screens, with the spoken rune - like the runes of NPC casters.
    • 16ca — spell bar (JD's request): a bar at the bottom of the screen, MMORPG style. The first three cases are the game's precast slots (a scroll read, runes drawn while sneaking), keys 1-3 as before; 4 still cancels the current spell; the six cases 5 to 0 take spells bound from the spell book (hover or click a spell, then the case's key; again to clear). Pressing a case incants the spell instead of drawing it: the runes light up one by one in front of you (0.4 s each, spoken), then the spell leaves at your current level for 10 % more mana than a drawn one. A hit, a roll, a kick, the book or the same key again interrupts the incantation. A case is greyed without the runes or the mana; targeted spells keep the aiming cursor. Bindings live in your config (not the save). The bar rises above the open inventory. Off in Options > Co-op, keys under "RT / co-op additions".
    • 16bz: a thrown monster that stopped against a wall got up inside the wall (JD's screenshot): on getting up, if its spot is blocked it stands at the nearest clear spot (up to 1.8 m around).
    • 16by — kick: no more damage, ragdoll throw (JD's feedback; protocol v23, everybody must be on 16ce):
      • The kick no longer hurts (a goblin died in two kicks). It shoves, nothing else; the monster still staggers and gets angry.
      • Below 70 in Close combat: the monster staggers back a metre or two.
      • From 70 on: a monster in a fight is thrown as a ragdoll four or five metres, into a pit, off a ledge, into the lava... It lies there until it stops (taking hits normally meanwhile), then gets up (a half-second blend from the lying pose to standing). Slamming into a wall hurts it in proportion to the speed; a monster that never lands (bottomless pit) dies; lava burns it as usual.
      • Immune to the throw (a nudge and a dull thud): monsters clearly taller or wider than a human - golems, trolls, demons, worms, the dragon -, the Black Beast of the dwarven forge (class-name list, extensible), and whatever is not fighting (a bystander, a creature that has not seen you: it only staggers).
      • In a scripted dialogue: untouchable, the kick just thuds.
      • The kicking player counts with their own skill, on the host too; the clients see the ragdoll like a corpse's, then the monster getting up.
    • 16bx — kick, continued (JD's feedback): the foot went backwards in third person - fixed (the hip rotation was inverted; measured this time: foot 100 units ahead of the hip). In first person your boot comes up into the view at the impact, like Dark Messiah. Stamina: a kick takes a third of it, back in a few seconds (three kicks in a row at most). Co-op HUD rearranged bottom left: life, mana below (the blue orb goes in co-op), hunger and stamina side by side below.
    • 16bw — kick (protocol v23: everybody must be on 16ce):
      • Kick after Dark Messiah: mouse button 4 (side) or Y by default (Options > Controls > "RT / co-op additions", "Kick" row). The right foot goes out; whatever stands in front (within reach, 40° either side) is shoved back: a monster takes a little damage (3 + a fifth of your strength) and is thrown off balance over a few metres - into a pit, off a ledge, into the lava; a loose (physics) object flies off.
      • Home-made leg animation (the game has no kick animation), seen on the other players; in first person the view dips a little at the impact. Hit sound; not in the air, while levitating, climbing, in magic mode or during a roll.
      • The shove and the damage are the host's, with the kicker's strength: everybody sees the same thing.
    • 16bv — spray tags and a Customisation menu (protocol v23: everybody must be on 16ce):
      • Spray: K key by default (Options > Controls > "RT / co-op additions", "Spray" row): paints your image, like the sprays of Counter-Strike, on the wall, floor or ceiling you look at (within reach). Every player sees it at the same spot, upright, lit like the surface, with the transparency of your PNG (a JPG gives a rectangle). Small sound, two seconds between sprays.
      • Drop the image in userdata\coop\sprays\ ("Open the sprays folder" button), any size, shrunk to 128x128; it travels once to the other players when connecting, never written to their disk.
      • Sprays stay with the level: saved with the game, back when you return, sent to a joining player. One per player and level, like CS: spraying again removes your previous one.
      • "Customisation" menu on the main menu: the face (moved from Options > Co-op) and the spray, with previews.
    • 16bt — ray-traced lighting (the Ray tracing cycle gains two steps, on a new "Ray tracing and mood..." page of Options RT):
      • + occlusion, indirect light: the ambient occlusion is traced through the level (replaces the SSAO: true corners, undersides and junctions, no more screen-edge artefacts), and traced indirect light replaces the flat ambient baked into the levels: a wall lit by a torch lights the room back, coloured floors tint the walls, the nooks nothing reaches get darker. Indirect light slider (strength; the middle = default).
      • Full (static lights too): the level's fixed lights (sconces, fires, standing candles) cast soft per-pixel traced shadows, where the original game only had per-vertex lighting without fine shadows. Original lighting kept setting (0 / 25 / 50 / 75%) to balance the original lighting against the traced shadows (25% by default).
      • Each step replaces the corresponding classic technique, nothing stacks: SSAO off when the occlusion is traced (the Ambient occlusion slider then sets the strength of the traced one), traced level shadows from Reflections + shadows on (the shadow maps only serve the characters), Per-pixel lighting forced on and greyed out whenever the ray tracing is on.
      • One ray per pixel and frame at half resolution, checkerboarded, accumulated over the previous frames: the image settles within half a second after a camera move. Measured cost over Reflections + shadows: +1.2 ms (occlusion + indirect light) / +1.6 ms (Full) per frame at 1440p.
      • Purely local like the rest of the ray tracing: players with and without play together.
      • Menu: the Options RT page is split, the Ray tracing, Mood and Volumetric haze settings sit on "Ray tracing and mood..." (the page overflowed).
      • Debug views: post_debug="gi" / "rtao" / "rtstatic"; shaders post_trace.frag, post_trace_blur.frag (F7).
    • 16bs: a monster's severed half left hanging in the air (on the host too): the piece was born inside the wall the monster leaned on, or at a stale mesh point, and never fell. It now starts next to the body, and a still piece with a floor well below it is dropped again.
    • 16br: a severed part left hanging in the air on a client (no state received from the host) falls on its own after 3 s; its creation is logged (userdata�rx.log) to trace the cause.
    • 16bq — "physical" water and blood (two options in Options RT, on by default):
      • Water ripples: rings when something falls into the water (an object, an arrow, a dive), a wake behind whoever wades (players, teammates, monsters); the waves spread, damp and fade. Simulated on the GPU around you; every player sees the same thing. More visible on calm or lit water than on a dark pool.
      • Blood trails: walking through fresh blood leaves red footprints on the next steps (five, fading), for you, your teammates and the monsters; blood stains also last twice as long.
    • 16bp — severed parts and blood:
      • Dismemberment: a monster's severed part (head, torso, limb) no longer bursts into blood after 300 ms (the original game's behaviour): it stays on the ground like the corpses, falls with the host's physics to the same spot for every player, and is there again when you come back to the level (saved with the corpses). No loot (it stays on the body), not pickable.
      • Blood in the dark: blood stains (and water puddles) take the lighting of the floor they lie on; they no longer showed bright red in shadowed areas.
      • Also: a severed right arm was counted as a head (engine typo).
    • 16bo: a planted arrow does vanish when picked up (the engine kept drawing the motionless projectile).
    • 16bn: Options > Controls now offers "Game keys (vanilla)" (the two original pages) and "RT / co-op additions" (third person, camera, dodge roll, marker, admin tools) on their own page — everything sat on the first page and overflowed the frame.
    • 16bm — dodge roll and planted arrows:
      • Dodge roll: Z key by default (the physical key left of X; rebind it in Options > Controls, "Dodge roll" row). Rolls in the direction of the movement keys (forward by default, back, left, right), short invulnerability in the middle, small cooldown; the other players see it. Not in the air, while levitating, climbing or in magic mode.
      • Planted arrows: an arrow that hits the scenery stays planted where it hit (70%; 30% break), seen by everybody with an "Arrow (pick up)" label. Picking it up refills the quiver you carry (up to its capacity, 100), or becomes one if you have none. Fiery arrows explode, nothing to recover.
    • 16bl: arrows no longer tunnel through floors at low frame rates.
    • 16bk — synchronised projectiles (JD's feedback, 17/09):
      • Magic missile (and fireball, ice projectile, lightning): on the other players' screens, a teammate's spell flew a mirrored direction. Fixed: the caster's exact aim, start point and random draws travel with the cast, so every copy flies the same path.
      • Arrows: other players' arrows are now seen leaving their character (same position, speed and drop); the damage stays the archer's, through the host.
    • 16bj: host crash after a level change in third person with a lit torch (stale torch copy).
    • 16bi — co-op fixes (from a two-player session, 16/09 evening):
      • Host crash when a client double-clicked a guarded door (the NPC asking for the password): fixed (the speech list was modified while being walked).
      • Enchantments synchronised: an enchanted weapon or armour keeps its bonuses, name, price and glow when handed over, dropped or stored in a chest; the glow shows on the other players wearing it.
      • Scrolls: a scroll given or dropped by another player kept the gesture but lost its spell (levitation, fireball…). Fixed: transferred items carry everything their scripts made of them.
      • Revive: the player getting back up receives the healing spell's effect (light, particles, chime), seen by everybody.
    • 16bh: invisible force fields, players burning forever, clients' skills, clients' alchemy and lockpicks, "lock: needs NN Mechanism" label, traps aimed at the right player, pressure-pad fireballs, double damage, physics FLT_OVERFLOW crash.
    • Everything else as in 15bf.
  • ArxCoop-2026-09-14ai.zip — classic build (protocol v13), original rendering, unchanged (these co-op fixes are not in it yet).

Unzip into the Arx Fatalis folder (the one with data.pak), see the README.