Interface utilisateur bilingue complète + panneaux d'outils de développement complets
Cette journée a permis une internationalisation approfondie : toute l'interface du studio devient bilingue, commutable en un clic, synchronisée en direct sur Windows, avec l'éditeur également entièrement bilingue ; les panneaux Console / Réseau / log devtools sont passés de coques vides à de vraies fonctionnalités ; L'empilement de l'interface utilisateur, le contraste des formes et les titres d'accessibilité ont été corrigés ; le bug d'ombre directionnelle du moteur sur plusieurs jours a finalement été corrigé ; la logique du jeu a gagné en planification déclarative du système ; et les ressources du moteur ont bénéficié d'un cycle de vie discipliné et d'une isolation des pannes.
Face au monde et face au débogage
Cette journée s'est déroulée dans deux directions. Une première : bilingue entièrement l’ensemble de l’interface afin qu’elle ne serve plus uniquement aux utilisateurs chinois mais puisse s’adresser au monde entier – une étape nécessaire pour qu’un produit atteigne un public plus large. L'autre aspect intérieur : compléter les outils de développement afin que les créateurs déboguant leurs propres jeux puissent voir clairement les sorties de la console, les requêtes réseau et les journaux d'exécution - la confiance de pouvoir "voir ce que vous faites". L’extérieur et l’intérieur semblent sans rapport, mais le noyau est le même : tous deux suppriment la barrière du « je ne peux pas voir / je ne peux pas comprendre ». Une barrière linguistique fait de l’interface un mur ; aucun moyen de déboguer ne fait d'un problème un brouillard. Cette journée a fait tomber les deux types de barrières à la fois. Pendant ce temps, le moteur a résolu le problème d'ombre sur plusieurs jours à la racine, a ajouté une manière plus ordonnée de planifier la logique du jeu et a défini des règles plus strictes pour sa propre gestion des ressources. Plus accessible vers l'extérieur, plus transparent vers l'intérieur, plus solide en dessous, telles sont les trois facettes de la journée.
Basculez toute l'interface entre l'anglais et le chinois en un clic
Cette journée a fait une internationalisation approfondie et avec soin. La première étape était un noyau multilingue léger : l'anglais comme source de base (toutes les copies faisant autorité en anglais), le chinois comme superposition (remplaçant l'anglais là où il est présent), commutable à tout moment. La deuxième étape a migré toute l'interface vers ce système fichier par fichier, par lots : barre supérieure, tableau de bord, panneau de discussion, tiroir de paramètres, barre latérale, les différents commutateurs, des dizaines de panneaux et de composants, aucun n'a été laissé de côté. Pourquoi "fichier par fichier" plutôt que d'un seul coup ? Parce que la copie codée en dur est dispersée sur des centaines ou des milliers d'endroits dans l'interface, et qu'en parcourant chacun d'entre eux, rien ne manque. Après la migration, l'interface par défaut est l'anglais, suit automatiquement la langue du système et a obtenu un détail bien pensé : synchronisation multi-fenêtres en direct : passez la langue au chinois dans une fenêtre et une autre fenêtre ouverte suit immédiatement, sans changer d'une à l'autre. L'éditeur a également effectué une bilinguisation complète et a réussi la vérification d'exécution. Pour une plate-forme qui souhaite être utilisée par les créateurs du monde entier, le mur des langues doit d’abord être abattu – et ce jour-là, il l’a complètement détruit.
Panneaux Devtools terminés : Console + Réseau + journaux sur disque
La zone des outils de développement comportait auparavant des panneaux qui étaient soit des espaces réservés vides, soit des espaces réservés non cliquables ; cette journée les a transformés en fonctionnalités réelles à la fois. Le panneau de la console a connecté tous les flux de sortie du jeu et de l'éditeur : chaque journal imprimé par votre jeu et chaque erreur qu'il génère circule désormais ici en temps réel. Le panneau Réseau est passé d'un espace réservé mort à un objet réel, capturant les différentes requêtes réseau émises par votre jeu testé : requêtes régulières, requêtes asynchrones et connexions de longue durée, toutes visibles. De plus, la console, le réseau et les flux d'informations ne sont pas simplement affichés dans un panneau, mais mis en miroir dans les fichiers journaux locaux pour un examen ultérieur — vous n'avez pas besoin de détecter un problème en direct ; vous pouvez le rejouer à partir des journaux par la suite. Un onglet redondant avec la vue de surveillance a été supprimé pour éviter la confusion liée à l'affichage de la même chose à deux endroits. L'importance : le débogage est une partie inévitable de la création, et la condition préalable au débogage est de « pouvoir voir ». Lorsqu'un jeu se comporte mal, le fait de voir toutes les erreurs de la console et le trafic réseau directement dans un panneau transforme le débogage de « deviner au toucher » en « vérifier par rapport aux preuves ».
Finition de l'interface utilisateur : empilement, contraste, accessibilité
Profitant de ce grand changement, plusieurs problèmes d’interface utilisateur de longue date ont été résolus ensemble. L'un est l'ordre d'empilement : auparavant, certaines boîtes de dialogue, listes déroulantes et le sélecteur de langue couvraient à tort la barre supérieure ou se cachaient sous une boîte de dialogue, et aujourd'hui, leur superposition était clairement réorganisée, de sorte que ce qui devrait être en haut reste fermement au-dessus. Le deuxième est le contraste du contrôle de forme : certaines zones de saisie et boutons natifs affichaient auparavant le texte noir par défaut du navigateur car les styles n'étaient pas câblés, presque illisibles sur un fond sombre ; cette journée leur a donné des couleurs de thème lisibles. Troisièmement, l'accessibilité : les boîtes de dialogue rapides obtiennent les titres requis par la norme, éliminant ainsi les erreurs d'accessibilité et permettant aux personnes utilisant des lecteurs assistés de comprendre correctement le contenu des boîtes de dialogue. Chacun d’entre eux est petit, suffisamment petit pour que la plupart des gens ne le remarquent pas spécifiquement ; mais ensemble, ils décident d'une chose : si l'interface semble "normale" partout. Une interface avec des petites gênes partout épuise continuellement et subtilement la patience de l'utilisateur ; les lisser un par un donne le sentiment solide que « tout semble bon à utiliser ».
Ombres directionnelles corrigées + planification du système déclaratif
Le moteur a corrigé, à la racine, un problème qui persistait depuis plusieurs jours : les ombres lumineuses directionnelles. Lors de la création d'exemples de jeux au cours des jours précédents, il n'y avait eu d'autre choix que de "changer le nombre de cascades d'ombres de 4 à 1" pour obtenir des ombres projetées de manière fiable - cela n'avait fait qu'éviter le symptôme, avec la vraie maladie dans le moteur. Cette journée l’a complètement guéri : les causes profondes de l’échec des ombres en cascade dans certaines configurations et du désalignement à un seul niveau ont été éliminées ensemble. Avec la stabilité en amont, les ombres directionnelles de chaque jeu en aval fonctionnent correctement, plus de solution de contournement basée uniquement sur les symptômes. Le même jour, la logique du jeu a acquis une capacité précieuse : la planification déclarative du système. Un jeu est composé de nombreux « systèmes » (modules logiques s'occupant chacun d'un domaine, comme le mouvement, la collision, l'IA), dont le timing et l'ordre d'exécution étaient auparavant organisés à la main ; ils peuvent désormais être planifiés de manière déclarative par condition, par étiquette, par état actuel : "exécuter cet ensemble de systèmes uniquement en état de combat", "planifier ces systèmes ensemble sous une seule étiquette". Cela rend la logique de comportement de jeu complexe plus ordonnée à écrire et moins sujette au chaos. En dessous, une isolation des pannes (transformant un crash de bas niveau en une erreur récupérable avec une nouvelle tentative automatique) et une visionneuse d'image de rendu hors ligne ont été ajoutées pour un débogage graphique plus fluide.
Le moteur discipline les ressources : récupérez une fois terminé, ne plante pas en cas de panne
Le moteur a également consacré aujourd'hui un réel travail à la « gestion des ressources », exactement là où un programme de longue durée est le plus sujet aux problèmes. Une partie est le cycle de vie du GPU et des ressources audio : chaque morceau de mémoire vidéo et chaque canal audio, lorsqu'il n'est plus référencé par quoi que ce soit, peut être identifié avec précision et récupéré dans le temps plutôt que de s'accumuler silencieusement - cette journée a spécifiquement construit un mécanisme de « libération des ressources qui ne sont plus référencées » et a vérifié avec un test de résistance de longue durée qu'il se maintient effectivement à un niveau d'utilisation stable et limité au lieu de gonfler. L'autre partie est l'isolation des pannes : lorsqu'une erreur grave de bas niveau se produit, le moteur peut la transformer en une erreur correctement gérable plutôt que de planter en bloc, en réessayant si nécessaire. Les deux sont des travaux sous le capot que les utilisateurs ne voient pas encore qui décident directement « s'ils peuvent fonctionner de manière stable pendant une longue période ». Un jeu peut durer plusieurs heures d’affilée, créant et détruisant constamment des ressources ; ce n'est qu'en rendant solide "retour une fois terminé, résistance en cas de rupture" qu'un jeu long évite de prendre du retard ou de s'écraser inexplicablement.
Ce que signifie cette journée
Le mot clé de la journée est « éliminer les barrières ». La bilinguisation efface la barrière linguistique, donnant à la plateforme, pour la première fois, les conditions de base pour s'adresser à un public mondial : la portée d'un outil dépend d'abord du nombre de personnes capables de le comprendre et de l'utiliser. Compléter les outils de développement efface la barrière du débogage, permettant aux créateurs de voir la vérité lorsque des problèmes surviennent plutôt que de s'inquiéter d'une boîte noire. La correction des ombres du moteur efface la barrière entre le « traitement des symptômes » et le « traitement de la racine », résolvant à la source une maladie récurrente qui ne pouvait qu'être contournée. Et la planification déclarative et la gestion des ressources éliminent la barrière des possibilités pour des jeux plus complexes et de plus longue durée. Supprimer ces barrières une à une rend la plateforme à la fois plus accessible, plus transparente et plus fiable. Un outil qui veut véritablement être largement utilisé et fiable à long terme fait souvent exactement cette chose simple : trouver continuellement les barrières, puis les éliminer sérieusement.