Простой инструмент, который позволяет отслеживать «здоровье» проекта, ловить баги на ранних этапах и точнее определять момент возникновения ошибки.
Ошибки/предупреждения времени компиляции могут возникать не только во время непосредственной работы с blueprint, но и в результате внешних изменений, таких как:
- Изменение типа/спецификаторов доступа/метаинформации переменной/метода;
- Изменение сигнатуры метода;
- Удаление переменной/метода;
- Удаление файлов, на которые ссылается blueprint;
- И многое, многое другое.
При этом если затронутая логика используется редко, ошибка может жить незамеченной в течение долгого времени.
К счастью для нас, инженеры Epic снабдили свой движок полезным инструментом, который позволяет проверить все blueprints проекта на наличие ошибок/предупреждений.
CompileAllBlueprints
Дисклеймер:
Я буду указывать полные пути до файлов так, как они расположены у меня в системе.
Не забывайте менять на подходящие в вашем случае.
Для запуска понадобятся:
1. UE4Editor-Cmd.exe, найти можно по адресу
C:Program FilesEpic GamesUE_4.26EngineBinariesWin64UE4Editor-Cmd.exe
2.. uproject файл проекта, лежит в корне, в моем случае
C:GamesUnrealProjectsNiceNice.uproject
3. Терминал/командная строка/текстовый редактор — в зависимости от того, как вы будете запускать проверку.
Способ 1 — запуск из командной строки
Здесь все просто — открываем любимый терминал и вызываем
«C:Program FilesEpic GamesUE_4.26EngineBinariesWin64UE4Editor-Cmd.exe» «C:GamesUnrealProjectsNiceNice.uproject» -run=CompileAllBlueprints -ShowResultsOnly
По экрану поползут логи компиляции. В зависимости от размера проекта процесс может занимать от десятка секунд до нескольких минут.
Если все хорошо, ближе к концу простыни лога появится воодушевляющее сообщение
[2021.12.21-16.16.11:221][ 0]LogCompileAllBlueprintsCommandlet: Display:
===================================================================================
Compiling Completed with 0 errors and 0 warnings and 0 blueprints that failed to load.
===================================================================================
В противном случае программа подскажет не только файлы с ошибками, но и сами ошибки (в данном случае я создал bool переменную, использовал ее в branch ноде, после чего переменную удалил из variables, но оставил в редакторе):
[2021.12.21-16.16.47:187][ 0]LogCompileAllBlueprintsCommandlet: Display:
===================================================================================
Compiling Completed with 1 errors and 0 warnings and 0 blueprints that failed to load.
===================================================================================
[2021.12.21-16.16.47:189][ 0]LogInit: Display:
[2021.12.21-16.16.47:190][ 0]LogInit: Display: Warning/Error Summary (Unique only)
[2021.12.21-16.16.47:190][ 0]LogInit: Display: ————————————
[2021.12.21-16.16.47:190][ 0]LogInit: Display: LogBlueprint: Error: [AssetLog] C:GamesUnrealProjectsNiceContentBlueprintsStatusEffectsBP_NiceStatusEffect_Strength.uasset: [Compiler] In use pin Test Bool
no longer exists on node Get . Please refresh node or break links to remove pin. from Source: /Game/Blueprints/StatusEffects/BP_NiceStatusEffect_Strength.BP_NiceStatusEffect_Strength
Способ 2 —. bat
Каждый раз запускать консоль, вспоминать/вводить/копировать длинные пути до нужных файлов — то еще удовольствие. Намного проще один раз задать все в скрипте и запускать проверку двойным кликом по файлу.
Поэтому в корне проекта я создал compileBP.bat с таким содержанием (на самом деле не совсем, но это детали):
@echo off
set UE4EDITORCMD_EXE=C:Program FilesEpic GamesUE_4.26EngineBinariesWin64UE4Editor-Cmd.exe
set UPROJECT_PATH=C:GamesUnrealProjectsNiceNice.uproject
call «%UE4EDITORCMD_EXE%» «%UPROJECT_PATH%» -run=CompileAllBlueprints -ShowResultsOnly
pause
Его запуск открывает окно cmd.exe с логами. После завершения проверки окно любезно подождет пользовательского ввода.
Способ 3 — парсинг файла логов
Можно заметить, что полезной информации в логах едва наберется на 5 строчек, так зачем любоваться на все остальное, когда машина может отфильтровать нужное?
Для удобства и облегчения автоматизации процесса можно задать имя файла, в который будет сохраняться лог исполнения. Для этого достаточно к основной команде добавить аргумент -log=BPCompileLog.txt (имя файла можете заменить по вкусу).
@echo off
set UE4EDITORCMD_EXE=C:Program FilesEpic GamesUE_4.26EngineBinariesWin64UE4Editor-Cmd.exe
set UPROJECT_PATH=C:GamesUnrealProjectsNiceNice.uproject
call «%UE4EDITORCMD_EXE%» «%UPROJECT_PATH%» -run=CompileAllBlueprints -ShowResultsOnly -log=BPCompileLog.txt
А дальше все зависит только от вашей фантазии. Для рабочего проекта я остановился на следующей последовательности:
- Каждый коммит, затрагивающий код, запускает проверку на тестовой машине;
- В случае обнаружения ошибок собирается информация о файлах с дефектами, а также коммитах (номер, пользователь и комментарий), совершенных с момента предыдущей проверки;
- Информация отправляется в Slack с человекочитаемым форматированием;
- Если ошибок не найдено, но предыдущая проверка закончилась неудачей, отправляется сообщение о том, что ошибки были исправлены.
Такие дела. Буду рад ответить на вопросы и обсудить трудности автоматизации в геймдеве.
If you Hit Play and there are blue print errors you will get a list of blueprints that have errors in them. Note the files that have the errors. Then click “No”. (If you click yes it will ignore the errors and not give you the list). Then Open one of the blue prints, hit the compile button.
Full
Answer
Illustrates the methods on how to Debug your Blueprints
When working with Blueprints, there may be instances where something is not working the way you had planned it to. To diagnose these problems, the Blueprint Visual Scripting Tool comes with its own debugger and one of the most powerful aspects of it is the ability to add Breakpoints to nodes in your graph.
Enable Debugging
To Enable Debugging of a Blueprint, you must first specify the instance of the Blueprint you wish to debug that is in your level.
Breakpoints
To add a Breakpoint to your Blueprint script, Right-click on any execution node choose Add Breakpoint.
Debugging Controls
When a Blueprint has reached a Breakpoint, additional control options become available for navigating your Blueprint script.
Watching Values
To watch a variable’s value, Right-click on a variable and select the Watch this value option.
Blueprint Debugger Tab
You can also debug your Blueprints through the Blueprint Debugger which you can open from the Window / Developer Tools section.
Compile Errors
There could any number of reasons as to why you may see a Compile Error (yellow box below) when trying to compile your Blueprint.
Clean the Class
Classes are compiled in place, which means the same UBlueprintGeneratedClass is cleaned and reused over and over, so that pointers to the class do not have to be fixed up. CleanAndSanitizeClass () moves properties and functions off the class and into a trash class in the transient package, and then clears any data on the class.
Create Class Properties
The compiler iterates over the Blueprint’s NewVariables array, as well as some other places (construction scripts, etc.) to find all of the UProperties needed by the class and then creates UProperties on the UClass’s scope in the function CreateClassVariablesFromBlueprint () .
Create Function List
The compiler creates the function list for the class by processing the event graphs, processing the regular function graphs, and pre-compiling the functions, i.e. calling PrecompileFunction () for each context.
Bind and Link the Class
Now that the compiler is aware of all of the UProperties and UFunctions for the class, it can bind and link the class, which involves filling out the property chain, the property size, function map, etc. At this point, it essentially has a class header — minus the final flags and metadata — as well as a Class Default Object (CDO).
Compile Functions
The next step consists of generating FKismetCompiledStatment objects for the remaining nodes which is accomplished through the node handler’s Compile () function, using AppendStatementForNode (). This function can create FKismetTerm objects in the compile function as long as they are only used locally.
Finish Compiling Class
To finish compiling the class, compiler finalizes the class flags and propagates flags and metadata from the parent class before finally performing a few final checks to make sure everything went alright in the compile.
Backend Emits Generated Code
The backends convert the collection of statements from each function context into code. There are two backends in use:
Popular Posts:
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and
privacy statement. We’ll occasionally send you account related emails.
Already on GitHub?
Sign in
to your account
Comments
Hi,
I’m using Unreal 4.25.4 on Win10.
Seems like PluginsAirSimContentHUDAssetsOptionsMenu
failed to compile:
Tested on Blocks environment as well.
alonfaraj
changed the title
Blueprint compile error (OptionsMenu) in Unreal 4.25
Blueprint compile error (OptionsMenu) — Unreal 4.25
Dec 9, 2020
alonfaraj
changed the title
Blueprint compile error (OptionsMenu) — Unreal 4.25
Blueprint compile error (OptionsMenu) — Unreal 4.25.4
Dec 13, 2020
@petergerten @alonfaraj I quickly threw together a fix in #3240, could you please give this a shot to see if it fixes the compile errors?
jonyMarino
linked a pull request
Dec 22, 2020
that will
close
this issue
Oh, hmmm, interesting, I was getting a fatal compile error when cooking assets of the Neighborhood environment because BP_LevelLoadButton.uasset was unused. Without this asset I was able to cook the environment (meaning File/Package Project/Windows/Windows (64bit)) with the asset I get this fatal error:
UATHelper: Packaging (Windows (64-bit)): LogBlueprint: Error: [Compiler BP_LevelLoadButton]
In use pin Menu Widget no longer exists on node Get . Please refresh node or break links to
remove pin. from Source: /AirSim/HUDAssets/BP_LevelLoadButton.BP_LevelLoadButton
Huh, interesting. Looks like the internal links in the options menu were
broken even before this commit then.
I restored the asset and fixed the broken links in
#3240 and it seems like packaging
is working (according to CI).
…
On Wed, Dec 23, 2020, 00:41 Chris Lovett ***@***.***> wrote:
Oh, hmmm, interesting, I was getting a fatal compile error when cooking
assets of the Neighborhood environment because BP_LevelLoadButton.uasset
was unused. Without this asset I was able to cook the environment (meaning
File/Package Project/Windows/Windows (64bit)) with the asset I get this
fatal error:
UATHelper: Packaging (Windows (64-bit)): LogBlueprint: Error: [Compiler BP_LevelLoadButton] In use pin Menu Widget no longer exists on node Get . Please refresh node or break links to remove pin. from Source: /AirSim/HUDAssets/BP_LevelLoadButton.BP_LevelLoadButton
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#3200 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AARLHVVWTHEVMGAPTJHBWNDSWGUL3ANCNFSM4UTUGWFQ>
.
Ok, if you’ve tested packaging works, then you should merge your PR then, thanks!
Copy link
Contributor
Author
@saihv Any plans to merge it if packaging works?
Description
When a BlueprintImplementableEvent that takes a custom enum as a parameter is overridden in a Blueprint, it will throw a compile error. The compile error states that the event cannot be overridden because it was declared with a different signature in a parent class. Specifying that the enum is of type uint8 gets past the issue.
This issue only occurs if the BlueprintImplementableEvent has a return type. If the return type is void, the Blueprint compiles without any errors.
REGRESSION:
Yes. This worked fine in 4.13.2. This may be the result of a change in 4.14 where TEnumAsByte is no longer used in generated code.
Steps to Reproduce
- Create a new Basic Code project.
- Add a new Actor code class to the project.
- In the header file for the new Actor class, add the following enum:
UENUM() enum class EMyEventType { Clicked, ClickReleased, };
- Add the following function signature to the new Actor class:
UFUNCTION(BlueprintImplementableEvent, Category = MyEvent, meta = (DisplayName = "HandleMyEvent")) bool ReceiveMyEvent(EMyEventType InEventType);
- Build the project in Visual Studio.
- In the Editor, create a Blueprint based on the new Actor class.
- Override the function that was created in step 4.
RESULT:
The Blueprint editor shows a Compile error that states: «BlueprintEditorCompileResults:Error: Error Cannot override ‘MyActor::ReceiveMyEvent’ at HandleMyEvent which was declared in a parent with a different signature«
EXPECTED:
The Blueprint compiles successfully.
WORKAROUND:
Specify that the enum is of type uint8 (enum class EMyEventType : uint8).
Have Comments or More Details?
There’s no existing public thread on this issue, so head over to Questions & Answers just mention UE-42479 in the post.
Сообщения: 558
Flakky писал(а):
Ну перекиньте все из проекта в чистый постепенно и посмотрите, после какого момента начнет вылетать при компиляции.
если способ перекинуть asset, например MyCharacter сразу?
установил 4.9 компиляция продолжалась долго(в 4.8 обрывалась через 10 сек), но в конце концов выдало такую ошибку, буду разбираться.
Сообщения: 4
Flakky писал(а):
Trever93 писал(а):
Спасибо! Наконец-то телефон получилось определить, и запустить приложение тоже, оказывается проблема с ndk была, но правда вес стоковой демки fps на телефоне 159мб, как можно уменьшить вес не могу разобраться, и какие лучше выбрать настройки для андроид во вкладке setting или может где-то ещё
По поводу веса, то нужно чистить контент. Так же компилировать Shipping сборку, а не Development (с набором разработчика). Во вкладке Settings нету настроек проекта самого, там только для редактора. Все настройки для сборки находятся в Window > Project Settings.
Поставил тут Window > Project Settings — Shipping, далее решил проверить сколько будет весить пустышка, удалил всё со сцены и из content browser, в итоге после компиляции на android atc получил apk весом 28мб и obb весом 57мб. Я так понял меньше уже не получиться?
Сообщения: 1
При Build проект перестает отвечать. В логе Swarm Agent
20:32:28: [ERROR] Channel registration failed. Reason: Этот хост неизвестен
, Callstack: в System.Net.Dns.InternalGetHostByAddress(IPAddress address, Boolean includeIPv6)
в System.Net.Dns.GetHostEntry(String hostNameOrAddress)
в System.Runtime.Remoting.Channels.CoreChannel.GetMachineName()
в System.Runtime.Remoting.Channels.CoreChannel.GetMachineIp()
в System.Runtime.Remoting.Channels.Tcp.TcpServerChannel.SetupMachineName()
в System.Runtime.Remoting.Channels.Tcp.TcpServerChannel..ctor(Int32 port)
в Agent.AgentApplication.Main(String[] args) в d:BuildFarmbuildmachine_++depot+UE4-Releases+4.9EngineSourceProgramsUnrealSwarmAgentAgentApplication.cs:строка 133.
Подскажите, пожалуйста, как это исправить?
Сообщения: 15
Здравствуйте. Тут могут помочь с движком? Очень хотелось программировать и моделировать под него, но ошибки при создании проекта, при попытке добавить класс и писать на C++, лишают возможности что-либо создавать. Если честно ошибки вылетают направо и налево, даже если создавать проект на Blueprint он все равно поругивается, что не смог что-то там подгрузить. Если кто сможет помочь, то буду очень благодарен, потому что по-моему лучший движок и лучший язык программирования для него…
У меня Windows 8.1, Unreal Engine 4.9.1. Вот что у меня происходит:
1) При создании проекта на Blueprint — First Person: редактор открывается, но выскакивает Load Errors:
Код:
Error /Game/FirstPersonBP/Maps/FirstPersonExampleMap : Failed import for SkeletalMeshComponent /Game/FirstPersonBP/Blueprints/FirstPersonCharacter.FirstPersonCharacter_C:SkeletalMesh_GEN_VARIABLE
2) При создании проекта на C++ — First Person: генерирует код, пытается скомпилировать, но редактор не открывается, вываливает ошибку:
Код:
The project could not be compiled. Would you like to open it in Visual Studio?
The project could not be compiled. Would you like to open it in Visual Studio?
Running H:/Epic Games/4.9/Engine/Binaries/DotNET/UnrealBuildTool.exe MyProject Development Win64 -project=»H:/Мои документы/Unreal Projects/MyProject/MyProject.uproject» -rocket -editorrecompile -progress -noubtmakefiles
@progress push 5%
IME system now deactivated.
IME system now deactivated.
Parsing headers for MyProjectEditor
Running UnrealHeaderTool «H:/Мои документы/Unreal Projects/MyProject/MyProject.uproject» «H:Мои документыUnreal ProjectsMyProjectIntermediateBuildWin64MyProjectEditorDevelopmentUnrealHeaderTool.manifest» -LogCmds=»loginit warning, logexit warning, logdatabase error» -rocket -installed
Reflection code generated for MyProjectEditor in 10,9600619 seconds
@progress pop
Performing 10 actions (4 in parallel)
[2/10] Resource PCLaunch.rc
[3/10] Resource ModuleVersionResource.rc.inl
PCH.MyProject.h.cpp
H:??? ???㬥???Unreal ProjectsMyProjectIntermediateBuildWin64UE4EditorDevelopmentMyProjectPCH.MyProject.h.cpp(1) : fatal error C1083: ?? 㤠???? ??????? 䠩? ????祭??: H:?????? ???????????????’?<Unreal ProjectsMyProjectSourceMyProjectMyProject.h: No such file or directory
——— End Detailed Actions Stats ————————————————————
ERROR: UBT ERROR: Failed to produce item: H:Мои документыUnreal ProjectsMyProjectBinariesWin64UE4Editor-MyProject.dll
Total build time: 41,85 seconds
Дальше пробую открыть это в Visual Studio 2013. Нажимаю Ctrl + F5, но возникают ошибки при построении:
Код:
1>—— Build started: Project: MyProject, Configuration: Development_Editor x64 ——
1> Performing full C++ include scan (building a new target)
1> Creating makefile for MyProjectEditor (no existing makefile)
1> Performing 8 actions (4 in parallel)
1> PCH.MyProject.h.cpp
1>H:Мои документыUnreal ProjectsMyProjectIntermediateBuildWin64UE4EditorDevelopmentMyProjectPCH.MyProject.h.cpp(1): fatal error C1083: Cannot open include file: ‘H:Р?Р?Рё Р?Р?РєС?Р?РчР?С’С<Unreal ProjectsMyProjectSourceMyProjectMyProject.h’: No such file or directory
1> ——— End Detailed Actions Stats ————————————————————
1>ERROR : UBT error : Failed to produce item: H:╨Ь╨╛╨╕ ╨┤╨╛╨║╤Г╨╝╨╡╨╜╤В╤ЛUnreal ProjectsMyProjectBinariesWin64UE4Editor-MyProject.dll
1> Total build time: 7,15 seconds
1>C:Program Files (x86)MSBuildMicrosoft.Cppv4.0V120Microsoft.MakeFile.Targets(38,5): error MSB3073: The command «»H:Epic Games4.9EngineBuildBatchFilesBuild.bat» MyProjectEditor Win64 Development «H:Мои документыUnreal ProjectsMyProjectMyProject.uproject» -rocket -waitmutex» exited with code -1.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Потом спрашивает:
There were build errors. Would you like to continue and run the successful build?
Нажимаю Yes:
Error 1 error C1083: Cannot open include file: ‘H:Р?Р?Рё Р?Р?РєС?Р?РчР?С’С<Unreal ProjectsMyProjectSourceMyProjectMyProject.h’: No such file or directory H:Мои документыUnreal ProjectsMyProjectIntermediateBuildWin64UE4EditorDevelopmentMyProjectPCH.MyProject.h.cpp 1 1 MyProject
Error 2 error : Failed to produce item: H:╨Ь╨╛╨╕ ╨┤╨╛╨║╤Г╨╝╨╡╨╜╤В╤ЛUnreal ProjectsMyProjectBinariesWin64UE4Editor-MyProject.dll H:Мои документыUnreal ProjectsMyProjectIntermediateProjectFilesERROR MyProject
Error 3 error MSB3073: The command «»H:Epic Games4.9EngineBuildBatchFilesBuild.bat» MyProjectEditor Win64 Development «H:Мои документыUnreal ProjectsMyProjectMyProject.uproject» -rocket -waitmutex» exited with code -1. C:Program Files (x86)MSBuildMicrosoft.Cppv4.0V120Microsoft.MakeFile.Targets 38 5 MyProject
Спрашивает:
Missing MyProject Modules
The following modules are missing or built with a different engine version:
UE4Editor-MyProject.dll
Would you like to rebuild them now?
Нажимаю — Да:
Error
MyProject could not be compiled. Try rebuilding from source manually.
Последний раз редактировалось RedRain 27 сен 2015, 00:39, всего редактировалось 1 раз.
Сообщения: 15
Сообщения: 15
Сообщения: 1
А ошибки по установке считаются? Просто пишет, что данный тип установочного пакета не поддерживается процессором, хотя обычно открывает их без проблем. Прошу тапками не кидаться, ибо я днище в этих вопросах
Сообщения: 12
Вот мой майн эрор.
Exception in AutomationUtils.Automation: You are attempting to compile on a machine that does not have a supported compiler!
Подскажите в чем дело, что там чего не поддерживает?
Сообщения: 1581
duxart писал(а):
Вот мой майн эрор.
Exception in AutomationUtils.Automation: You are attempting to compile on a machine that does not have a supported compiler!
Подскажите в чем дело, что там чего не поддерживает?
У вас нету специального инструмента для компиляции, например Visual Studio 2013. Зависит от платформы, на которую вы пытаетесь скомпилировать проект.
_________________
Просьба, не писать вопросы по движку в ЛС. Я не единственный, кто знает UE4, и поэтому пишите на форум или в группу.
Сообщения: 12
…в том то и дело что я установил VS2013
Quote
LogPackageName: Error: DoesPackageExist: DoesPackageExist FAILED: ‘/SRWorks_Experience/Blueprints/SRWorks_E_GameInstance’ is not a standard unreal filename or a long path name. Reason: Path does not start with a valid root. Path must begin with: ‘/Engine/’, ‘/Game/’, ‘/Paper2D/’, ‘/AnimationSharing/’, ‘/DatasmithContent/’, ‘/MediaCompositing/’, ‘/OculusVR/’,
‘/PostSplashScreen/’, ‘/SteamVR/’, ‘/RuntimeMeshLoader/’, ‘/SRWorks/’, ‘/Config/’, ‘/Script/’, ‘/Memory/’, or ‘/Temp/’
LogLinker: Warning: Failed to load ‘/SRWorks_Experience/Blueprints/SRWorks_E_GameInstance’: Can’t find file.
LogPackageName: Error: DoesPackageExist: DoesPackageExist FAILED: ‘/SRWorks_Experience/Blueprints/SRWorks_E_GameInstance’ is not a standard unreal filename or a long path name. Reason: Path does not start with a valid root. Path must begin with: ‘/Engine/’, ‘/Game/’, ‘/Paper2D/’, ‘/AnimationSharing/’, ‘/DatasmithContent/’, ‘/MediaCompositing/’, ‘/OculusVR/’,
‘/PostSplashScreen/’, ‘/SteamVR/’, ‘/RuntimeMeshLoader/’, ‘/SRWorks/’, ‘/Config/’, ‘/Script/’, ‘/Memory/’, or ‘/Temp/’
LogPackageName: Error: DoesPackageExist: DoesPackageExist FAILED: ‘/SRWorks_Experience/Blueprints/SRWorks_E_GameInstance’ is not a standard unreal filename or a long path name. Reason: Path does not start with a valid root. Path must begin with: ‘/Engine/’, ‘/Game/’, ‘/Paper2D/’, ‘/AnimationSharing/’, ‘/DatasmithContent/’, ‘/MediaCompositing/’, ‘/OculusVR/’,
‘/PostSplashScreen/’, ‘/SteamVR/’, ‘/RuntimeMeshLoader/’, ‘/SRWorks/’, ‘/Config/’, ‘/Script/’, ‘/Memory/’, or ‘/Temp/’
LogLinker: Warning: Failed to load ‘/SRWorks_Experience/Blueprints/SRWorks_E_GameInstance’: Can’t find file.
LogUObjectGlobals: Warning: Failed to find object ‘Class /SRWorks_Experience/Blueprints/SRWorks_E_GameInstance.SRWorks_E_GameInstance_C’
I am guessing this is the bit that broke it?