Avancée du 9 juillet

Florian Lelong Publié par Florian Lelong
le 10 juillet 2013 à 16h11
Avancée du 9 juillet
Omni nous explique le fonctionnement du grappin et nous offre de belles images. Le grappin a finalement été intégré dans le jeu. Les nombreux bugs devront bien sur être corrigés avant qu'Omni puisse nous montrer cet outil. Accrochez vous, cette avancée sera technique ! Omni s'est inspiré, pour réaliser ce grappin, d'un vieux jeu de SNES dont il a entendu parler en 2004 dans un Tool Assisted Speedrun dont le nom est Umihara Kawase.

Si vous vous souvenez correctement de vos cours de physique, vous comprendrez que c'est la loi de Hooke qui est utilisée ici, pour calculer l'extensibilité du grappin :

F = k.x

"k" est une constante définie dans un fichier de configuration, et x est l'étendue de la corde par rapport au reste. En vous balançant , vous pourrez modifier la longueur de ce reste.

Il faut donc calculer la longueur de la corde, en considérant que la corde s'enroule autour des blocs.

La corde doit bien évidemment laisser une trace de là où elle est allée, ainsi, nous parlons là, d'un point d'angle : il doit être ancré au bloc qu'il courbe, donc il a besoin d'un point d'ancrage, qui est généralement un des coins de ce bloc.

Mais comme les blocs se partagent les coins dans un monde fait de tuiles, on a besoin de savoir quel bloc il courbe, ce qui signifie qu'on doit garder des valeurs : une coordonnée de tuile et une coordonnée spatiale.

La possibilité d'ajouter et d'enlever des blocs pose un problème encore plus complexe.

La plupart des jeux dont Omni s'inspire (Umihara Kawaser, Worms, Hedgewars) n'ont pas à se préoccuper de terrains modifiables et variables.

Pour Starbound, si.

A n'importe quel moment, un bloc où se trouve une corde peut disparaître, que se passe-t-il  dans ce cas ? Ou dans le cas contraire, que se passe-t-il si un bloc est posé la où se trouve une corde ?

Dans le cas ou le bloc disparaît, il faudrait que cela soit détecté, et que le point d'ancrage soit déplacé vers le milieu de la ligne formée par l'ancien et le prochain point d'ancrage, sauf si le point d'ancrage qui a disparu était le grappin. Alors dans ce cas, le grappin se détache et nous laisse tomber.

Omni pense modifier ce système et laisser la gravité s'occuper du grappin, au lieu de faire disparaître la ligne.

10-07-1

Après que le point d'ancrage soit signalé comme mouvant vers le milieu, les lignes avant et après doivent être vérifiées pour s'assurer que la ligne ne se tende pas accidentellement dans le mur.

Il faut aussi regarder si c'est assez près du milieu pour enlever entièrement le point d'ancrage.

Prenons maintenant le cas où un bloc apparaît sur le chemin de la corde.

Si le chemin entre un point A et un point B est bloqué, il faut d'abord déterminer toutes les tuiles qui sont entrées en collision avec ce chemin, et savoir la quelle est la plus proche. Il y a deux cas possibles :

  • On regarde en face du bloc, auquel cas on tient compte des deux coins que l'on voit.
  • On regarde en biais, auquel cas on tient compte des deux coins opposés.

10-07-2

Il faut considérer un côté, puis l'autre, ce qui veut dire qu'Omni aura éventuellement besoin d'ajouter un élément aléatoire, pour ne pas toujours favoriser un chemin à l'autre. De toute façon, dans le premier cas, on essaie le coin gauche, et on vérifie si on peut aller vers cette direction (en vérifiant les tuiles adjacentes au coin), et si cela fonctionne, on répète l'algorithme. Il y a aussi d'autres cas, par exemple quand on se balance autour d'un mur et que le grappin se détache de la paroi, cela a besoin d'être détecté (en distinguant que l'angle formé est plus grand que 180° ). Pas de nouvelles sur l'avancement des autres développeurs malheureusement, et Omni s'excuse pour son pauvre talent de dessinateur. - Corrigé par Valior

commentaires (8)

Avatar
Lahrs Le 11/07/2013 à 08:30

J'adore les supers images.

Sinon j'adore cette idée de grappin, quand j'étais gamin j'adorais l'utiliser dans Worms juste pour m'amuser.

Avatar
Valior Le 10/07/2013 à 17:43

Mais imagine si un bloc en mouvement se place sur le point d'ancrage.

Premièrement, ils ne peuvent pas arrêter soudainement un bloc mouvement, à cause d'un simple point d'ancrage.

Ce serait totalement impensable pour les développeurs, de créer un "bug" volontairement.

Après, je pense que ce n'est qu'une question de logique.

Si le point d'ancrage change, la trajectoire change peut-être aussi. (d'où l'aléatoire)

Avatar
Alex9958 Le 10/07/2013 à 17:21

quelqu'un peut m'explique en plus simple svp j'y comprend rien au grappin la

Avatar
Doxx Le 10/07/2013 à 17:06

Bel article mais vous êtes nuls.
Je vous fait un gros poutou et je pense à vous tout en dégustant un cocktail pendant que vous bossez.
<3

Avatar
RedFlags Le 10/07/2013 à 16:50

J'ai pas tout lu, j'ai eu peur que mon cerveau me coule par les oreilles ...