Alt-F4 n°12 - La rétro-ingénierie de l'araignée  06-11-2020

Écrit par xthexder, TheKool, T-A-R, édité par Conor_, Therenas, nicgarner,
traduit par bev, Trasdegi

Sommaire

Dans ce numéro 12 de Alt-F4, très facilement découpable, xthexder entre dans les coulisses techniques de l’araignée rebondissante en bas de la page. Ensuite, TheKool donne un aperçu adapté aux nouveaux joueurs des modules de production et de leurs utilisations. Enfin, T-A-R partage quelques informations sur un événement communautaire à venir qui semble très amusant.

Créer un spidertron pour Internet xthexder

Comme vous l’aurez probablement remarqué, il y a un spidertron au fond de chaque page du site Internet de Alt-F4, tout comme la fusée sur le site de Factorio. Beaucoup de gens ont probablement essayé d’appuyer dessus en espérant qu’il se passe quelque chose d’intéressant, et ont été déçus de constater que le spidertron ne faisait rien de plus que de continuer à sautiller sur place. Cependant, les lecteurs ayant l’œil attentif auront peut-être remarqué que cela a changé au moment de la publication du Alt-F4 #8 - Une lettre d’amour à Factorio. Si vous n’avez pas encore vu cela, essayez donc d’aller en bas de cette page, de cliquer sur votre meilleur pote, et de lui demander de vous suivre sur la page !

Quand nous avons créé ce site, il était clair que nous devions faire faire quelque chose au spidertron, mais nous n’avions pas vraiment le temps à ce moment-là de faire mieux qu’enregistrer son animation de base. Enregistrer le spidertron a été plutôt délicat, puisqu’il fallait le filmer sans aucun fond derrière lui. Nous avions initialement fait cela en utilisant un mod secret de Klonan qui utilise des fonctions non documentées de l’API de Factorio pour enregistrer des GIFs. Enregistrer une boucle est encore plus compliqué car comme le mouvement des spidertrons est semi-aléatoire, filmer quoi que ce soit d’autre que l’animation de base nécessiterait encore plus d’efforts pour être correct.

L’idée de base était de faire ramper le spidertron jusqu’en haut de la page et pouvoir l’utiliser comme bouton pour remonter au sommet de la page, comme la fusée sur le site Internet officiel de Factorio. Cela nécessitait d’enregistrer une boucle d’un spidertron marchant vers le haut et de la mettre en boucle en le faisant remonter vers le sommet de la page. Puis Dr.MagPie eut l’idée de le faire suivre une télécommande, comme dans le jeu. Cela allait beaucoup plus loin que ce qu’il était possible de faire avec des enregistrements, puisqu’il faudrait beaucoup trop de combinaisons différentes.

Mais connaissant notre communauté, il y a probablement des fous prêts à nous aider juste pour relever le défi…

Though knowing our community, there are probably some mad lads that would help with this just for the sake of it being a challenge….

— psihius (October 3, 2020)

Défi accepté

Créer un spidertron fonctionnel pour le site a clairement été un challenge, mais cela a été un défi intéressant à relever. Le commentaire de psihius me fit me mettre au travail dans ce que je considérerais être un cas d’école de “Nerd Sniping”. La première chose à faire était simplement de dessiner un spidertron, en se basant sur les sprites originaux de Factorio pour qu’ils puissent être bougés indépendamment les uns des autres. J’ai choisi d’utiliser des éléments HTML et CSS bruts, en espérant que le navigateur puisse accélérer le rendu en utilisant le processeur graphique. Cela s’avéra avoir plusieurs désavantages, car certains changements déclenchaient un recalcul complet de la mise en page, ce qui compensait toute amélioration des performances. Cependant, en ayant dessiné un spidertron de base, j’étais libre de commencer à l’animer en JavaScript.

Ceci est la partie supérieure de la patte. Elle est constituée de trois sprites et animée entièrement en HTML et CSS (sans aucun JavaScript).

