AccrétionBêta
Laissez tomber un corps céleste. Deux identiques fusionnent en l’astre suivant, de la Lune au Soleil en passant par les planètes, et l’espace se remplit, que vous soyez prêt ou non.
Plus de place
Un corps est resté trop longtemps au-dessus de la ligne. Il n’y a pas de plafond, seulement une ligne, et un corps qui s’immobilise au-dessus n’a plus nulle part où aller.
- Lune
- Mercure
- Mars
- Vénus
- Terre
- Neptune
- Uranus
- Saturne
- Jupiter
- Soleil
Déplacez-vous pour viser et appuyez pour lâcher. Au clavier, les flèches pour viser, la barre d’espace pour lâcher.
Comment jouer
Visez, puis lâchez
Déplacez-vous le long du haut du champ pour placer un corps et appuyez pour le lâcher. Seuls les cinq plus petits vous sont donnés, donc tout ce qui vient après la Terre doit être obtenu par fusion.
Deux identiques se touchent et fusionnent
Inutile de les presser l’un contre l’autre ou de les maintenir : dès que deux corps identiques s’immobilisent l’un contre l’autre, ils deviennent l’astre suivant, et si ce nouvel astre se pose à côté d’un astre identique, cela déclenche une réaction en chaîne.
Construisez en largeur, pas en hauteur
Un corps lâché sur une pile haute roule, et il ne s’arrête pas là où vous visiez. L’essentiel du jeu consiste à garder les gros corps au fond, car ce sont eux qui n’ont plus nulle part où aller.
La ligne est un délai, pas un mur
Rien n’empêche un corps de la dépasser. La partie n’est perdue que si un corps s’est posé au-dessus et y est encore une demi-seconde plus tard : un rebond passager ne coûte rien, un Jupiter installé là, si.
Comment c’est construit
Pas de canvas, pas de bibliothèque de physique et aucune dépendance. Un corps est un div avec un border-radius, sa couleur est un dégradé dans la même feuille de style que le reste de la page, et à chaque image, une seule transformation est écrite sur chacun. Les planètes suivent donc l’échelle de la page, restent nettes à tout niveau de zoom et n’ajoutent rien à télécharger. Un moteur physique généraliste pèserait à lui seul cinq fois ce jeu tout entier.
Le solveur fait beaucoup de petits pas plutôt que quelques grands, huit par image. À chaque pas, chaque contact est résolu comme un ressort raide et très amorti, les corps se déplacent, puis chaque contact est résolu une seconde fois, de façon rigide, ce qui annule la vitesse que la poussée leur avait donnée. Un recouvrement est ainsi corrigé sans jamais devenir un rebond, et une pile au repos reste parfaitement immobile. Un contact est détecté alors qu’il reste encore un écart, si bien qu’une planète qui tombe s’arrête exactement sur la surface où elle se pose au lieu de s’y enfoncer puis d’en être repoussée.
Le reste sert à donner du poids plutôt que de l’élasticité. Le frottement agit entre les deux surfaces, rotation comprise, donc un corps qui glisse se met à rouler. Un atterrissage brutal absorbe la rotation avec laquelle le corps arrive, si bien qu’une planète qui en accroche une autre sur le côté s’arrête près d’elle au lieu de traverser le champ en roulant. Un choc est dissipé sur place et jamais reporté au pas suivant, ce qui empêche un gros corps de rebondir sur un petit. Enfin, une planète en équilibre au sommet d’une autre en est aussitôt délogée : l’équilibre a beau être réel, une planète posée sur une autre comme un bonhomme de neige a l’air coincée.
La simulation tourne dans son propre espace de 1200 sur 1650 unités et ignore à quelle taille elle est affichée. Une seule transformation sur un seul élément met tout le champ à l’échelle de la largeur que la page lui accorde : un redimensionnement change ce nombre et rien d’autre, ni un rayon, ni une position, ni un pas. À chaque image, chaque corps est dessiné entre ses positions des deux derniers pas, si bien qu’un écran à 120 Hz reçoit une nouvelle position à chaque rafraîchissement. Le ciel en arrière-plan est dessiné une seule fois, à la génération du site : trois cents étoiles en points le long de quelques tracés, des nébuleuses faites de bruit fractal et quatre couches qui glissent à des vitesses différentes pendant que vous visez.