Mods
Dans VRChat, l'essentiel de ce qu'on appelle « mod » ne vient pas de la communauté mais du SDK officiel : des scripts Unity que tu ajoutes à tes avatars et à tes mondes pour les rendre interactifs. Comprendre ces composants, c'est la clé pour créer du contenu qui fonctionne chez les autres joueurs. Voici comment les classer et les précautions à prendre.
Graphismes et textures
- Correctifs de rendu d'avatar : faces visibles à l'envers, modèle qui paraît transparent de face, points blancs clignotants, cheveux transparents dans Unity alors que tout va bien dans le logiciel de modélisation, ou aspect trop plat avec tous les polygones visibles. À vérifier en priorité : les normales et les matériaux du modèle, car un import mal réglé gâche tout le reste.
- Cartes de relief (bump/normal maps) : un rendu légèrement bizarre sur la peau ou les vêtements vient souvent d'une carte mal configurée. Attention à la façon dont elle est appliquée dans Unity, pas seulement au fichier lui-même.
- Effets de post-traitement : ils passent souvent par une caméra de référence placée dans le descripteur de scène. C'est justement cette combinaison qui fait planter la compilation quand une eau utilisant sa propre caméra de réflexion est aussi présente : supprime l'un ou l'autre.
- Brouillard de scène : un brouillard activé avec une valeur à zéro provoque des soucis d'affichage au chargement d'un monde en casque. Mets une valeur supérieure à zéro ou désactive-le dans l'éclairage de scène.
Gameplay et équilibrage
- Gestionnaires d'événements : le composant central qui déclenche des actions (visibilité d'un mesh, animation, son, particules, activation d'objets). Point critique : les objets passés en paramètre doivent être enfants de l'objet qui porte le script, sinon rien ne se déclenche.
- Déclencheurs par touche, par usage ou par minuterie : ils permettent de lier une action à une touche, à une interaction ou à un délai. Vérifie bien que les événements par zone (par exemple une pièce) se déclenchent réellement dans ton monde, c'est un problème classique.
- Santé, dégâts et armes : des composants dédiés gèrent points de vie, dégâts et statistiques d'arme. Pense réseau : sans synchronisation, les autres joueurs ne verront pas les effets.
- Objets ramassables : pour qu'un objet se prenne en main, il faut un script de prise en main (qui ajoute aussi un corps rigide), une synchronisation réseau et une couche spéciale pour éviter les collisions avec les joueurs. La racine doit avoir un collider, et un collider de type mesh doit être marqué convexe.
Interface
- Panneaux web dans le monde : affichent du contenu web directement en jeu, pratique pour des tableaux d'affichage ou des menus. Attention aux contenus lourds qui pèsent sur les performances.
- Jukebox et diaporamas : diffusent musique ou images dans une scène. Vérifie les droits sur les médias et la charge réseau.
- Messages vers la console : certains événements peuvent envoyer une commande console au joueur qui les déclenche (changement d'avatar, par exemple). À utiliser avec parcimonie, l'effet est immédiat et parfois déroutant.
- Piédestaux d'avatars : permettent de proposer des avatars à essayer dans un monde. Attention à la taille des modèles proposés, un avatar trop lourd fait chuter le framerate de tout le monde.
Contenu ajouté
- Nouveaux mondes et fonctionnalités de scène : modificateurs de joueur, portails, stations assises ou interactives. Les stations ont leurs propres scripts d'entrée et d'API : teste l'entrée et la sortie avant de publier.
- Avatars et blueprints : la création d'un blueprint se fait depuis ton profil en renseignant nom, description, lien d'hébergement de l'avatar, tags et cadrage de l'image. Le nom du blueprint ne change pas l'étiquette affichée au-dessus de l'avatar ; il sert seulement à décrire le modèle. L'image personnalisée (400x300) n'apparaît pas encore dans le client.
- Objets physiques simples et spawn : objets synchronisés et générés en jeu. Surveille leur nombre, trop d'objets synchronisés pénalise la fluidité.
Outils
- Scripting visuel et C# : le scripting visuel sert à rendre les mondes interactifs, et sa variante C# s'adresse à ceux qui veulent coder proprement. Ces outils officiels remplacent la plupart des bricolages.
- Compagnon de création Unity : gère les outils, modèles de projet et mises à jour. C'est le point de départ recommandé pour un projet propre.
- Stockage de données et éléments réseau : pour conserver des informations ou identifier des objets sur le réseau. Attention aux DLL personnalisées : si l'une ne fonctionne pas, c'est une piste à vérifier en premier.
- Débogage par élimination : en cas de plantage à la compilation, désactive la moitié des objets de la scène, compile, et recommence jusqu'à isoler le coupable. Méthode simple et redoutablement efficace.
Installation
- Sauvegarde ton projet avant toute modification : une scène cassée se récupère mal, et les composants de référence statique peuvent s'accumuler à chaque compilation sur les objets de la scène.
- Passe par le gestionnaire d'outils officiel pour installer et mettre à jour les composants Unity plutôt que de copier des fichiers à la main.
- Surveille l'ordre et les dépendances entre scripts : un gestionnaire d'événements sans ses objets enfants, ou une synchronisation absente sur un objet interactif, donne un comportement qui marche pour toi mais pas pour les autres.
- Teste en multijoueur dès que possible : beaucoup de bugs ne se voient qu'à plusieurs (objets non synchronisés, événements non déclenchés, framerate effondré par un avatar trop lourd).
- Attends-toi à des cassures après les mises à jour du jeu ou du SDK : garde une version de ton projet qui fonctionne, et vérifie la compatibilité de tes scripts avant de republier un monde.