Spidertron en T-pose statique
Une capture d’écran d’une première version du spidertron en “T-pose”. Pas encore d’animation, et celui-là n’a pas de genoux.

Après y avoir attaché toutes les pattes, le spidertron est composé de 58 sprites différents (chaque jambe en ayant 7, plus 2 pour le corps). Tous ces éléments sont contrôlés par des variables CSS qui peuvent être modifiées depuis JavaScript. J’ai commencé par utiliser 4 variables par patte : les longueurs de la partie supérieure et de la partie inférieure, et les angles supérieur et inférieur. Grâce à quelques fonctions trigonométriques, j’ai pu calculer les valeurs nécessaires pour que le pied finisse en un point donné. En utilisant la souris comme télécommande, le premier problème majeur apparut rapidement… où placer le genou ?

Dans ce premier test, l’angle du genou était fixé à 90°.

J’ai commencé à observer en détail des vidéos de spidertrons se déplaçant dans Factorio pour essayer de trouver comment rendre correctement le mouvement des pattes. Cette vidéo de Crab Rave Factorio fut énormément utile, parce que je pouvais l’examiner image par image pour analyser les mouvements des pattes. J’ai fait de nombreux essais de ratios et de formules, mais aucun ne correspondait vraiment au mouvement vu dans le jeu. Puis je me suis rendu compte que je ne pensais pas en 3 dimensions. Le corps du spidertron est suspendu au-dessus du sol et, avec la projection isométrique de Factorio, cela est fait simplement en soustrayant une partie de l’axe z (la hauteur) à l’axe y (sud). En gardant cela dans l’esprit, je suis retourné regarder la vidéo et j’ai remarqué que les genoux étaient à une hauteur (axe z) fixe au-dessus du corps, et qu’ils étaient à peu près à mi-chemin entre le corps et le pied sur les axes x et y. Cette position 3D est ensuite projetée en 2D, ce qui donne une reproduction presque parfaite des proportions du jeu.

Ce point était trois jours, et peu de sommeil, plus tard.

Pour que le spidertron puisse se déplacer par lui-même, j’ai pris du temps pour nettoyer le code spaghetti initial et j’ai commencé par recréer l’animation de base. Celle-ci fut facile à faire ; il suffit d’appliquer une sinusoïde à la hauteur du corps au-dessus du sol. Initialement le corps avait une position et une vitesse indépendantes ; cela fut ensuite remplacé par la moyenne de la position de chaque patte, pour éviter de potentielles désynchronisations entre les pattes et le corps. Il suffisait donc d’animer les 8 points restants et leur faire faire “des pas” vers la cible.

Le véritable spidertron peut avoir jusqu’à trois pattes en l’air à la fois, et utilise une méthode actuellement inconnue pour déterminer l’ordre des étapes. Pour mes premiers tests, j’ai utilisé un ordre de marche fixe, qui a fonctionné, mais qui n’avait pas l’air très bon pour les déplacements dans toutes les directions. Par la suite, je suis passé à un tri des jambes en fonction de la distance de la cible et j’ai alterné entre la jambe la plus proche et la plus éloignée. C’est ce qui a été utilisé dans la première version, mais j’ai fait plusieurs petits ajustements au schéma et au timing depuis pour essayer de reproduire la version en jeu.

Lorsqu’une jambe commence une étape, elle prédit où se trouvera le spidertron à l’étape suivante. Elle fixe ensuite l’objectif pour la jambe, ainsi qu’un peu d’aléatoire pour éviter la répétition. À chaque image, chaque jambe active est déplacée vers sa cible. Mercredi soir, je me rapprochais d’un spidertron baladeur, et j’étais déterminé à avoir quelque chose de prêt pour le numéro de la Lettre d’amour du vendredi.

Le premier spidertron marcheur, les bugs et le reste.

