Avertissement : Article LONG. Il n’y a aucune date de dispo de l’API et nous n’avons pas vraiment plus de détails que ce que je mets ici. De plus, certaines choses peuvent changer d’ici à ce que ce soit disponible pour de vrai. Oh, et l’API ça ne sera que pour la version PC (c’est à dire Windows, Mac et Gnu/Linux).
Dans les nombreuses conférences de cette minecon 2012, celle qui personnellement m’intéresse le plus, étant donné les choses dingues que les mapsmakers ont pu faire avec le command block et un peu de de redstone (Team Fortress 2, Cube control, Minotaur, Herobrine’s Mansion…)…
En effet, actuellement, l’installation de mods est fastidieuse et les gens qui ne maîtrisent pas complètement l’outil informatique nous bombardent régulièrement de question sur ce sujet. De plus, il faut à chaque mise à jour de Minecraft vérifier si les mods que vous utilisez sont à jour et attendre que l’équipe du mod adaptent ce dernier aux changements de Minecraft.
En effet, comme actuellement les mods écrasent certains fichiers du jeu, et des mises à jour peuvent rétablir les fichiers d’origine et ainsi faire planter le mod qui ne sait plus gérer tel ou tel changement.
Une API, en programmation, est un ensemble d’outils, de fonctions qui permettent d’utiliser/ajouter/modifier/supprimer les fonctionnalités. Ce principe appliqué à Minecraft va donner ce qu’ils sont actuellement en train de coder : une réécriture complète des différentes fonctionnalités du jeu, afin justement de les rendre facilement utilisables/modifiables/désactivables tout en vous permettant de coder vos propres fonctionnalités par dessus.
La conférence « The future of Mod API », présentée par jeb, dinnerbone, evilsteph et Grum, a donc permis d’en savoir plus sur comment ils comptaient intégrer cette future API à Minecraft à savoir cette Plugin API avec donc des plugins !
[youtube id= »1uTl3aWEvEA » width= »600″ height= »350″]1. Mais qu’est-ce que c’est un plugin ?
A l’instar de ce que proposait Bukkit, une fois Minecraft « transformé » pour proposer cette API vers tous les éléments du jeu, vous pourrez développer vos propres plugins, qui seront au final sous forme de fichiers .jar (ou équivalent) dans le dossier du jeu. Ils auront des informations uniques : nom, version, description, etc…
Ces plugins seront chargés à l’ouverture d’un monde, par conséquent vous ne pourrez pas modifier par plugin les fonctionnalités internes déjà chargées : le menu principal, comment la 3D est affichée ou comment sont chargés les sons. Par contre vous pourrez balancer des musiques personnalisées, ajouter des blocs, en enlever, idem pour les mobs, les objets, etc…
Les plugins chargés sur un serveur en multijoueur seront visibles (F3 ou liste des serveurs). Enfin, dans un premier temps, seul l’ajout sera possible.
2. Comment vous récupèrerez les plugins ?
Il y aura deux solutions qui s’offriront à vous.
La première est tout simplement, pour le plugin X, d’aller le chercher sur le site des auteurs, sous format .jar à mettre dans le dossier du jeu.
La seconde est de passer par ce qu’il s’appellera le « Minecraft Repository », un serveur officiel qui centralisera les plugins que les gens y soumettrons. Cela permettra aux équipes de Mojang d’accessoirement vérifier la qualité et l’absence de code malicieux (par exemple éviter des mods qui se contenteraient d’effacer la map où vous les chargez). Dans l’idéal, quand l’API sera lancée, la majorité des plugins seront automatiquement téléchargés en jeu depuis ce « Repository ».
3. Ok, je les ai les plugins. Comment je les active ?
Il y aura un fichier de choix des plugins par monde créé, que ce soit en solo ou en multi. Vous pourrez directement éditer le fichier de paramètres des plugins ou le faire via le jeu dans le menu de création du monde. La mise à jour de plugins ne sera cependant pas automatique sur les ouvertures de monde, car sur les mises à jour de plugins, il peut y avoir des scripts à lancer avant et/ou après l’installation, pour préparer le monde ou mettre à jour certaines données des maps… qu’une mise à jour automatique ne peut pas lancer automatiquement de manière simple. Peut-être un jour, mais ce n’est pas le plus urgent pour Mojang.
Mettre à jour vous-même en jeu, via le menu du Repository, cela vous permettra d’attendre de voir s’il n’y a aucun bug majeur avec la nouvelle version d’un plugin que vous utilisez. Rappelons donc qu’au cas où vous souhaiteriez faire la mise à jour, vous pourrez le faire facilement grâce au Repository accessible en jeu, avant d’ouvrir à nouveau le monde qui utilisait l’ancienne version.
4. Et en multi ?
En multi, sur un serveur dédié par exemple, vous n’avez les menus de Minecraft mais un server.properties spécifiques à chaque monde. Et bien c’est dans ce fichier que vous indiquerez les plugins à charger avec le monde ainsi que leurs réglages.
Les joueurs qui se connecteront devront avoir mis les plugins dans leur répertoire minecraft ou les avoir installés depuis le Repository. S’ils ne les ont pas et que les plugins en question sont tous dans le Repository, le jeu proposera au client de les télécharger automatiquement ! Ce n’est donc pas le serveur où vous connecterez qui vous enverra les plugins mais le Repository officiel. Ceci bien sûr pour des raisons de sécurité !
5. Comment on en développera ?
Ce sera, bien évidemment, en Java. Vous devez charger les API comme une librairie Java à utiliser dans le code correspondant à votre plugin. Grosso modo, ça ne ressemblera à rien des trucs existants (comme Forge ou autres) mais cela sera fait en collaboration avec ces projets, de par leurs nombreux retours utilisateurs. Il y aura aussi un moyen de gérer les dépendances entre plugin, mais ce ne seront que des indications, à priori, donc il reviendra à chaque développeur de causer avec les autres si jamais il y a un vrai besoin de dépendance.
Comme je ne m’adresse pas qu’à des développeurs ici, et que de toute façon le développement côté Mojang n’est pas encore fixé (beaucoup de choses peuvent encore changer), nous n’aurons pas eu plus de détails.
6. Et comment on diffusera notre plugin ?
Ben vous pourrez toujours distribuer le .jar sur votre site, comme vous le faites avec le zip de votre mod actuellement, mais ce serait passer à côté des avantages que représente le Repository.
Tout se passera donc sur dev.minecraft.net où pour l’instant rien n’est encore en place excepté le futur devblog (blog écrit par/pour des développeurs de plugin).
En gros, vous pourrez uploader vos différentes versions et mise à jour de plugin. Attention toutefois, une fois une version X publiée, elle n’est plus supprimable. L’équipe Mojang conseille et a prévu un mécanisme pour que vous puissiez gérer votre propres snapshots et prereleases. Il y a des raisons techniques derrière cette limitation mais je n’entrerai pas dans le détail ici. En quelque chose, passer sur une snapshot pour un plugin sera un choix du joueur comme cela l’est déjà quand on décidait de passer à la snapshot du jeu.
Dernier détail, ce repository aura un système de signalement pour reporter tout plugin très méchant ou plein de « virus » (à la mode minecraft, c’est à dire destruction du monde, etc…).
7. Ok, mais si je veux monétiser mon plugin ?
Les gens ne comprenant pas le mot monétiser ne seront pas intéressés par ce point à priori, encore s’ils ne compte pas faire de plugins. Mais il a été abordé dans la conférence et ça peut intéresser certains d’entre vous, donc allons-y !
La monétisation ne sera pas possible directement dans le jeu ou dans le Repository. Tous les plugins du Repository seront téléchargeables directement et gratuitement.
Cependant, vous pouvez comme actuellement monétiser votre site, vos vidéos youtube et vos liens liés au plugin hébergé en dehors du Repository (soit téléchargement direct du fichier .jar exactement comme les .zip aujourd’hui.
Les règles précises de monétisation seront très très proches de ce qu’elles sont déjà pour le jeu lui même : http://minecraft.net/terms
Si vous publiez un plugin permettant d’avoir des spaghettis, vous n’êtes pas considérés comme propriétaire exclusif de l’idée d’ajouter des spaghettis dans Minecraft. Ceci est un exemple pour vous faire comprendre que ce n’est pas parce que vous publierez en premier un plugin ajoutant une fonctionnalité que personne d’autre ne peut proposer sa version. Mojang n’interviendra pas pour modérer ce genre de choses. De même si Mojang décide d’ajouter les spaghettis dans Minecraft, vous ne pourrez rien leur dire, ils ont le droit d’ajouter des pâtes dans Minecraft, quand même, c’est leur jeu !
8. Et c’est pour quand alors ?
Excellente question sans réponse pour l’instant.
Ils prévoient dans l’ordre de faire une gestion de chargement/déchargement de plugins (plus les menus qui vont avec), puis de développer l’API (fournir des fonctions permettant de récréer l’existant et de « jouer » avec, puis d’en ajouter d’autres) et enfin de transposer tout le minecraft de base sous forme de plugins par défaut.
Je peux vous dire, en tant que développeur moi-même, que cela est facile si c’est inclus dès le départ, mais que c’est un enfer sur un projet ayant déjà bien vécu comme c’est le cas de Minecraft. Laissez-leur donc le temps de faire ça proprement, et vous verrez, ça sera BON.
9. Bon pas d’API pour la 1.5 alors -_-
Peut-être, mais dinnerbone a été assez clair : support de textures de n’importe quelle taille, animés ou non, dans la 1.5 ! Format d’ailleurs modifié, chaque entité à un identifiant unique et la texture pourra s’appeler par exemple wood.png ou lava.gif ou que sais-je encore. Si vous utilisez un texture pack et qu’un plugin ajoute un bloc nouveau, vous aurez une texture par défaut pour tous les nouveaux blocs le temps que votre texture pack ait été modifié par l’auteur.
Et puis, bon, avoir un truc meilleur que bukkit, plus puissant, ça vaut bien qu’on patiente, non ?
Globalement, tout ça, c’es quand même une bonne nouvelle vu qu’on sait que ça avance, non ? :)
Pour te donner un exemple, Twitter a une API. Ca permet par exemple d’afficher les twitts de notre compte Twitter sur le forum.
Ca permet d’avoir des applis Android qui réimplémente tout ce que fait le site officiel dans une appli autre.
Ca permet même de faire des trucs qu’on peut pas faire dans le site web : filtrer sur certains mots ou hashtag…
Bref, pour développer par dessus des bases, l’API c’est le bien. Et Minecraft va en avoir une :D
Cool alors =)
Euh, ben oui, c’est un peu ce qui se dit depuis des mois et je le réexplique même dans l’article :)
Si j’ai bien compris on pourra créer nos propres plugins (mods) c’est ça ?
Vivement l’api!! Ca a l’air génial!
Au pire si tu sais aussi bien codé en java que mojang fais le bouleau a leur place x).
Sa prend énormément de temps a cause de se qui a déjà étai créer, pour évitai un maximum de bug et ect.
Ah, alors c’est un peu des deux, parce que si Mojang change le comportement de tel bidule en redstone, ça va d’un coup affecter tous les mods redstone.
Là, la différence c’est que si les plugins *désactivent* la redstone de base pour la réimplémenter à leur sauce, ça ne devrait pas les impacter.
Jeb a de plus précisé qu’une fois l’API disponible, ils vont éviter autant que possible des changements capables de casser les plugins de la communauté.
Le 28 février d’après EvilSteph comme il l’a dit au début de la conf.
Le truc qu’il faut bien voir c’est qu’implémenter une API dans un truc déjà en production, sans rien casser, c’est l’enfer sur terre. J’insiste, je suis dév, je sais de quoi je cause…
ca va être cool
super ça !
« En effet, comme actuellement les mods écrasent certains fichiers du jeu, et des mises à jour peuvent rétablir les fichiers d’origine et ainsi faire planter le mod qui ne sait plus gérer tel ou tel changement. »
Ce n’est pas ça, c’est simplement que le « cryptage » du jeu change à chaque version. :)
Suis-je le seul à penser que ça n’avance pas ? Parce que la team Bukkit a rejoint Mojang fin février début mars (vérifiable sur le site de Mojang) et tout ce qu’ils ont c’est juste des prévisions. Ok une API ne se développe pas en 1 mois mais à part le fonctionnement du client à la 1.3, ils n’ont rien fait(suffit d’alleurs sur Github pour s’en rendre compte). En gros ils ont juste parlé de qu’ils avaient déjà annoncé lors d’une discution sur IRC en mars, rien de nouveau depuis.
Génial , que de bonnes nouvelles , encore un peu de patience , sa viendras :D