UE5 Vodič za Konverziju Blueprint-u-C++ Projekta i Popravku Pakovanja
Problem
Kada kopirate Unreal Engine 5 Blueprint-only projekat na novi računar, "Package Project" ne radi ništa -- nema greške u UI-ju, nema izlaza. Log pokazuje:
LogProjectPackagingSettings: UProjectPackagingSettings FindBestTargetInfo for '' resulted in null FTargetInfo*.
Listing targets that were searched:
End of target list.
Ovo se dešava zato što:
- Projekat nema
Source/direktorijum (BP-only projekti automatski generišu source uIntermediate/Source/tokom pakovanja) - Zastarele konfiguracije sa originalnog računara prepisuju lokalna podešavanja
- Editor ne može da pronađe build targetove bez kompajliranih
.targetmetadata fajlova
Korak-po-Korak Popravka
1. Dodajte Module u .uproject
.uproject fajl MORA da deklariše Modules sekciju. Bez nje, editor neće tražiti .target fajlove u Binaries/ i lista targetova će uvek biti prazna.
Dodajte ovo pre "Plugins" niza:
{
"FileVersion": 3,
"EngineAssociation": "5.7",
"Modules": [
{
"Name": "ImeVasegProjekta",
"Type": "Runtime",
"LoadingPhase": "Default"
}
],
"Plugins": [
...
]
}
Kritično: Bez ove sekcije, čak i ako
.targetfajlovi postoje uBinaries/, editor-ovFindBestTargetInfoće vratiti praznu listu targetova.
2. Kreirajte Source/ Direktorijum
Kreirajte sledeću strukturu u korenu projekta:
Source/
ImeVasegProjekta.Target.cs (Game target)
ImeVasegProjektaEditor.Target.cs (Editor target)
ImeVasegProjekta/
ImeVasegProjekta.Build.cs (Pravila za build modula)
ImeVasegProjekta.cpp (Implementacija modula)
ImeVasegProjekta.Target.cs:
using UnrealBuildTool;
public class ImeVasegProjektaTarget : TargetRules
{
public ImeVasegProjektaTarget(TargetInfo Target) : base(Target)
{
DefaultBuildSettings = BuildSettingsVersion.Latest;
IncludeOrderVersion = EngineIncludeOrderVersion.Latest;
Type = TargetType.Game;
ExtraModuleNames.Add("ImeVasegProjekta");
}
}
ImeVasegProjektaEditor.Target.cs:
using UnrealBuildTool;
public class ImeVasegProjektaEditorTarget : TargetRules
{
public ImeVasegProjektaEditorTarget(TargetInfo Target) : base(Target)
{
DefaultBuildSettings = BuildSettingsVersion.Latest;
IncludeOrderVersion = EngineIncludeOrderVersion.Latest;
Type = TargetType.Editor;
ExtraModuleNames.Add("ImeVasegProjekta");
}
}
ImeVasegProjekta/ImeVasegProjekta.Build.cs:
using UnrealBuildTool;
public class ImeVasegProjekta : ModuleRules
{
public ImeVasegProjekta(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
PrivateDependencyModuleNames.Add("Core");
}
}
ImeVasegProjekta/ImeVasegProjekta.cpp:
#include "CoreTypes.h"
#include "Modules/ModuleManager.h"
IMPLEMENT_PRIMARY_GAME_MODULE(FDefaultModuleImpl, ImeVasegProjekta, "ImeVasegProjekta");
3. Bildujte Oba Targeta iz Komandne Linije
Zatvorite editor, pa bildujte iz terminala:
:: Bilduj Editor target (potreban za otvaranje projekta)
"C:\Program Files\Epic Games\UE_5.7\Engine\Build\BatchFiles\Build.bat" ImeVasegProjektaEditor Win64 Development "C:\Putanja\Do\VasProjekat.uproject" -WaitMutex
:: Bilduj Game target (potreban za pakovanje -- OVO LJUDI ZABORAVE)
"C:\Program Files\Epic Games\UE_5.7\Engine\Build\BatchFiles\Build.bat" ImeVasegProjekta Win64 Shipping "C:\Putanja\Do\VasProjekat.uproject" -WaitMutex
Kritično: Morate bildovati OBA targeta. Editor build kreira
ImeVasegProjektaEditor.target, a Game build kreiraImeVasegProjekta-Win64-Shipping.target. Sistem za pakovanje traži samo Game-type targetove. Ako bildujete samo Editor target, lista targetova će i dalje biti prazna.
4. Očistite Zastarele Podatke iz Kopiranog Projekta
Kada se projekat kopira sa drugog računara, ovi direktorijumi sadrže zastarele/nekompatibilne podatke:
| Direktorijum | Bezbedno za brisanje | Regeneriše se od strane |
|---|---|---|
Intermediate/ |
Da | Editor pri pokretanju |
Binaries/ |
Da | Build korak iznad |
DerivedDataCache/ |
Da | Editor pri pokretanju |
Saved/StagedBuilds/ |
Da | Proces pakovanja |
Saved/Cooked/ |
Da | Proces kuvanja (cooking) |
Saved/Crashes/ |
Da | Ne regeneriše se (samo stari logovi) |
Saved/Temp/ |
Da | Editor pri pokretanju |
Nikad ne brišite: Config/, Content/, Source/, .uproject, Saved/Config/ (popravite umesto toga)
5. Popravite Hardkodovane Putanje (TIHI UBICA)
Kopirani projekti sadrže putanje sa originalnog računara na više lokacija. Proverite SVE ovo:
5a. Config/DefaultGame.ini
[/Script/UnrealEd.ProjectPackagingSettings]
BuildTarget=ImeVasegProjekta
StagingDirectory=(Path="") ; <-- bilo je hardkodovano na Desktop drugog korisnika
5b. Saved/Config/WindowsEditor/Game.ini (NAJVIŠI PRIORITET -- prepisuje DefaultGame.ini!)
Ovo je fajl koji zapravo utiče na pakovanje. Editor čita ovaj fajl, ne DefaultGame.ini:
[/Script/DeveloperToolSettings.PlatformsMenuSettings]
StagingDirectory=(Path="") ; <-- popravite ovo
CookBuildTarget=ImeVasegProjekta ; <-- bilo je prazno
PackageBuildTarget=ImeVasegProjekta ; <-- bilo je prazno (KOREN UZROKA "nema targetova")
Ovo je bio najtežI bag za pronalaženje.
DefaultGame.iniimaBuildTarget=ImeVasegProjektaali editor zapravo čitaPackageBuildTargetizSaved/Config/WindowsEditor/Game.ini, koji ima viši prioritet. Ako je ovo prazno, editor prosleđuje prazan string uFindBestTargetInfo.
5c. Saved/Config/WindowsEditor/EditorPerProjectUserSettings.ini
Pretražite i popravite sve putanje koje referenciraju druge računare:
SwarmIntermediateFolder= ; <-- bilo je C:/Users/DrugiKorisnik/...
LastExecutedLaunchDevice= ; <-- bilo je Windows@DRUGI-PC
LastExecutedLaunchName= ; <-- bilo je DRUGI-PC
Brz način da pronađete sve zastarele putanje:
grep -rn "C:/Users/" Config/ Saved/Config/ --include="*.ini" | grep -v "prime"
Zamenite prime sa trenutnim korisničkim imenom.
UE5 Sistem Prioriteta Konfiguracije
Razumevanje ovoga sprečava sate debagovanja:
| Prioritet | Izvor | Hex |
|---|---|---|
| 1 (najniži) | Podrazumevane vrednosti konstruktora | 0x00 |
| 2 | Skalabilnost (BaseScalability.ini nivoi) | 0x01 |
| 3 | GameUserSettings (meni kvaliteta u igri) | 0x02 |
| 4 | ProjectSettings ([/Script/Engine.RendererSettings]) |
0x03 |
| 5 | [SystemSettings] i [ConsoleVariables] u DefaultEngine.ini |
0x04 |
| 6 | Device Profili | 0x05 |
| 7 | Samostalni ConsoleVariables.ini (NE učitava se u Shipping-u!) | 0x06 |
| 8 | Komandna linija | 0x07 |
| 9 | C++ kod Set() | 0x08 |
| 10 (najviši) | Konzola u igri (~) | 0x09 |
Gde staviti rendering override-ove:
[/Script/Engine.RendererSettings]-- Projektni prekidači za funkcionalnosti (Lumen uklj/isklj, RayTracing uklj/isklj, VSM uklj/isklj). Ovo utiče na kompilaciju šejdera.[SystemSettings]-- Runtime override-ovi kvaliteta koji moraju preživeti promene skalabilnosti i device profila. Koristite za forsirane postavke kvaliteta u pakovanim buildovima.[ConsoleVariables]-- Isti prioritet kao SystemSettings. Dobro za ne-rendering cvar-ove (shader pipeline cache, itd).DefaultGameUserSettings.ini[ScalabilityGroups]-- Podrazumevani nivoi skalabilnosti za nove korisnike. Biva prepisan auto-detekcijom hardvera pri prvom pokretanju.
Zamka sa override-ovima skalabilnosti:
Ako postavite sg.ShadowQuality=3 u [ScalabilityGroups] I r.Shadow.MaxResolution=512 u [SystemSettings], sistem skalabilnosti će prvo primeniti svoje preset vrednosti za senke, pa onda [SystemSettings] prepisuje specifične cvar-ove. Vaša individualna podešavanja pobeđuju jer imaju viši prioritet.
Međutim: Device Profili (prioritet 0x05) mogu prepisati [SystemSettings] (prioritet 0x04). Ako vidite da se cvar-ovi prepisuju, proverite Saved/Config/WindowsEditor/ za konfiguracije device profila. WindowsEditor device profil često prepisuje podešavanja senki i skalabilnosti.
Pakovanje iz Komandne Linije (Zaobilaženje Editor UI-ja)
Ako editor UI i dalje odbija da pakuje, koristite RunUAT direktno:
"C:\Program Files\Epic Games\UE_5.7\Engine\Build\BatchFiles\RunUAT.bat" BuildCookRun ^
-project="C:\Putanja\Do\VasProjekat.uproject" ^
-platform=Win64 ^
-clientconfig=Shipping ^
-cook -build -stage -package -pak ^
-prereqs -compressed ^
-target=ImeVasegProjekta ^
-unrealexe="C:\Program Files\Epic Games\UE_5.7\Engine\Binaries\Win64\UnrealEditor-Cmd.exe"
Ovo zaobilazi editor-ovo otkrivanje targetova u potpunosti i poziva UnrealBuildTool + cooker direktno.
Rezime Checkliste
Kada prenosite BP-only UE5 projekat na novi računar:
- Dodajte
"Modules"sekciju u.uproject - Kreirajte
Source/sa Target.cs, Build.cs i .cpp fajlovima - Bildujte Editor target iz komandne linije
- Bildujte Game target (Shipping) iz komandne linije
- Obrišite
Intermediate/,Binaries/(pre bildovanja),DerivedDataCache/,Saved/StagedBuilds/,Saved/Cooked/ - Popravite
Config/DefaultGame.ini--BuildTarget,StagingDirectory - Popravite
Saved/Config/WindowsEditor/Game.ini--PackageBuildTarget,CookBuildTarget,StagingDirectory - Popravite
Saved/Config/WindowsEditor/EditorPerProjectUserSettings.ini-- uklonite putanje sa drugog računara - Pretražite sve .ini fajlove za hardkodovane putanje sa drugih računara
- Otvorite editor, proverite da Platforms > Windows > Package Project radi