Le jeudi après-midi, spidertron.alt-f4.blog a été créé pour que toute l’équipe technique de Alt-F4 puisse tester le spidertron et aider à trouver et à corriger les bugs. La façon dont la prédiction de mouvement a été calculée par rapport à la fréquence d’images provoquait un délai (très long) pour la téléportation des jambes et des mouvements très erratiques en général. En raison de certains bugs CSS, les segments de jambe avaient également une longueur minimale qui, dans certaines positions, provoquait d’autres mouvements parasites. Après une autre longue nuit de codage, certains des principaux bugs ont été corrigés, et la première version publique a été mise en ligne sur le blog.

D’autres bugs ont été corrigés au cours des semaines suivantes, tels que des erreurs d’arrondi des pixels dans les longueurs des jambes qui provoquaient un sautillement des jambes au repos, et des taux de rafraîchissement différents des écrans qui faisaient varier la vitesse du spidertron, ce qui entraînait une désynchronisation des jambes avec le corps. Le spidertron a également reçu quelques autres mises à jour, comme sa teinte orange, des corrections pour la mise en page destinée aux mobiles, et de nombreuses améliorations de performances. Dans l’ensemble, je suis très satisfait du résultat. Il a même fini par faire 150 Ko de moins que le GIF d’origine, avec tous les sprites, JavaScript et feuilles de style CSS inclus !

Merci à yay, Dr.MagPie, psihius et aux autres techniciens de Alt-F4 de m’avoir aidé à construire et à tester le spidertron. Pour les personnes intéressées, le code source est disponible sur GitHub. J’espère que tout le monde aura autant de plaisir à jouer avec lui que j’en ai eu à le construire. (Les sprites ne sont pas inclus dans le projet car ils sont la propriété exclusive de Wube et sont utilisés avec leur permission.)

Le coin de la complexité : Les modules de productivité TheKool

Bienvenue dans le premier d’une série d’articles sur les éléments du jeu qui semblent intimidants à première vue, mais qui s’avèrent ne pas être si difficiles à utiliser. La série commence par une trilogie sur les modules, en passant un peu de temps à se concentrer sur chacun des trois choix à tour de rôle. Plus tard, la série pourra être complétée par d’autres sujets. Chaque article tentera de répondre à trois questions simples : Qu’est-ce que c’est ?, Quels résultats cela peut-il donner ?, et Où cela doit-il être utilisé ?

Préface : Le biais de complexité dans Factorio

Avant d’entrer dans les détails, je voulais brièvement évoquer les raisons pour lesquelles nous pourrions nous éloigner des aspects complexes du jeu et nous en tenir à ceux qui nous semblent confortables. Si vous vous êtes déjà retrouvé à regarder quelque chose que vous ne connaissez pas et à vous dire : “Ça a l’air compliqué ; je m’en tiendrai à ce que je sais et je le découvrirai plus tard”, alors vous avez fait l’expérience du biais de complexité.

Rivière de sciences de u/Quazarz_

Le biais de complexité est une tendance mentale à considérer les choses comme plus complexes qu’elles ne le sont réellement, surtout lorsque nous ne les comprenons pas entièrement. Lorsqu’il s’agit de projets, cela peut se manifester par de la procrastination, car nous évitons une tâche que nous nous attendons à voir longue et difficile. Lorsqu’il s’agit de Factorio, cela se manifeste généralement par une préférence pour s’en tenir aux mécanismes de jeu confortables que nous connaissons et comprenons afin d’éviter d’apprendre comment fonctionnent les nouveaux mécanismes comme les circuits logiques ou l’énergie nucléaire. Cependant, tout comme cette tâche s’avère souvent beaucoup plus facile que prévu, j’espère vous montrer que les éléments de jeu que vous avez évités sont peut-être plus simples que vous ne le pensiez après tout.

Modules dans des laboratoires
Ou vous pouvez simplement ajouter quelques modules dans votre configuration actuelle...

Que sont les modules de productivité ?

