UE5 Vodič za Konverziju Blueprint-u-C++ Projekta i Popravku Pakovanja

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:

  1. Projekat nema Source/ direktorijum (BP-only projekti automatski generišu source u Intermediate/Source/ tokom pakovanja)
  2. Zastarele konfiguracije sa originalnog računara prepisuju lokalna podešavanja
  3. Editor ne može da pronađe build targetove bez kompajliranih .target metadata 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 .target fajlovi postoje u Binaries/, editor-ov FindBestTargetInfo ć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 kreira ImeVasegProjekta-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.ini ima BuildTarget=ImeVasegProjekta ali editor zapravo čita PackageBuildTarget iz Saved/Config/WindowsEditor/Game.ini, koji ima viši prioritet. Ako je ovo prazno, editor prosleđuje prazan string u FindBestTargetInfo.

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:

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: