# 15. Modules optionnels livrés à part (V1.4) Demande utilisateur (2026-10-02) : ne garder dans la build Shipping que l'essentiel, et proposer les mods optionnels dans une archive séparée. ## 1. Répartition | Dans la build Shipping | Dans `LifePlay_Revival_V1.4_Optional_Modules.zip` | |---|---| | `vin_Base` (jeu de base, ne peut pas être désactivé) | `vin_VanillaPorn`, `vin_Pregnancy`, `vin_Interracial`, `vin_OldYoung`, `vin_Polyamorous` | | `lp_Revival` (coiffures Pocolov) | `vin_NTR` (désactivé par défaut), `vin_Netori`, `vin_BDSM`, `vin_Tentacles`, `vin_Watersports` | | `vin_VanillaRealistic` (situations adultes « vanilla », simple interrupteur) | non officiels : `vin_Corruption`, `vin_NonConsensual`, `vin_Incest`, `vin_Bestiality` | Liste versionnée : `Tools/modules/V1.4.json` (`essential`). Les fichiers de `Content/Modules` hors modules (`Clothes4.txt`, `outfits_*.txt`, `names_*.txt`, `MorphTags`…) restent dans la build. Le dépôt et l'archive des sources gardent tous les modules. ## 2. Pourquoi le jeu le supporte - Les Blueprints ne lisent aucun fichier des modules optionnels ; ils testent seulement leur activation par identifiant (`GI.IsModEnabled('vin_Pregnancy')`, `vin_Polyamorous`, `vin_NTR`, `vin_Interracial`, `vin_OldYoung`, `vin_Watersports`). - `GI.IsModEnabled` lit `GI.ModEnableds` et répond faux pour un module absent de la liste. - Au démarrage, `GI.removeDeletedMods` relève les `Modules/*.lpmod` présents et retire de `GI.ModEnableds` les modules absents (la liste par défaut du Blueprint déclare `vin_Pregnancy`, `vin_VanillaPorn` actifs : ils en sont retirés si leur dossier manque). - Seuls chemins de modules écrits en dur dans les Blueprints : `Modules/vin_Base/Bedrooms` (`Room`) et `Modules/vin_Base/Presets/real_faces` (`MainMenu`), dans `vin_Base`, qui reste. - Couche de données (`LPDataCache`) : un module ajouté plus tard est lu sur le disque puis mis en cache (date et taille). ## 3. Outil ```powershell .\Tools\SplitModules.ps1 -Build D:\Game\LifePlay_Build_5.5_Shipping_V1.4 -Config Tools\modules\V1.4.json -Out D:\Game\LifePlay_Publication ``` Il vérifie la présence des modules essentiels, déplace les autres vers `_modules_optionnels\LifePlay\Content\Modules` (rien n'est supprimé), ajoute une notice `LISEZMOI_README.txt` (installation : extraire dans le dossier du jeu, celui de `LifePlay.exe`), crée l'archive, la teste (7-Zip) et compare son contenu aux fichiers déplacés. ## 4. Installation par le joueur Extraire l'archive dans le dossier du jeu en fusionnant le dossier `LifePlay` ; les modules apparaissent dans le gestionnaire de mods, où ils s'activent ou se désactivent. Pour en retirer un : supprimer son dossier. ## 5. À partir de la publication suivant la V1.4 : une archive par mod (décision du 2026-10-03) - Le build Shipping ne garde que les modules de base, en texte : `vin_Base`, `vin_VanillaRealistic` (`Tools/modules/next.json`, `"per_module": true`). - Chaque autre module est livré dans **son propre zip** : `-for-LifePlay-.zip` (`LifePlay/Content/Modules/` + `README.txt` bilingue tiré du `.lpmod` : nom, description, prérequis, installation, désinstallation). Chaque mod d'assets (`Tools/BuildMod.ps1`, ex. `lpr_hair_pocolov`) a déjà son zip, déposé dans le même dossier (`-Out \Modules_`). - `INDEX.txt` (nom, archive, taille, SHA-256) sert au message de diffusion. - **Diffusion des modules : Discord** dans un premier temps (pas d'annonce sur GitHub, comme pour le jeu). - Garde-fou : `SplitModules.ps1` refuse un build contenant un mod d'assets installé (`LifePlay/Mods/`), dont la partie texte serait livrée sans ses paquets ; utiliser un build neuf. Essai sur une copie des modules du build H3d : 15 archives, 640 fichiers déplacés = 640 archivés, aucun reste ; refus vérifié avec un mod d'assets installé (copies d'essai dans `LifePlay_Backup_5.5\PUB_next`). - **Rectification du 2026-10-03** : les modules `vin_*` optionnels (jeu d'origine de Vinfamy) forment **un seul zip**, le paquet de base du jeu (`vin_Modules-for-LifePlay-.zip`, 14 modules, notice listant chaque module et ses prérequis) ; `vin_Base` et `vin_VanillaRealistic` restent dans le build. Les autres mods (ex. `lpr_hair_pocolov`) ont chacun leur zip. Configuration : `"groups"` dans `Tools/modules/next.json` (`name`, `pattern`, `title`, `description`) ; un module non couvert par un groupe a son propre zip. V1.5 : `vin_Modules` (875 911 octets, 626 fichiers) et `lpr_hair_pocolov-1.0` ; le premier découpage (un zip par module `vin_*`) est rangé dans `LifePlay_Backup_5.5\PUB_V15\decoupage_un_zip_par_module`.