Au cas où vous ne les connaîtriez pas, les modules sont des objets que vous pouvez placer dans les bâtiments pour modifier certaines de leurs caractéristiques de performance, comme la vitesse de fabrication et la consommation d’énergie. Ils peuvent également être placés dans des diffuseurs, transmettant leur effet à tous les bâtiments situés à portée. Cela peut être très puissant, c’est pourquoi les modules sont souvent utilisés dans les grandes constructions pour réduire le nombre de bâtiments nécessaires pour atteindre un certain objectif. Cela signifie souvent qu’ils sont considérés comme un outil de fin de jeu, comme le montre l’article Réflexion sur la mégabase de LoneWolf, par exemple. Ils peuvent cependant être assez puissants beaucoup plus tôt. En effet, ils peuvent être utilisés dès le stade de la science verte, apparaissant immédiatement après les circuits avancés dans l’arbre des technologies.

Or, les modules de productivité sont les modules les plus complexes du point de vue mécanique car ils font quatre choses : augmenter la pollution, augmenter la consommation d’énergie, ralentir la machine et ajouter un bonus de productivité. Aussi complexes qu’elles puissent paraître, la dernière est la seule qui compte vraiment. Le bonus de productivité fonctionne de la même manière que le bonus de productivité minière : si vous avez, par exemple, un bonus de productivité de 10 %, chaque cycle ajoutera 10 % à la barre de productivité, et lorsqu’elle atteint 100 %, vous obtenez un produit gratuit. C’est ça, gratuit. Cela n’a même pas nécessité de ressources, c’est juste apparu de nulle part.

Quels résultats peuvent-ils donner ?

Les modules de productivité, tout en étant mécaniquement les plus complexes, ont donc la réponse la plus directe à la façon dont vous devez les utiliser. En d’autres termes, ils réduisent le nombre de ressources dont vous avez besoin pour votre usine. Si vous voulez obtenir plus de production que ce que vos entrées vous permettent normalement (par exemple lorsque vous êtes en pénurie d’une ou plusieurs ressources), vous utilisez les modules de productivité. Cela signifie que leur utilisation est aussi simple que possible : pour obtenir les meilleurs résultats, mettez-en vraiment partout. Ils sont en fait uniques à cet égard, car ils sont la seule chose dans le jeu, à part la recherche sur la productivité minière, qui donne quelque chose à partir de rien.

La première utilisation sera probablement deux modules de productivité de niveau 1 dans une machine d’assemblage 2, ce qui donne un bonus de productivité de +8% au prix d’une vitesse de -30% et de beaucoup d’énergie et de pollution supplémentaires. L’une des dernières utilisations est celle de quatre modules de productivité de niveau 3 dans une machine d’assemblage 3, ce qui donne une productivité de +40% et une vitesse de -60%, avec une consommation d’énergie et une pollution supplémentaires. À ce stade, j’espère que vous n’êtes plus trop inquiets pour les déchiqueteurs ! Obtenir 40 % de rendement supplémentaire de vos ressources est une chose assez importante, et cet avantage s’accumule tout au long de l’arbre des technologies si vous les utilisez partout où vous le pouvez. Si vous les utilisez à chaque occasion dans votre recette de silo à fusées, vous pouvez en fait réduire les besoins en minerai brut jusqu’à 15 % de la valeur d’origine ! Vous ne me croyez pas ? Regardez par vous-même.

Comparaison de l'effet des modules de productivité du silo à fusées

Comme mentionné, ils réduisent également la vitesse de travail de tout ce dans quoi ils sont placés. Si vous construisez en respectant les ratios dans votre usine, vous devrez tenir compte à la fois de la vitesse de travail ralentie et des rendements bonus dans vos calculs, car ceux-ci feront tourner tous vos ratios en bourrique. Pour résoudre ce problème, je laisse généralement la calculatrice de KirkMcDonald faire le travail à ma place.

Où faut-il les utiliser ?

