Une vue de trois quarts sur une toile plate

Jusqu'à la version 15.0, le vaisseau dans TUNL était dessiné vu de dessus alors que la grotte autour de lui était une coupe latérale. Corriger cela signifiait un petit modèle 3D, une hitbox que l'image n'avait pas le droit de dépasser, et beaucoup de retenue sur ce qui devait bouger.

Devlog · 20 septembre 2026 · tous les articles

Le décalage

La grotte de TUNL est une coupe latérale. La gravité tire vers le bas, les stalactites pendent du plafond, et l'approche au début de chaque partie est une skyline au crépuscule. Le vaisseau était la seule chose dedans dessinée directement vue de dessus, comme un plan aérien d'un avion volant à travers une image du flanc d'une montagne. Les joueurs ne le formulent généralement pas ainsi, mais cela donne au vaisseau l'air d'être légèrement collé dessus.

La correction évidente, dessiner une simple vue de côté, aurait jeté la silhouette vue de dessus à laquelle on reconnaît le vaisseau, et la forme du vaisseau est à son meilleur vue de dessus. Le compromis est une vue de trois quarts : un modèle 3D de la même coque, sortie de la vue de dessus autour de son axe long et projetée à plat.

Un tout petit moteur de rendu

Il n'y a pas de bibliothèque 3D dans TUNL et pas d'étape de build, donc le moteur de rendu est petit. La coque existait déjà comme un ensemble de facettes plates, éclairées d'en haut, avec la moitié supérieure mélangée vers le blanc et la moitié inférieure vers le presque noir. La version 3D donne à chaque facette une troisième coordonnée, fait tourner le modèle autour de l'axe long, le projette orthographiquement et remplit chaque face dans le même style plat, éclairé d'en haut. Cela représente environ 90 faces visibles remplies par image, contre environ 40 remplissages pour la coque plate. Il n'y a pas de flou, ce qui compte parce que le flou est l'appel coûteux dans la vue web d'un téléphone, et la lueur est un simple remplissage radial. Si un appareil faible peine un jour, la coupe évidente est de mettre en cache la coque par angle de roulis dans une toile hors écran.

La hitbox est le patron

La contrainte la plus importante est que la collision ne change pas. La hitbox du vaisseau est un cercle, et toute la difficulté du jeu a été réglée contre elle. Donc l'image 3D n'a pas le droit de paraître plus grande que le cercle, ni tellement plus petite que le vaisseau « meure » avant que l'aile ne touche visiblement quelque chose.

Cela a transformé l'angle de roulis en une mesure plutôt qu'un choix de goût. Incliné à 45 degrés hors de la vue de dessus, seule l'aile proche se lit, et l'image couvre à peine plus de la moitié à environ quatre cinquièmes de la hauteur du cercle. À 90 degrés, c'est simplement à nouveau l'ancienne vue de dessus. À 60 degrés, les deux ailes se lisent et l'envergure revient à environ 85% du cercle. J'ai construit un petit labo avec cinq vues candidates et une courbe de couverture, et j'ai choisi 60. Un test vérifie maintenant qu'à n'importe quel roulis et n'importe quel dièdre d'aile, la coque dessinée ne dépasse jamais le cercle ni jamais le nez plat, et qu'elle remplit toujours une part saine du cercle en vol.

Ce qui bouge, et ce qui délibérément ne bouge pas

Une fois le vaisseau devenu un objet 3D, la tentation était d'animer tout. La plupart de cela a été coupé. Ce qui a survécu doit porter de l'information :

Ce qui n'a pas survécu, c'est une oscillation libre. Une variante antérieure où le vaisseau « se balançait après » un mouvement paraissait vivante, et c'était du bruit : dans un jeu dont la seule compétence est de lire des distances, une coque qui oscille pour elle-même entre en concurrence avec l'information dont tu as besoin. C'est le même raisonnement qui a fait retirer un fond en parallaxe de silhouettes rocheuses lointaines le jour même où il a été ajouté. Dans un jeu qui consiste à lire où sont les murs, un second ensemble de formes bougeant à une vitesse différente est une distraction, même à faible contraste.

Peinture sur une coque 3D

Les six finitions de peinture du vaisseau ont été conçues pour la coque plate, en coordonnées de plan. Plutôt que de les redessiner, j'ai utilisé un petit bout de géométrie : à un roulis donné, la surface supérieure de la coque se projette exactement sur le plan, écrasée verticalement par le sinus de l'angle de roulis. Donc le peintre existant tourne sous cet écrasement et est découpé sur la silhouette 3D. Les deux choses qui ne peuvent pas s'exprimer ainsi, les coutures de facettes et le contour, sont tracées dans l'espace écran.

Une correction était nécessaire pour la version 3D. La coque plate a sept facettes et la version 3D en a environ quatre-vingt-dix, et dessiner une couture lumineuse sur chacune a transformé la finition STEALTH en lampe. Donc en 3D les coutures tournent à moitié force et sautent les petites faces, et quand la coque est presque de profil au milieu d'un tonneau, le motif est sauté pendant ces quelques images.

Ce qui est resté plat

Seul le vaisseau en vol a reçu la nouvelle vue. Le hangar, la boutique et la carte de partage montrent toujours le vaisseau vu de dessus, parce que ce sont des portraits d'un vaisseau, pas des images d'un vol, et la vue de dessus est celle qui montre tout le plan. L'icône de l'app et les visuels du store sont aussi des portraits vus de dessus, et savoir s'ils devraient un jour suivre la vue en vol reste une question ouverte.

L'image complète de la façon dont le vaisseau est construit et peint est sur la page des vaisseaux, et tu peux le voir voler dans la grotte d'aujourd'hui.

Joue la grotte du jour