Modpack installateur v3
-
Contexte du projet :
@robin4002 a dit dans Minecraft Forge France a besoin de vos talents pour ses projets ! :
L’installateur v3
Vous connaissez surement déjà l’installateur v2 ce petit programme couplé a un updateur permettant de créer des modpack se mettant à jour sans avoir de launcher.
Si la version actuelle réalise bien son travail, il lui reste quelques défauts :
- une personnalisation trop limitée (on peut simplement changer l’image)
- par rapport à un launcher, le manque d’un portail captivant l’utilisateur
- l’obligation d’avoir Java d’installé (depuis un bon moment, le launcher de Mojang embarque une JVM, de plus en plus de Minecraft n’ont donc plus Java sur le système, devoir installer Java juste pour installer un modpack est embêtant)
- une configuration complexe qui est source d’un trop gros nombres d’erreurs.
- et surtout l’impossibilité de lancer Forge 1.13 car la procédure de lancement de forge a changé …
Pour ce projet on part donc de 0, rien n’existe actuellement (hormis la version 2, mais peu de chose peuvent être gardé, hormis le concept).
Le but est de créer une v3 de l’installateur, répondant aux critères suivants :
- développé dans un langage natif ou avec peu de dépendance, afin d’avoir un exécutable standalone (qui peut se lancer seul, sans autre fichier).
- compatible avec le nouveau système de lancement de forge
- hautement personnalisable (si possible, interface en langage web)
- lors du lancement du jeu, l’installateur apparaitrait à la place du jeu, afin d’afficher au joueur des informations sur le serveur, des stats son perso, etc. Le but étant d’avoir un portail captivant l’utilisateur, comme on aurait avec un launcher. Une fois le jeu prêt, en fonction de la configuration soit il réapparait en premier plan (et la page de l’installateur disparait) soit l’installateur reste avec un bouton jouer / rejoindre, qui lors du clic fait apparaitre Minecraft en premier plan avec directement la connexion au serveur.
- compatible Windows, MacOS et Linux.
- dispose d’une option pour installer facilement Optifine (l’auteur d’Optifine interdit sa redistribution, cependant ce mod étant incontournable, il serait bien d’avoir une option pour que l’utilisateur puisse l’installer facilement dans le modpack).
Mes recherches me font pencher pour l’instant sur une solution construite autour de web-view qui permet de faire une application en Rust avec un front en HTML / CSS / JS. Cependant ce choix n’a rien de définitif et toutes propositions est bienvenues.
Cet installateur v3 sera accompagné d’un second projet annexe, un site web permettant de créer son propre installateur en quelques clics. Le but étant bien évidement de rendre la configuration plus simple pour les utilisateurs, de tel sorte qu’ils n’aient pas besoin de toucher à des fichiers json.
Lien du projet : https://github.com/orgs/MinecraftForgeFrance/projects/1
Le projet est organisé en plusieurs briques, afin qu’elles puissent être ré-utiliser ailleurs :
Comme on peut le voir sur le schéma, la partie installation de forge et installation + maj de mods vont être des bibliothèques à part, qui pourraient très bien être utilisé pour un launcher (il faudra y ajouter de quoi s’identifier, télécharger mc et lancer le jeu).
Quelques changements par rapport à ce qui était prévu initialement, l’installateur sera finalement en Java pour des questions de simplicité de modification des ressources. Faire l’installateur en Rust ou autre langage natif aurait nécessité pour l’utilisateur (le configure son installateur) de re-compiler à chaque fois ce dernier, ce qui complique les choses (surtout qu’il faut le faire pour chaque OS).
L’utilisateur final (celui qui utilise l’installateur) aura donc toujours besoin de Java sur son ordinateur.
Je vais donc cibler Java 8 comme ça reste le plus répandu actuellement. Par la suite je verai pour réécrire des briques en langage natif, voir la totalité de l’installateur.Pour la partie backend (qui sur la v2 de l’installateur était un simple fichier json pour la config de l’installateur et un fichier PHP pour générer la liste des mods) on va partir sur un logiciel plus complexe, mais toujours en php (et qui restera très minimaliste).
Le but étant d’avoir toujours quelque chose qui s’installe sur n’importe quel hébergeur web mutualisé ou sur un simple Apache / Nginx avec PHP , ce qui est très commun.
Plus de fichier .json à éditer pour configurer l’installateur, le backend le fera de lui-même et tout passera par une UI qui sera développé avec Angular et Clarity design.Vu la demande pour la protection de mods / anti-triche on va aussi essayer de proposer un module de protection, j’ai déjà en tête des pistes pour forcer l’utilisateur à passer par l’installateur pour lancer le jeu et empêcher d’ajouter d’autres mods qui ceux autorisés. Et ça sera bien plus efficace que ce qu’on voit sur certains serveurs, mais pas non plus incontournable (rien n’est incontournable à ce niveau malheureusement).
Peut-être aussi un module pour limiter l’accès au .jar d’un mod. À voir.Je n’ai pas vraiment de planing pour le projet, je vais avancer progressivement sur chaque brique, en commençant par celle permettant d’installer forge.
GoudronViande24 m’aidera sur la partie backend php, ça tombe bien puisque le php n’est pas trop mon truc.
Si d’autres personnes ont envie d’aider, faites-moi signe
Pareil si quelqu’un a enviie de se lancer sur un launcher utilisant des parties de l’installateur, n’hésitez pas à entrer en contact avec moi, je suis curieux de voir ce que ça peut donner + ça m’aidera à concevoir la lib d’install de forge et de mod de façon plus universel.