L'univers de Minecraft, déjà riche en possibilités, s'étend exponentiellement grâce au modding avec Forge. La création de contenus personnalisés, allant de nouveaux blocs à des systèmes énergétiques complexes, est au cœur de cette dynamique. Parmi les défis les plus stimulants pour les moddeurs figure l'intégration de fluides novateurs, capables de réagir de manière unique avec l'environnement et les entités. Cet article explore les complexités et les solutions pour développer des liquides qui non seulement enrichissent le gameplay, mais s'intègrent aussi harmonieusement aux mécanismes existants, allant des propriétés physiques aux défis de performance.
I. Les Défis Initiaux de l'Implémentation d'un Fluide Comportemental
La création d'un fluide personnalisé ne se limite pas à définir son apparence. Les véritables enjeux résident dans la manière dont ce liquide interagit avec le monde du jeu et ses habitants.
A. L'Interaction des Entités avec les Fluides
Le problème fondamental qui se pose est le suivant : "comment faire en sorte qu'il se comporte comme de l'eau lorsqu'il interagit avec des entités ?" Cette question ouvre la porte à une multitude de comportements désirables pour un fluide personnalisé. Des progrès significatifs peuvent être réalisés sur ce front, comme l'indiquent certains retours d'expérience : "Mes liquides ont maintenant le repoussement, l'un d'entre eux inflige même des dégâts personnalisés maintenant." Ces résultats, bien que prometteurs, ne sont que le début. Il reste encore à déterminer comment animer les fluides de manière plus dynamique, modifier le mouvement des entités à l'intérieur de ces fluides ou permettre la nage, et surtout, faire en sorte que les nouveaux fluides réagissent à d'autres fluides de la même manière que l'eau et la lave interagissent. Concernant ce dernier point, il est souvent mentionné qu'il est possible de savoir où chercher les informations pertinentes pour ces interactions.
B. L'Expérience Visuelle et Sonore : Au-delà du Bloc
Au-delà des interactions physiques, l'immersion est grandement influencée par l'aspect visuel et auditif du fluide. Un des défis majeurs est de modifier la couleur de l'affichage à l'écran lorsque le joueur est immergé dans le fluide. La question est posée : "comment puis-je changer la couleur de l'affichage lorsque je suis à l'intérieur du nouveau fluide pour le mettre en vert, de la même manière que la lave le rend rouge ou l'eau le rend bleu ?" Trouver le code source de la lave, en particulier, pourrait s'avérer une piste cruciale pour comprendre ces mécanismes.
En outre, la manipulation de fluides par des objets comme les seaux peut entraîner des complications. Une préoccupation légitime est la suivante : "Cela ne causera-t-il pas un conflit lors des événements de remplissage de seaux ?" Il est impératif d'anticiper ces conflits et de les gérer correctement pour assurer une expérience de jeu fluide et sans bug. Il est à noter, par précaution générale dans le modding : "NE PAS ME CONTACTER EN MP POUR DES PROBLÈMES."
Lire aussi: Oasis Écologique dans Votre Jardin
C. Les Pièges Techniques Fréquents
Le développement de mods, en particulier avec Forge, est parsemé de pièges techniques qui peuvent ralentir considérablement la progression. Une erreur courante, par exemple, est une signature de méthode incorrecte, ce qui signifie que la méthode ne sera jamais appelée. Cette situation est une source de frustration majeure : "Cela signifie que vous avez mal défini la 'signature' de votre méthode, donc elle ne sera jamais appelée." Il est important de bien vérifier la correspondance des paramètres et des types de retour.
Un autre écueil est la tentative de redéfinition de méthodes statiques, ce qui est intrinsèquement impossible en Java : "Vous ne pouvez pas surcharger une méthode statique." Ces tentatives se traduiront par des erreurs de compilation ou de comportement inattendu. Par ailleurs, la gestion du courant des fluides est une mécanique plus complexe qu'il n'y paraît. Après un examen plus approfondi, il peut s'avérer que certaines méthodes initialement envisagées n'ont pas d'importance, car, comme cela a été souligné, "le courant est géré ailleurs de toute façon." Comprendre où se situe la logique de base du mouvement des fluides dans le code source de Minecraft ou de Forge est donc essentiel.
II. Les Fondations de la Création de Fluides avec Forge : Principes Généraux
Pour surmonter ces défis et donner vie à un fluide personnalisé, il est nécessaire de suivre une approche structurée, en commençant par la configuration de l'environnement et en progressant vers la définition des propriétés spécifiques du fluide.
A. Préparer son Environnement de Développement Forge
La première étape indispensable pour tout moddeur souhaitant créer du contenu pour Minecraft est la mise en place de l'environnement de développement Forge. Cela commence par le téléchargement de l'installeur de Forge. Une fois téléchargé, il faut lancer Minecraft et sélectionner le profil Forge. Pour les systèmes d'exploitation courants, l'accès aux commandes d'exécution est simple : sur Windows, il suffit d'aller dans le menu Démarrer, puis de se rendre dans "Exécuter", ou d'utiliser le raccourci clavier "Touche Windows + R". Pour les utilisateurs de Linux, le raccourci "ALT + F2" permet d'accéder rapidement à une interface similaire. Une fois l'environnement Forge correctement configuré, la voie est libre pour l'expérimentation et le développement.
B. La Classe Fluid : Étendre pour une Personnalisation Complète
Bien qu'il soit techniquement possible de simplement créer une instance de la classe Fluid de Forge, cette approche est limitée. "Malheureusement, pour une raison quelconque, Forge n'a pas correctement fourni toutes les fonctions de setter et de getter que vous pourriez souhaiter pour personnaliser entièrement votre fluide." Cela inclut des aspects cruciaux comme la couleur, qui est souvent codée en dur pour retourner du blanc, ou les sons. La plupart des moddeurs voudront modifier la couleur, car cela affecte la façon dont le fluide est affiché dans les seaux. Il est important de noter que la couleur du bloc n'est pas définie par cette méthode, mais plutôt par l'asset de texture.
Lire aussi: Guide pour lancer sa société de plongée
Par conséquent, l'approche recommandée consiste à étendre la classe Fluid, à faire de la couleur un champ de cette nouvelle classe, et à fournir des méthodes de setter et de getter personnalisées pour la manipuler. C'est l'étape fondamentale numéro 1 : "Pour une raison quelconque, la classe Fluid fournit certains champs avec des méthodes de setter et de getter, mais pas pour d'autres choses comme la couleur (qui est codée en dur pour retourner du blanc) ou les sons. La plupart des moddeurs voudront changer la couleur, car cela affecte la façon dont elle est affichée dans les seaux. Notez que la couleur du bloc n'est pas définie par cette méthode, mais plutôt définie par l'asset de texture. Vous devriez donc étendre Fluid, faire de la couleur un champ et fournir un setter et un getter pour celle-ci."
C. Définir les Propriétés Physiques et Visuelles du Fluide
Une fois la base de la classe Fluid étendue, l'étape suivante, l'étape numéro 2, consiste à définir les propriétés intrinsèques du fluide. "De plus, vous devriez appeler les différentes méthodes de setter pour définir la viscosité, la luminosité, la densité, la couleur et d'autres propriétés." Ces paramètres sont essentiels pour déterminer le comportement physique du fluide (sa fluidité, sa réaction à la gravité) et ses caractéristiques visuelles (s'il émet de la lumière, par exemple).
Pour l'affichage sur la carte du jeu, une étape cruciale est la création d'une instance de MaterialLiquid. L'étape numéro 3 suggère de le faire "soit dans votre fichier de mod principal, soit dans une classe ModMaterials". Il faut y passer la MapColor souhaitée pour l'affichage du fluide sur les cartes. La classe MapColor propose de nombreuses constantes de couleur prédéfinies, mais il est également possible d'en créer de nouvelles en connaissant la valeur RGB désirée.
L'aspect visuel d'un fluide repose également sur ses textures. Il est un "point clé" que la texture du fluide elle-même est souvent partiellement transparente, comme c'est le cas pour les textures water_still.png et water_flow.png de la vanille. Un autre "point clé" est que les textures de fluide sont généralement animées. Pour créer une texture animée pour un bloc (ce qui est généralement le cas), il suffit de créer une série de textures connectées verticalement et d'y associer un fichier .mcmeta portant le même nom (par exemple, water_still.png.mcmeta). C'est l'étape numéro 5 qui traite de l'animation des fluides.
D. L'Expérience Sonore et la Localisation Multilingue
L'immersion est également renforcée par des effets sonores appropriés. L'étape numéro 7 indique qu'il est possible de modifier les sons de remplissage et de vidange du fluide à l'aide des méthodes setFillSound() et setEmptySound() sur l'instance de votre fluide. Ces ajustements ajoutent une couche de réalisme qui rend le fluide plus tangible.
Lire aussi: Design stratégique et exigences techniques d'étiquettes
Pour garantir une portée maximale à votre mod, la localisation est primordiale. L'étape numéro 6 explique que pour qu'un nom d'affichage (par exemple, dans l'inventaire créatif) s'affiche correctement dans différentes langues, il faut ajouter des entrées dans votre fichier .lang. Ces entrées doivent correspondre aux noms exacts utilisés pour les noms non localisés de votre bloc de fluide et de votre fluide. Il faut noter que "fluid." sera automatiquement ajouté au début du nom non localisé du fluide.
E. L'Indispensable Bloc et Conteneur pour le Fluide
Un fluide, même parfaitement défini, ne peut pas exister seul dans le monde de Minecraft. "En soi, le fluide ci-dessus ne peut pas encore être utilisé." Il est nécessaire de lui associer un bloc et/ou un objet de type réservoir, ou d'activer le UniversalBucket. C'est le bloc de fluide qui interagit directement avec le monde, gère les collisions et l'écoulement. L'objet réservoir ou le seau universel permet aux joueurs d'interagir avec le fluide, de le collecter et de le placer, le rendant ainsi utile et maniable.
III. L'Optimisation et les Bonnes Pratiques dans le Modding de Fluides
Au-delà de la création fonctionnelle, un mod de qualité supérieure intègre des considérations d'optimisation et respecte les bonnes pratiques de développement pour assurer la stabilité et la performance du jeu.
A. La Performance : Un Enjeu Majeur pour les Fluides
La performance est un aspect critique, en particulier pour les blocs massifs comme les fluides. Il est impératif d'abandonner l'idée d'associer une "tile entity" à un bloc massivement présent dans le jeu, car c'est "une TRÈS TRÈS TRÈS mauvaise idée pour les performances." Les "tile entities" sont des composants lourds qui contiennent des logiques complexes et des données persistantes. Robin, un développeur expérimenté, a clairement indiqué que "le tile entity est très lourd." De fait, l'eau elle-même représente un défi pour les performances car "les océans ont beaucoup beaucoup d'eau." Un utilisateur a également affirmé : "isador34, pas possible." L'intégration d'un "tile entity" pour chaque bloc d'un fluide massif entraînerait un lag considérable et rendrait le jeu injouable. Il est donc crucial d'explorer des solutions plus légères pour la gestion des logiques spécifiques aux fluides.
B. Les Ressources et la Communauté de Modding
La communauté de modding est une ressource inestimable, mais il est essentiel de naviguer avec prudence dans les sources d'information. Il est fortement recommandé d'éviter certains types de liens et de sites : "omg, jamais jamais jamais de lien minecraft-mods.
La communication au sein de la communauté doit également privilégier les forums publics ou les plateformes d'aide officielles plutôt que les messages privés, afin de bénéficier d'une expertise plus large et de permettre à d'autres de profiter des solutions. Il arrive que des sujets de discussion soient supprimés, ce qui souligne la nature parfois éphémère de certaines aides en ligne. La persévérance est également de mise, car "lire cet article risque de vous prendre bien du temps", à l'image du processus de développement de mods qui demande patience et investissement.
C. L'Exemple des Fluides Avancés : Le Cas de Thermal Foundation
Pour illustrer le potentiel des fluides personnalisés et la complexité des systèmes qui peuvent les intégrer, l'écosystème des mods Thermal, notamment Thermal Foundation, Expansion et Dynamics, offre un exemple éloquent. "Si vous êtes un adepte des launchers de modpacks tel que FTB et/ou ATL, vous devez sûrement connaître Thermal Foundation, Expansion et Dynamics, des mods très complets ajoutant un contenu centré sur la technologie et l’industrialisation."
Le premier point important à retenir est que "Thermal Foundation est nécessaire pour que les mods Thermal Expansion/Dynamics fonctionnent. C’est le mod 'mère' si j’ose dire. Il rajoute des choses très peu utiles seules, voilà pourquoi je vous présente 3 mods fonctionnant en synergie (l’un requiert l’autre et l’autre fonctionne avec l’un)." Ce mod de base introduit une panoplie de matériaux et de fluides qui servent de fondation à un vaste réseau de machines et de câbles.
1. Les Minerais et Alliages Essentiels
Thermal Foundation enrichit considérablement la génération du monde avec de nouveaux minerais. Au nombre total de sept, on retrouve le Cuivre, l'Étain, le Plomb, l'Argent, le Platine, le Mana infusé et le Nickel. Les traductions de "Mana Infused Ore" et "Ferrous Ore" sont tangentes, mais ces minerais serviront ultérieurement pour toutes les machines, armures et câbles. Le Cuivre, par exemple, peut être transformé en bloc, minerai, poudre, lingot, pépite et engrenage. Bien que "tout le monde ici sait fabriquer un bloc de minerai (comme le bloc de fer ou de redstone)", ces nouveaux matériaux sont fondamentaux. L'Étain, à peine plus rare que le cuivre, est quant à lui moins utilisé. Le Platine est aussi rare que le diamant, mais en moindre quantité (filon de 4 minerais maximum). Le Mana infusé, qui ne se génère pas dans le monde à l'heure actuelle et n'a pas d'utilité immédiate, en aura prochainement une, et "étrangement, celui-là n’est pas bleu."
Thermal Foundation rajoute également plusieurs alliages, qui sont essentiels pour la progression technologique. Il ne faut pas les confondre avec l'acier. L'Invar, par exemple, est utilisé dans la fabrication d'objets de grande précision dans la vie courante. En jeu, c'est un alliage pour fabriquer les machines de niveau intermédiaire. Il se fabrique à partir de "2 poudres de fer et 1 de nickel, poudre que vous ne pouvez obtenir qu’avec le pulvériseur de Thermal Expansion." L'Électrum, bien que son nom ne paraisse pas français, est un alliage souvent utilisé en joaillerie pour sa couleur et sa valeur. Le Bronze sert principalement aux améliorations de machines de Thermal Expansion.
À partir de ce stade, certains alliages deviennent impossibles à fabriquer en survie sans Thermal Expansion, car "ils nécessitent des machines de Thermal Expansion, qui ne sont pas incluse dans Thermal Foundation." Le Signalum est utilisé dans quelques améliorations de Thermal Dynamics et marque un stade plus évolué que l'invar, mais moins que l'électrum, pour les machines de Thermal Expansion. Le Signalum se conçoit avec "3 poudres de cuivre, 1 d’argent et '1 seau de redstone déstabilisée' (cet item est inclus avec Thermal Foundation)." Le Lumium est un des alliages réservés exclusivement aux machines de Thermal Expansion et représente "l’alliage ultime de Thermal Foundation." En somme, "tous ces alliages n’ont usage que dans Thermal Expansion et Dynamics" et "ils sont concevables avec à peu près tout les lingots de Thermal Foundation." Mis à part ces spécificités, tout se fabrique comme du "stuff" en fer, avec quelques subtilités, car Thermal Foundation rajoute un nouveau type d'outils : la faucille.
2. Équipements et Outils issus des Nouveaux Matériaux
Les équipements et outils varient en fonction des matériaux. Le cuivre est l'élément le plus bas de gamme en ce qui concerne les armes, armures et outils dans Thermal Foundation. L'armure "ne procure qu’une protection et une résistance très peu supérieure à celle du cuir. Les outils et armes quant à eux sont deux fois plus résistants que de l’or, mais cela reste faible." Mais ce n'est pas tout, car Thermal Foundation rajoute la canne à pêche, les cisailles et l'arc en cuivre, ce qui est valable pour le reste des matériaux aussi.
L'armure et les outils en étain sont un meilleur compromis que le cuivre, "ne procurant qu’une résistance très peu supérieure à celle du cuivre." L'armure protège un peu moins que le fer et procure un effet particulier : "en échange d’un ralentissement de 15% par pièce d’armure, vous obtiendrez une résistance KnockBack de 0.25 par pièces." L'armure en argent protège "un peu plus que le cuivre". Elle procure le même effet que l'armure en plomb, mais la vitesse n'est réduite que de 8% par pièce pour une résistance au "KnockBack" de 0.2. L'armure protège moins que le fer, et les outils sont 2.5 fois moins résistants. L'armure en invar protège "beaucoup mieux que le fer ou encore l’invar." Ceci conclut sur les armures rajoutées par Thermal Foundation.
3. Une Panoplie de Fluides Spécifiques à Thermal Foundation/Expansion
L'écosystème Thermal est particulièrement riche en fluides spécialisés, chacun ayant des propriétés et des usages uniques. Pour fabriquer le Cryotheum liquide, par exemple, il est nécessaire d'avoir "Thermal Expansion". La "cryotheum dust" se fabrique avec "1 redstone, 1 boule de neige, 1 poudre de blizz et 1 de salpêtre (ou nitrate de potassium/nitre, car le nom anglais est niter)." La poudre de blizz s'obtient en tuant des Blizzs, qui peuvent parfois lâcher un bâton de Blizz à leur mort.
À l'instar du Cryotheum, "le Pyrotheum ça brûle. Mais beaucoup." La poussière nécessaire à sa fabrication est conçue avec "1 redstone, 1 poudre de charbon, 1 soufre et 1 poudre de blaze." Ces fluides extrêmes sont la base de mécanismes de chauffage ou de refroidissement avancés.
L'Energized Glowstone présente des propriétés fascinantes : "En plus de vous faire profiter d’un bonus de vitesse et de saut pendant 5 sec, l’Energized Glowstone est un des seuls liquides dans lesquels vous ne pouvez pas vous noyer." Il possède même une particularité surprenante : "Ah ? Je ne vous avais pas prévenu que le liquide avait une très légère tendance à aller vers le haut ?" Ceci ouvre la voie à des systèmes de transport ou des environnements uniques.
Le Resonant Ender, quant à lui, est lié à la téléportation. Il est fait mention de l'effet "Voici ce que j’ai obtenu après m’être lancé 100x dans le Resonant Ender. Oubliez les lois de la physique." Le Primal Mana est un mélange encore plus complexe : "Le Primal Mana est un mix de tous les liquides vu précédemment, sauf l’Energized Glowstone, avec des particularités. Si la téléportation était immédiate en se jetant dans le Resonant Ender, il faudra attendre quelques secondes dans le Primal Mana." Malheureusement, "ce liquide n’est, malheureusement, pas concevable, avec ou sans Thermal Expansion."
Enfin, le Charbon Liquide est un fluide d'une simplicité trompeuse : "Littéralement du charbon liquide, ce fluide est opaque. Complètement opaque. Et qui plus est, d’un gris clair rappelant la couleur du pétrole. Ce liquide n’a aucune particularité." Sa seule caractéristique notable est son opacité et sa couleur. Ceci conclut la partie sur les fluides de Thermal Foundation.