Depuis le devlog sur l'arène du château, tout le travail est parti dans un seul endroit : ce qu'on voit quand une brute frappe. Deux chantiers, dont un qui s'est terminé en retirant ce qu'on venait de construire.
L'ancienne traînée ne se voyait pas
Une traînée de mouvement, c'est la trace lumineuse qui reste derrière une lame pendant un coup. La nôtre existait déjà. Elle était mauvaise, pour trois raisons qu'on n'avait jamais prises au sérieux :
- C'était une polyligne échantillonnée sur l'origine du groupe d'arme, c'est-à-dire un point au niveau de la poignée. Elle traçait donc le trajet de la main, pas celui de la lame.
- Sa largeur était fixe, et à la distance de notre caméra elle faisait moins d'un pixel. Autant dire rien.
- Elle était identique pour toutes les armes. Un couteau et une flamberge laissaient exactement la même trace.
Un vrai ruban, tendu entre deux points de la lame
La nouvelle version n'échantillonne plus un point mais deux, relevés dans l'espace du monde à chaque image, et tend un ruban entre les deux. La conséquence est celle qu'on cherchait depuis le début : la largeur du ruban, c'est l'arme. Une flamberge peint un arc large parce que sa lame est large. Une masse peint une trace courte et épaisse. Personne n'a réglé ces largeurs à la main, elles sortent de la géométrie.
Deux modes de tracé se partagent les catégories :
- Le mode lame tend le ruban entre deux points de l'arme. C'est la bonne lecture pour un balayage, où la lame se déplace latéralement et balaie une vraie surface. C'est l'épée et l'arme contondante.
- Le mode traînée accroche le ruban à la pointe et l'élargit perpendiculairement au mouvement et à la caméra. Indispensable pour une estocade : une arme qui se déplace le long de son propre axe balaie une surface nulle, et un ruban tendu sur la lame y serait rigoureusement invisible. C'est la dague et le poing nu.
Les deux modes se dimensionnent sur la même mesure, la boîte englobante de la lame, relevée au moment de la frappe sur le modèle d'arme seul. Ce "seul" a coûté une soirée : l'aura de forge projette des coques bien au-delà de la silhouette réelle, et la main droite, qui est rattachée au groupe d'arme, a sa géométrie centrée à plusieurs mètres de son pivot. Les deux sous-arbres sont désormais nommés et écartés explicitement du calcul, sinon toutes les armes améliorées à la forge héritaient d'un ruban trois fois trop large.
Le reste est porté par un shader additif : l'opacité s'éteint le long de la queue, le bord côté main est adouci, et le bord d'attaque brûle vers une teinte propre à la catégorie. La couleur de base, elle, reste celle de la rareté, comme l'aura de forge. En un coup d'œil, la traînée dit à la fois de quel type d'arme il s'agit et à quel palier elle appartient.
Puis on a retiré la traînée du bâton
Le bâton n'avait jamais eu de traînée, faute d'un mouvement à échantillonner. Le nouveau système lui en a donné une, qui suivait le cercle d'incantation et se dissolvait au lancement de l'orbe. C'était joli.
On l'a supprimée deux jours plus tard, et la hallebarde avec.
La raison est simple : ni l'un ni l'autre ne balaie. Le bâton lance un sort, l'orbe et son éclat racontent déjà tout ce qu'il y a à comprendre. La hallebarde pousse une estocade droite le long de son propre axe. Dans les deux cas, le ruban n'ajoutait pas d'information, il en brouillait une qui était déjà claire. Une traînée doit dire "ce coup a balayé cet espace" ; quand aucun espace n'est balayé, elle ment.
La table des profils ne contient donc plus que quatre entrées, et le type qui la garde est construit par exclusion de ces deux catégories. Retirer une entrée sans toucher au type, ou l'inverse, casse la compilation. C'est notre façon de nous empêcher de refaire l'erreur dans six mois en oubliant pourquoi elle avait été corrigée.
Le second chantier : une frappe par catégorie
En parallèle, chaque famille d'arme a reçu sa propre animation de frappe, et surtout son propre moment d'impact. C'est ce dernier point qui a le plus changé la lecture des combats.
- La dague décrit un quart de cercle horizontal depuis la hanche, tranchant en travers. Elle est tenue en prise inversée, donc elle balaie, elle ne pique pas. Impact à 0,12 seconde.
- L'épée et l'arme contondante partent d'une rotation du corps entière. La lame ne se referme sur l'adversaire qu'à la fin de la rotation, donc l'impact est calé à 0,4 seconde. Le caler plus tôt, comme c'était le cas avant, faisait réagir la cible pendant que l'arme était encore derrière l'épaule.
- Le bâton lève, incante, puis lance. Son impact est la somme de ces trois durées, projectile compris.
- La hallebarde atteint son extension maximale 0,1 seconde après le départ.
Tout se cale sur cette valeur : la réaction de la cible, le nombre de dégâts qui s'affiche, le son, la dissolution du ruban. Un seul nombre par catégorie, et le combat entier retombe en rythme.
Un détail dont on est content : l'arc de la dague n'est pas écrit en dur. Son rayon est la distance entre la main et l'axe du corps, son angle de départ est celui de la main au repos, les deux étant lus dans la pose de combat elle-même. Régler la prise de l'arme dans l'atelier déplace donc l'arc avec elle, au lieu de le désaccorder silencieusement.
Les poses d'attente
Dernier morceau : les brutes ne tiennent plus leur arme en position de combat quand elles ne se battent pas. Il existe maintenant deux poses. En combat, l'arme est en main. Au repos, sur ta page de profil et dans le choix de brute, les épées, les masses et les bâtons sont sanglés dans le dos, tandis que les lames courtes et la hallebarde restent en main.
Ce n'est pas qu'une question de style. Le modèle de brute n'a pas de squelette, et la main droite est rattachée au groupe de l'arme : envoyer l'arme dans le dos y emmène le bras avec elle. Il a fallu, pour chaque pose, réattacher la main à un point d'ancrage propre. Une main qu'on laisse simplement tranquille finit à l'intérieur du torse, sa géométrie n'ayant aucune position d'origine dans le modèle.
Et ensuite
Le chantier suivant, ce sont les impacts eux-mêmes : pour l'instant une brute réagit de la même façon à une égratignure et à un coup qui lui retire un tiers de sa vie, à l'intensité près. On aimerait que la nature du coup se lise, pas seulement sa force.
En attendant, va regarder un combat. Si ta brute porte une flamberge, tu verras la différence tout de suite. Si elle porte un bâton, tu ne verras aucune traînée, et c'est exactement ce qu'on voulait.