From b6e587164d0ca80f8dc79784659ebd57b06ab9e0 Mon Sep 17 00:00:00 2001 From: edujiro5972 <336072401+edujiro5972@users.noreply.github.com> Date: Fri, 2 Oct 2026 01:47:45 +0200 Subject: [PATCH] O1 : build allege (plugins moteur limites a l'editeur, contenu non cuit, sans symboles) ; lien Mega V1.1 Co-Authored-By: Claude Opus 5.5 --- Config/DefaultGame.ini | 17 ++ Docs/Migration/11_Audit_Optimisation.md | 25 ++- Docs/Migration/Journal_Modifications.md | 1 + LifePlay.uproject | 238 +++++++++++++++++++----- README.md | 11 +- Tools/AuditScriptDeps.py | 35 ++++ 6 files changed, 272 insertions(+), 55 deletions(-) create mode 100644 Tools/AuditScriptDeps.py diff --git a/Config/DefaultGame.ini b/Config/DefaultGame.ini index 1e9e639..091513f 100644 --- a/Config/DefaultGame.ini +++ b/Config/DefaultGame.ini @@ -45,6 +45,23 @@ bSkipMovies=False ; Tout /Game doit donc etre cuit, quelle que soit la methode d'empaquetage (ERR-026). +DirectoriesToAlwaysCook=(Path="/Game") +DirectoriesToNeverCook=(Path="/Game/Heavy/New/fBlah") +; Lot O1 : contenu des plugins limites a l'editeur (LifePlay.uproject, TargetAllowList Editor) : jamais cuit. ++DirectoriesToNeverCook=(Path="/Interchange") ++DirectoriesToNeverCook=(Path="/InterchangeAssets") ++DirectoriesToNeverCook=(Path="/NNEDenoiser") ++DirectoriesToNeverCook=(Path="/NNERuntimeORT") ++DirectoriesToNeverCook=(Path="/HairStrands") ++DirectoriesToNeverCook=(Path="/SpeedTreeImporter") ++DirectoriesToNeverCook=(Path="/Paper2D") ++DirectoriesToNeverCook=(Path="/MovieRenderPipeline") ++DirectoriesToNeverCook=(Path="/USDCore") ++DirectoriesToNeverCook=(Path="/Bridge") ++DirectoriesToNeverCook=(Path="/Fab") ++DirectoriesToNeverCook=(Path="/LiveLink") ++DirectoriesToNeverCook=(Path="/MetaHumanSDK") ++DirectoriesToNeverCook=(Path="/Takes") ++DirectoriesToNeverCook=(Path="/PythonScriptPlugin") ++DirectoriesToNeverCook=(Path="/ChaosVD") +DirectoriesToAlwaysStageAsNonUFS=(Path="Modules") [/Script/McpAutomationBridge.McpAutomationBridgeSettings] diff --git a/Docs/Migration/11_Audit_Optimisation.md b/Docs/Migration/11_Audit_Optimisation.md index fcdc4ea..77238b2 100644 --- a/Docs/Migration/11_Audit_Optimisation.md +++ b/Docs/Migration/11_Audit_Optimisation.md @@ -238,4 +238,27 @@ La bibliothèque compte environ 3 000 produits, dont 302 outils et plugins. Prod | AssetDump: Agents-readable assets | fallingsappy | export lisible des assets pour un agent : pourrait compléter `AuditAssets.py` | Rien n'a été acheté, réclamé ni téléchargé. Chaque outil retenu sera évalué dans une copie du projet, -dans un lot dédié, avec l'accord de l'utilisateur. \ No newline at end of file +dans un lot dédié, avec l'accord de l'utilisateur. + +## 11. Lot O1 : build allégé (2026-10-02) + +| Modification | Fichier | +|---|---| +| 20 plugins moteur limités à l'éditeur (`"TargetAllowList": ["Editor"]`) : `NNEDenoiser`, `NNERuntimeORT`, `Interchange`, `InterchangeAssets`, `InterchangeTests`, `Fab`, `Bridge`, `MetaHumanSDK`, `SpeedTreeImporter`, `HairStrands`, `MovieRenderPipeline`, `Paper2D`, `USDCore`, `ChaosVD`, `LiveLink`, `ConcertMain`, `ConcertSyncClient`, `ConcertSyncCore`, `Takes`, `PythonScriptPlugin` | `LifePlay.uproject` | +| Leur contenu n'est plus cuit (`+DirectoriesToNeverCook`) : sans cela, la cuisson échoue sur les pipelines `Interchange` | `Config/DefaultGame.ini` | +| Build sans symboles de débogage (`-nodebuginfo`) | commande de build | + +Justification : `Tools/AuditScriptDeps.py` (dépendances des 8 563 assets, lecture seule) montre que le contenu n'utilise +que 24 modules de code, dont aucun des plugins retirés. L'éditeur et l'outil MCP les gardent. + +Piège : la cuisson incrémentale (`-iterate`) garde le contenu déjà cuit des plugins retirés ; il a été déplacé vers +`D:\Game\LifePlay_Backup_5.5\O1\_cuisson_retiree`. + +| Build Shipping | Avant (V1.1) | Après (O1) | +|---|---:|---:| +| Taille | 3 246 Mo | **2 859 Mo (−387 Mo, −12 %)** | +| Fichiers | 24 249 | 23 901 | +| Paquets du jeu | 8 561 | 8 561 | +| `NNE`, `Interchange`, `.pdb`, `DirectML.dll` | présents | absents | + +Build : `D:\Game\LifePlay_Build_5.5_O1`. Validation en jeu : **en attente**. \ No newline at end of file diff --git a/Docs/Migration/Journal_Modifications.md b/Docs/Migration/Journal_Modifications.md index 8d7deb4..ecc1bb5 100644 --- a/Docs/Migration/Journal_Modifications.md +++ b/Docs/Migration/Journal_Modifications.md @@ -905,3 +905,4 @@ Validation L7c/L7d (2026-10-02, parc, même cadrage) : la nuit reste claire (sol | CHG-058 | 2026-10-02 | Doc | nouveaux `07_Architecture_5.5.md`, `08_Guide_Developpeur.md`, `09_Commandes_Utiles.md`, `10_Protocole_Operations.md` ; mis à jour `README.md` (migration et racine), `01`, `03`, `04` (bilan §5), `05` (CX-C14 à C18, statuts), `06` (résultat V1), registre (ERR-020) | finalisation de la documentation de migration : architecture finale, guide développeur, commandes, protocole et leçons | `git revert` du commit | | CHG-059 | 2026-10-02 | O0 | nouveaux `Tools/AuditAssets.py`, `Docs/Migration/11_Audit_Optimisation.md` ; lanceur `LifePlay_profil_O0.bat` (build L7cdj, hors dépôt) | audit d'optimisation en lecture seule : inventaire des assets, build livré, leviers et lots proposés ; aucune modification du projet | `git revert` du commit | | CHG-060 | 2026-10-02 | O0 | `Docs/Migration/11_Audit_Optimisation.md` §9-10 ; lanceur `LifePlay_profil_O0.bat` corrigé (capture par `-ExecCmds`) | résultats de la mesure en jeu (60 images/s tenues, à-coups du thread de jeu dus aux minuteries Blueprint, 463 Mo de physique) ; produits utiles de la bibliothèque Fab ; lots révisés | `git revert` du commit | +| CHG-061 | 2026-10-02 | O1 | `LifePlay.uproject` (20 plugins limités à l'éditeur), `Config/DefaultGame.ini` (16 `DirectoriesToNeverCook`), nouveau `Tools/AuditScriptDeps.py` ; `README.md` : lien Mega de la V1.1 | build Shipping allégé de 387 Mo sans changement de contenu ; build `LifePlay_Build_5.5_O1` | `Tools\Restore.ps1 -Lot O1` ou `git checkout O1-avant -- LifePlay.uproject Config` | diff --git a/LifePlay.uproject b/LifePlay.uproject index 4c34536..7273356 100644 --- a/LifePlay.uproject +++ b/LifePlay.uproject @@ -1,49 +1,189 @@ -{ - "FileVersion": 3, - "EngineAssociation": "5.5", - "Category": "", - "Description": "LifePlay 2026.9 beta - portage UE 5.5", - "Modules": [ - { - "Name": "LifePlay", - "Type": "Runtime", - "LoadingPhase": "Default" - }, - { - "Name": "LifePlayEditorTools", - "Type": "Editor", - "LoadingPhase": "Default", - "AdditionalDependencies": [ - "Engine" - ] - } - ], - "Plugins": [ - { - "Name": "ModdingExtra", - "Enabled": true - }, - { - "Name": "StreetMap", - "Enabled": true - }, - { - "Name": "EnhancedInput", - "Enabled": true - }, - { - "Name": "McpAutomationBridge", - "Enabled": true, - "TargetAllowList": [ - "Editor" - ] - }, - { - "Name": "AndroidFileServer", - "Enabled": false - } - ], - "TargetPlatforms": [ - "Windows" - ] -} +{ + "FileVersion": 3, + "EngineAssociation": "5.5", + "Category": "", + "Description": "LifePlay 2026.9 beta - portage UE 5.5", + "Modules": [ + { + "Name": "LifePlay", + "Type": "Runtime", + "LoadingPhase": "Default" + }, + { + "Name": "LifePlayEditorTools", + "Type": "Editor", + "LoadingPhase": "Default", + "AdditionalDependencies": [ + "Engine" + ] + } + ], + "Plugins": [ + { + "Name": "ModdingExtra", + "Enabled": true + }, + { + "Name": "StreetMap", + "Enabled": true + }, + { + "Name": "EnhancedInput", + "Enabled": true + }, + { + "Name": "McpAutomationBridge", + "Enabled": true, + "TargetAllowList": [ + "Editor" + ] + }, + { + "Name": "AndroidFileServer", + "Enabled": false + }, + { + "Name": "NNEDenoiser", + "Enabled": true, + "TargetAllowList": [ + "Editor" + ] + }, + { + "Name": "NNERuntimeORT", + "Enabled": true, + "TargetAllowList": [ + "Editor" + ] + }, + { + "Name": "Interchange", + "Enabled": true, + "TargetAllowList": [ + "Editor" + ] + }, + { + "Name": "InterchangeAssets", + "Enabled": true, + "TargetAllowList": [ + "Editor" + ] + }, + { + "Name": "InterchangeTests", + "Enabled": true, + "TargetAllowList": [ + "Editor" + ] + }, + { + "Name": "Fab", + "Enabled": true, + "TargetAllowList": [ + "Editor" + ] + }, + { + "Name": "Bridge", + "Enabled": true, + "TargetAllowList": [ + "Editor" + ] + }, + { + "Name": "MetaHumanSDK", + "Enabled": true, + "TargetAllowList": [ + "Editor" + ] + }, + { + "Name": "SpeedTreeImporter", + "Enabled": true, + "TargetAllowList": [ + "Editor" + ] + }, + { + "Name": "HairStrands", + "Enabled": true, + "TargetAllowList": [ + "Editor" + ] + }, + { + "Name": "MovieRenderPipeline", + "Enabled": true, + "TargetAllowList": [ + "Editor" + ] + }, + { + "Name": "Paper2D", + "Enabled": true, + "TargetAllowList": [ + "Editor" + ] + }, + { + "Name": "USDCore", + "Enabled": true, + "TargetAllowList": [ + "Editor" + ] + }, + { + "Name": "ChaosVD", + "Enabled": true, + "TargetAllowList": [ + "Editor" + ] + }, + { + "Name": "LiveLink", + "Enabled": true, + "TargetAllowList": [ + "Editor" + ] + }, + { + "Name": "ConcertMain", + "Enabled": true, + "TargetAllowList": [ + "Editor" + ] + }, + { + "Name": "ConcertSyncClient", + "Enabled": true, + "TargetAllowList": [ + "Editor" + ] + }, + { + "Name": "ConcertSyncCore", + "Enabled": true, + "TargetAllowList": [ + "Editor" + ] + }, + { + "Name": "Takes", + "Enabled": true, + "TargetAllowList": [ + "Editor" + ] + }, + { + "Name": "PythonScriptPlugin", + "Enabled": true, + "TargetAllowList": [ + "Editor" + ] + } + ], + "TargetPlatforms": [ + "Windows" + ] +} diff --git a/README.md b/README.md index 80e7296..1aa3e53 100644 --- a/README.md +++ b/README.md @@ -6,12 +6,13 @@ life simulation RPG (**adult content**), ported from Unreal Engine 4.27 to **Unr ## Download the full project This Git repository does not contain the heavy assets (see [Repository contents](#repository-contents)). To build or -play, download the full source archive. The V1.1 archive will be linked here once uploaded; until then, use the V1 -archive below and update the Git files from the `v1.1` tag (the heavy assets did not change between V1 and V1.1). +play, download the full source archive. -**[LifePlay_Revival_V1_UE5.5_Full_Source_Code.7z](https://mega.nz/file/zloFkL7T#3P5GDfcfF5U352T0s472vCtyNh131RLgNWn__PSNL2I)** (Mega, 4.85 GB, 8.36 GB extracted) +**[LifePlay_Revival_V1.1_UE5.5_Full_Source_Code.7z](https://mega.nz/file/rwpRTbjA#P6sKfJM8xfGeLXcIylUsUvRSGezLi36FWtXgwxFxvvo)** (Mega, 4.94 GB) -- SHA-256: `38ee16640f960317348a044195a23b55ac8eda34aec085e661034dc9c26cc594` +- SHA-256: `6dbfb18e55e51558708239856b54f757b6044307d2d1cf261e88c94baaf617ae` +- Previous version: [LifePlay_Revival_V1_UE5.5_Full_Source_Code.7z](https://mega.nz/file/zloFkL7T#3P5GDfcfF5U352T0s472vCtyNh131RLgNWn__PSNL2I) + (4.85 GB, SHA-256 `38ee16640f960317348a044195a23b55ac8eda34aec085e661034dc9c26cc594`). - Same layout as the original author's full source archives: the project folder at the archive root, 7z LZMA2. - Contains the complete `Content` folder (including `Content/Heavy` converted to UE5 format), the compiled editor modules in `Binaries` (the project opens without compiling), the `StreetMap` and `ModdingExtra` plugins, and a @@ -21,7 +22,7 @@ archive below and update the Git files from the `v1.1` tag (the heavy assets did Check the file after downloading (PowerShell): ```powershell -Get-FileHash .\LifePlay_Revival_V1_UE5.5_Full_Source_Code.7z -Algorithm SHA256 +Get-FileHash .\LifePlay_Revival_V1.1_UE5.5_Full_Source_Code.7z -Algorithm SHA256 ``` ## Status: V1.1 (tag `v1.1`, 2026-10-01) diff --git a/Tools/AuditScriptDeps.py b/Tools/AuditScriptDeps.py new file mode 100644 index 0000000..9efbc3e --- /dev/null +++ b/Tools/AuditScriptDeps.py @@ -0,0 +1,35 @@ +# Lot O1 : modules de code (/Script/...) et paquets de plugins (//...) dont dependent les assets de /Game. +# Lecture seule. Sortie : Saved/Audit/script_deps.json {module: [assets qui en dependent]} +# +# Usage : +# UnrealEditor-Cmd.exe -run=pythonscript -script="/Tools/AuditScriptDeps.py" -unattended -nopause -nosplash + +import json +import os +import unreal + +registry = unreal.AssetRegistryHelpers.get_asset_registry() +registry.search_all_assets(True) +assets = registry.get_assets_by_path("/Game", recursive=True) +opts = unreal.AssetRegistryDependencyOptions(include_soft_package_references=True, include_hard_package_references=True, + include_searchable_names=False, include_soft_management_references=False, + include_hard_management_references=False) +deps = {} +seen = set() +for a in assets: + pkg = str(a.package_name) + if pkg in seen: + continue + seen.add(pkg) + for d in registry.get_dependencies(a.package_name, opts) or []: + d = str(d) + if d.startswith("/Game/"): + continue + key = d if d.startswith("/Script/") else "/" + d.split("/")[1] + deps.setdefault(key, []).append(pkg) + +out = os.path.join(unreal.Paths.project_saved_dir(), "Audit", "script_deps.json") +os.makedirs(os.path.dirname(out), exist_ok=True) +with open(out, "w", encoding="utf-8") as f: + json.dump({k: sorted(set(v)) for k, v in sorted(deps.items())}, f, indent=1) +unreal.log_warning("AuditScriptDeps : {} modules -> {}".format(len(deps), out))