Soft Crunch Games : Concevoir Foxy Dumplings pour une uniformité sur toutes les plateformes

  • PublicPublic
  • 16 Oct, 2026
Soft Crunch Games : Concevoir Foxy Dumplings pour une uniformité sur toutes les plateformes

Le studio Soft Crunch Games, composé de quatre personnes, a fait face à un défi majeur : publier Foxy Dumplings simultanément sur Windows, macOS, Linux, Nintendo Switch 2, PlayStation 4 et 5, Xbox Series X|S, iOS et Android. Pour gérer cette complexité, l'équipe a établi une règle architecturale fondamentale : chaque plateforme reçoit exactement le même jeu à partir du même commit. Cette approche a éliminé les branches séparées, les retards des versions mobiles ou les versions à contenu restreint. Le seul programmeur, Grzegorz Wątroba, a conçu le système de manière à ne faire aucun compromis en matière de parité des fonctionnalités, garantissant ainsi que les joueurs sur n'importe quel appareil vivent l'expérience complète de cette simulation de cuisine et de gestion, sans attendre de mises à jour spécifiques à la plateforme ni faire face à des ensembles de contenu incomplets.

La base technique repose sur un projet Unity unique et une seule branche, où la logique de jeu est strictement séparée du code spécifique à la plateforme. Les interactions avec les plateformes sont confinées aux bords du système, gérant des tâches telles que les sauvegardes, les comptes utilisateurs, les succès, la synchronisation cloud et les boîtes de dialogue système. Un motif de façade fournit un point d'entrée unique pour le jeu, tandis qu'une fabrique sélectionne le fournisseur de plateforme correct au démarrage. Par exemple, lorsque le jeu demande le déblocage d'un succès, il ne sait pas si l'appel est routé vers Steam, PlayStation Network ou ignoré entièrement. Cette abstraction permet au cœur du jeu de rester agnostique par rapport au matériel sous-jacent, garantissant que l'ajout d'une nouvelle plateforme ne nécessite pas de réécriture des mécaniques de jeu centrales ou des flux logiques.

La gestion des entrées a été conçue pour être entièrement indépendante pour chaque schéma de contrôle, permettant aux joueurs de terminer le jeu en utilisant uniquement une manette, un écran tactile ou une souris, sans avoir besoin d'un clavier. L'équipe a utilisé le Unity Input System avec un seul ensemble d'actions et trois schémas de contrôle distincts : manette, clavier et souris, et tactile. Le jeu bascule en temps réel entre les schémas en fonction de la dernière entrée utilisée, et l'interface utilisateur s'adapte automatiquement. Un seul Prefab d'invite de bouton est utilisé dans près de 200 endroits, affichant dynamiquement l'icône correcte pour la méthode d'entrée active. Cette conception basée sur les capacités, plutôt que sur la détection de l'appareil, s'est avérée cruciale pour la compatibilité avec des appareils comme le Steam Deck, où un écran tactile peut émuler une souris, et avec le matériel Android plus ancien aux capacités d'entrée variées.

L'optimisation des performances était cruciale pour un jeu 2D utilisant des personnages Spine et des matériaux non éclairés, en particulier sur le matériel de gamme basse. L'équipe a identifié que le rendu des effets dans des textures de rendu 4K n'était pas nécessaire pour les affichages 1080p ou 720p. En ajustant les textures de rendu pour correspondre à la résolution réelle de l'écran et en désactivant les textures HDR et de profondeur inutilisées, ils ont considérablement réduit les taux de remplissage de pixels sur des appareils comme le Steam Deck, faisant passer la mémoire des textures de rendu de 32 Mo à 4 Mo. De plus, les pics de mémoire causés par la localisation ont été traités en régénérant les atlas de polices de secours à partir de pages 4096x4096 vers 2048x2048, réduisant l'utilisation de mémoire pour des langues comme le japonais de 48 Mo à 4-8 Mo par police. Ces optimisations ont assuré des performances fluides sur la large gamme d'appareils pris en charge.

La progression interplateformes est gérée par un système de sauvegarde portable où la progression est stockée sous forme d'un seul fichier binaire chiffré avec un format identique sur toutes les plateformes. Cela permet à une sauvegarde créée sur mobile d'être lue directement sur PC sans conversion. La synchronisation fonctionne sur deux niveaux : la sauvegarde cloud native de la plateforme et Unity Cloud Save, qui gère la progression inter-écosystèmes. La logique de fusion compare les emplacements de sauvegarde par horodatage, les emplacements supprimés étant marqués pour empêcher leur « résurrection » depuis le cloud. Le code de liaison Unity Authentication connecte les comptes de console et de PC, rendant la progression croisée optionnelle tout en gardant le jeu entièrement jouable hors ligne. L'équipe a souligné que bien que le stockage soit simple, la gestion de l'identité est complexe, nécessitant des mécanismes de confiance distincts pour les tickets Steam, les jetons PlayStation et les jetons Xbox.

Le processus de développement a été fortement automatisé afin de gérer la charge de travail d'une petite équipe. Un menu de compilation central, comptant plus de 70 entrées, gère toutes les configurations, y compris les types de build, les démos et les paramètres de sortie, éliminant ainsi le besoin de régler manuellement les Project Settings. Les vérifications de compilation sont exécutées sur environ 40 configurations de plateformes et de boutiques pour détecter les erreurs avant l'étape QA. La gestion de la portée du projet a impliqué le rejet de fonctionnalités qui auraient multiplié le travail par plateforme, telles que les champs de saisie de texte, le multijoueur en ligne et les achats intégrés. L'équipe a également utilisé Unity 6.3 LTS, qui offrait une stabilité améliorée, des correctifs Vulkan pour les anciens appareils Android et des temps de build IL2CPP 10 à 15 % plus rapides. Cette approche structurée a permis à l'équipe de maintenir une haute qualité et une cohérence sur toutes les plateformes, tandis que le QA externe se concentrait sur les couches spécifiques à la plateforme, telles que la certification et le comportement lors de la mise en veille et de la reprise.