Avancée du 9 juillet
le 10 juillet 2013 à 16h11
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.
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.


commentaires (8)
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.
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)
quelqu'un peut m'explique en plus simple svp j'y comprend rien au grappin la
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
J'ai pas tout lu, j'ai eu peur que mon cerveau me coule par les oreilles ...