Vous avez donc décidé d’utiliser des modules de productivité. Où les placer ? La réponse évidente est “partout où vous le pouvez”, mais il y a quelques cas qui méritent une mention spéciale, même si vous ne les utilisez nulle part ailleurs.

  • Silo à fusées : Si vous chargez votre silo avec quatre modules de productivité de niveau 3, vous n’aurez besoin que des matériaux d’environ 70 pièces de fusée pour la fabriquer, et vous ne remarquerez probablement pas du tout l’effet de lenteur.
  • Pétrole : Si vous utilisez une carte qui n’a pas assez de puits de pétrole à portée de main et que vous avez du mal à pomper suffisamment de pétrole brut, pensez à placer des modules de productivité dans vos raffineries et tout ce qui utilise le pétrole et les produits plastiques. Cela peut sembler peu, mais cela peut vous aider à exploiter au maximum cette ressource rare.
  • Laboratoires : Vous pouvez placer des modules de productivité dans les laboratoires ! Des sciences gratuites ! Ils ne produisent même pas de pollution ; vous évitez donc entièrement le pire des inconvénients ! Comment ne pas aimer ?
  • Foreuses minières : C’est le piège ! Ne faites pas ça ! Il ne se multiplie pas avec vos recherches sur la productivité minière, il ne fait que s’y ajouter, et les recherches donnent un bonus beaucoup plus important. Vous avez plutôt intérêt à utiliser des modules de vitesse ou d’efficacité.

Les modules de productivité demandent cependant quelques mises en garde particulières. Plus précisément, ils ne peuvent être utilisés que pour des produits intermédiaires, c’est-à-dire des objets qui sont utilisés dans d’autres recettes et qui ne sont pas posés comme des bâtiments. Deuxièmement, ils ne peuvent pas être placés dans des diffuseurs. S’ils le pouvaient, ils en seraient débordés ! Si vous n’avez pas utilisé de modules de productivité, vous devriez envisager d’en mettre quelques-uns ensemble pour votre silo à fusées ou vos laboratoires et voir la différence qui en résulte.

Merci pour le poisson T-A-R

En guise de soutien à Comfy Factorio, je voudrais vous faire part d’une invitation à un autre événement multijoueur qui aura lieu demain, le 7 novembre, à 19h00 CET. Tout le monde est le bienvenu pour jouer, ou simplement pour venir jeter un coup d’œil et partager vos félicitations.

Le compte à rebours est terminé

Comfy Factorio est une communauté qui met l’accent sur des cartes originales et sur une expérience “chill”. Les scénarios populaires de Comfy Factorio sont les Biter Battles, Mount Fortress, et récemment le Chronotrain de téléportation. Pour célébrer son 3 000ième membre Discord, Comfy s’est associé à Big Community Games, qui a organisé l’événement communautaire mentionné dans le Alt-F4 #7, pour organiser un jeu massivement multijoueur de défense des poissons.

Jetons un coup d’œil à la carte que nous allons jouer ; sans surprise, elle a la forme d’un poisson :

FishIsland

Au centre de la carte se trouve un marché rempli de poissons. Les déchiqueteurs aliens situés dans la queue du poisson ont capté l’odeur de cette délicieuse friandise, ce qui signifie que les poissons doivent être déplacés vers un endroit plus sûr. L’objectif commun est de construire le silo à fusée nécessaire pour accomplir cette tâche. En attendant, les poissons doivent être protégés à tout prix contre les attaques continues et toujours plus nombreuses venant de l’est.

Cette carte permet à certains des participants de défoncer sans relâche les mordants tandis que d’autres peuvent se concentrer sur la construction de la base. Aucun mod n’est nécessaire. Ces deux organisateurs ont montré qu’ils savent comment organiser une fête, alors je dirai : “Amusez-vous bien, et faites-vous plaisir !”

Contribuer

Comme toujours, nous attendons vos contributions pour les Alt-F4, que cela soit par la soumission d’un article ou en aidant pour les traductions. Si vous avez quelque chose d’intéressant en tête que vous souhaitez partager avec la communauté, vous êtes au bon endroit. Si vous n’êtes pas sûr, nous serons heureux de vous aider en discutant structure, contenu et idées. Donc si vous voulez vous impliquer dans les Alt-F4, rejoignez-le Discord pour ne rien rater !