Echo Weaver : concevoir un metroidvania avec une boucle temporelle dans Unity 6
Public- 09 Oct, 2026

Echo Weaver, un nouveau metroidvania de Moonlight Kids et Akupara Games, sort sur PC et consoles avec une philosophie de conception unique centrée sur une boucle temporelle. Le studio de trois personnes a initialement conçu le projet pour éviter le notoire système de sauvegarde d'état, qui avait causé des problèmes dans leur titre précédent, The Wild at Heart. La prémisse suggérait que si le temps se réinitialise, aucune sauvegarde n'est nécessaire. Cependant, le monde sans couture et interconnecté du jeu nécessite un chargement et un déchargement constants des chunks de carte, ce qui signifie que le système doit maintenir la persistance pour des événements comme les murs brisés ou les interactions avec les PNJ jusqu'au redémarrage de la boucle. L'équipe a finalement implémenté un système de sauvegarde complet, mais a découvert que la mécanique de la boucle temporelle atténue la frustration liée à la perte de données, car les joueurs peuvent toujours réinitialiser le cycle si une erreur se produit.
Le jeu ne comporte pas de verrous de capacités ; le monde est entièrement ouvert dès le début, en s'appuyant sur les connaissances du joueur pour la progression. Cette approche de « détective de parkour spatial » signifie que les joueurs peuvent tomber sur n'importe quelle capacité à tout moment, créant un défi complexe pour la conception des niveaux. Pour gérer cela, l'équipe a établi une règle narrative : le protagoniste, le Tisserand, conserve ses souvenirs entre les boucles. Cela permet au jeu de suivre les connaissances débloquées sans briser l'immersion. Un compromis de conception clé a été fait lors des tests de jeu : bien que les zones cachées étaient initialement révélées uniquement temporairement, l'équipe a estompé en permanence les éléments graphiques au premier plan dans les endroits fréquemment revisités pour aider les joueurs à se souvenir des raccourcis découverts, car l'outil standard des metroidvania, les murs à sens unique, est inefficace dans un monde qui se réinitialise.
Pour les raccourcis plus importants, qui ne peuvent pas être résolus dans le cadre d'une seule boucle, l'équipe s'appuie sur le masquage visuel : les passages sont cachés derrière l'art du premier plan à une extrémité et placés au premier plan à l'autre. L'horloge du jeu est un système central, visible en permanence, et commence avec une minute par boucle. Les joueurs collectent des cristaux de temps pour prolonger cette durée ou les sacrifient pour se soigner. Les versions précoces utilisaient un minuteur à la seconde, mais les testeurs rapportaient un niveau de stress élevé. L'interface utilisateur finale affiche des segments d'une minute appelés « cloches », ce qui s'aligne sur les mécaniques de minutage du jeu et permet aux joueurs de créer des « séquences de démarrage » optimisées pour accumuler du temps rapidement.
L'architecture technique, dirigée par le programmeur Ankit Trivedi, divise le monde du jeu en chunks avec un processus de construction personnalisé qui supprime le contenu coûteux. Une couche lourde et immuable de la géométrie du monde est cuite dans les scènes et reste chargée en permanence, tandis qu'une scène légère « essentielle » contient l'état volatile, tel que le gestionnaire de jeu et les données du joueur. Lors d'un réinitialisation de la boucle, le jeu décharge les chunks actifs, abandonne la scène « essentielle » et la recharge, en streaming à nouveau uniquement les chunks nécessaires pour la séquence d'ouverture. L'état spécifique à l'exécution est stocké dans un dictionnaire de clés de chaînes en mémoire, qui est effacé lors de la réinitialisation, tandis que les données persistantes, telles que le nombre de boucles et les capacités vues, sont sérialisées sur le disque. Cette approche « jeter et refaire » assure une gestion propre de l'état sans impact significatif sur les performances.
L'optimisation des performances était critique en raison du style d'art dessiné à la main dense. L'équipe a découvert que l'activation de la compression sur les atlas de textures réduisait l'utilisation de la mémoire à environ 1 Go. Pour gérer le chargement, les actifs décoratifs sont supprimés des chunks lors de la construction et réinstanciés asynchronement en petits lots pour éviter les blocages du thread principal. Un outil personnalisé aplatit les groupes de sprites en images uniques pour réduire le nombre d'appels de dessin, en particulier pour les arrière-plans complexes comme les ciels. L'éclairage a également été optimisé en consolidant six couches de lumière distinctes en trois, réduisant considérablement les coûts de rendu tout en maintenant la qualité visuelle. Les effets d'eau, utilisant le Game2D Water Kit, ont été ajustés pour le matériel de faible puissance en séparant les effets de perspective de la réfraction pour éviter les re-rendus coûteux de la caméra.
Le développement est passé de Unity 2021 à Unity 6, l'équipe soulignant des fonctionnalités spécifiques qui ont amélioré leur flux de travail. Chris Sumsky a noté que les préfabriqués imbriqués et le mode d'édition ont été déterminants pour la gestion des scènes complexes. Ankit Trivedi a souligné l'utilité du Composite Collider 2D et du pool d'objets natif de Unity, ce qui a permis à l'équipe de se passer du pool d'objets personnalisé écrit pour leur jeu précédent. L'utilisation du Frame Debugger de Unity a été centrale pour identifier les ruptures de batch, permettant à l'équipe d'unifier les matériaux et de convertir les sprites pour maximiser les performances. L'équipe conseille aux autres développeurs d'utiliser le Frame Debugger généreusement dès le début d'un projet pour identifier et corriger les inefficacités de rendu tôt.