Contents of the attached PDF (Gmail thread "Perforce access - Rupelmonde Castle Viewer (Unreal project)", 3 messages), transcribed so the issue is readable without opening the attachment.
2026-08-03 17:31 - Cederik → Tommaso (cc cederik@executxr.com, sam@executxr.com)
Onboarding mail: Perforce access to the Rupelmonde Castle Viewer Unreal project.
ssl:perforce.visitflanders.experiencenet.com:1666, user tommaso, password sent separately.rupelmondecastleviewer depot; stream //rupelmondecastleviewer/main, project in RupelmondeUE/ (UE 5.5), Blender source art at RupelmondeUE/SourceArt/Rupelmonde_Castle_Main_V04.blend.RupelmondeUE/Rupelmonde.uproject in UE 5.5).Binaries/, Build/, Intermediate/, Saved/, DerivedDataCache/.2026-08-04 09:38 - Tommaso → Cederik
Acknowledged, setting everything up.
2026-08-04 12:40 - Tommaso → Cederik (the actual blocker)
Rupelmonde.uproject refuses to open..sln in the synced files. They generated one via UnrealBuildTool (on Gemini's advice), which succeeded, but Visual Studio then warns:C:\Users\Tomma\Perforce\tommaso_DESKTOP-MDJRBEB_4633\RupelmondeUE\Intermediate\ProjectFiles\UE5.vcxproj : warning : Platform 'Win64' referenced in the project file 'UE5' cannot be found..sln, .vs/, Intermediate/ and Binaries/ so they regenerate. They are asking for our go-ahead before doing that, specifically whether it could cause conflicts when merging back to the main branch.Rupelmonde.log (296 KB) and three Rupelmonde-backup-2026.08.04-*.log (~23-25 KB each). Those logs are NOT attached to this issue - request them from Tommaso if needed.Deleting .sln, .vs/, Intermediate/ and Binaries/ is safe with respect to Perforce. Those paths were deliberately stripped from the depot in CL 93 and are not tracked, so regenerating them cannot conflict with anything on //rupelmondecastleviewer/main. They are local build output only.
Inspected //rupelmondecastleviewer/main directly as hydra_admin. Three findings, and the first two are ours, not the supplier's.
Plugins/VictoryBPLibrary/VictoryBPLibrary.uplugin reads:
"Modules": [
{ "Name": "VictoryBPLibrary", "Type": "Runtime", "LoadingPhase": "PreLoadingScreen",
"PlatformAllowList": [ "Win64" ] }
]
The plugin allows Win64 and nothing else. The full Source/VictoryBPLibrary/ tree is present and live at head (13 files including VictoryBPFunctionLibrary_WinOS.cpp), so it can compile for Win64. The "MacOS only" reading in the mail is a misreading, and there is nothing to ask the supplier about here.
"Installed": true while its binaries were strippedAll nine .uplugin files in the project (VictoryBPLibrary plus the eight NVIDIA DLSS/Streamline/NIS plugins) carry "Installed": true. That flag tells Unreal to treat the plugin as a pre-built, installed plugin and NOT to compile it from source. CL 93 then deleted every Binaries/ folder. The result is a project that refuses to build the modules it needs and has no prebuilt modules to fall back on, which is exactly the failure Tommaso hit.
Note also that Rupelmonde.uproject has no Modules array and there is no RupelmondeUE/Source/ folder: the project itself is Blueprint-only. All the C++ comes from plugins. So "rebuild from source manually" via a project .sln was never going to be the right path.
CL 93 deleted 731 files under Plugins/Runtime/Nvidia/DLSS/. Most were legitimate build output, but 27 were not, all under Binaries/ThirdParty/:
DLSS/Binaries/ThirdParty/Win64/nvngx_dlss.dll
DLSS/Binaries/ThirdParty/Win64/nvngx_dlssd.dll
StreamlineCore/Binaries/ThirdParty/Win64/development/sl.interposer.dll
StreamlineCore/Binaries/ThirdParty/Win64/development/sl.common.dll
StreamlineCore/Binaries/ThirdParty/Win64/development/sl.dlss_g.dll
... and the rest of the sl.*.dll / nvngx_*.dll set
These are NVIDIA redistributables shipped inside the plugin, not compiler output. Recompiling cannot regenerate them. The matching headers and import libraries under Source/ThirdParty/ survived (they live under Source/), so the plugins will link but have nothing to load at runtime.
All 27 were still in Perforce history at revision #1 (CL 78), so they were restorable without going back to Yondr.
Approved and submitted to //rupelmondecastleviewer/main as a single changelist, 36 files:
Plugins/Runtime/Nvidia/**/Binaries/ThirdParty/ (306 MB of nvngx_*.dll and sl.*.dll), recovered from CL 78 with p4 undo..uplugin files edited, "Installed": true to "Installed": false, so UnrealBuildTool compiles the plugin modules locally instead of expecting prebuilt DLLs. Byte-preserving edit, CRLF line endings kept, each file re-validated as JSON.Deliberately NOT restored: Binaries/Win64/UnrealEditor-*.dll, Intermediate/ and Build/. Those are genuine build output and stay out of the depot.
Verified at head after submit: 27 ThirdParty DLLs live, all 9 .uplugin files reading "Installed": false.
Confirmed absent from the depot, for the record: no .sln and no .vcxproj anywhere in //rupelmondecastleviewer/main. Nothing to delete on our side; the .sln Tommaso generated exists only on the local workstation.
No. hydraunrealengine-server (46.225.141.191) cannot do it:
cx23: 2 cores, 4 GB RAM, 40 GB disk. The project sync alone is ~18 GB and a UE 5.5 editor install does not fit alongside it.PlatformAllowList: ["Win64"]. The project cannot open on Linux at all.Validation needs a Windows machine with UE 5.5, so Tommaso's workstation is the real test. Retry there.
The project as it stood could not build on any machine, so this was not a local problem on your end. CL 94 fixes it. Before anything else:
.uplugin files.RupelmondeUE/Rupelmonde.uproject directly. Unreal will now offer to build the missing modules: accept. There is no project .sln involved and you do not need one, because the project is Blueprint-only and all the C++ lives in plugins.Also worth knowing: VictoryBPLibrary is Win64-only, not MacOS-only. Its .uplugin allows Win64 and nothing else, and the full source is in the depot. Nothing needs converting.
None of the following are in Perforce, so deleting them cannot conflict with anything on //rupelmondecastleviewer/main. They are local build output and are regenerated on demand.
In the workspace root C:\Users\Tomma\Perforce\tommaso_DESKTOP-MDJRBEB_4633\RupelmondeUE\, delete:
Rupelmonde.sln (and UE5.sln if present).vs\Intermediate\Binaries\Saved\ and DerivedDataCache\ if they existThen, in P4V, run Get Latest Revision once more on the stream and confirm nothing shows as needing to be resolved. Nothing should appear in a pending changelist. If anything IS open in a pending changelist, revert it before continuing (it would be local junk, not real work). Then open Rupelmonde.uproject directly and let Unreal build the plugin modules. Do not generate a .sln: the project is Blueprint-only and does not need one.
Before the next build attempt, verify each of these and report which ones were already correct:
Visual Studio 2022
Platform 'Win64' ... cannot be found.Unreal Engine
Rupelmonde.uproject and choose Switch Unreal Engine version to confirm it is associated with the 5.5 install.Report back
Rupelmonde.log plus the three Rupelmonde-backup-*.log files (they are not attached to this issue).RupelmondeUE\Plugins\VictoryBPLibrary\Source\ synced correctly on the local machine (it is present and live in the depot, so it should be there).Do not delete or check out anything under Content/, Config/, Plugins/ or SourceArt/ while troubleshooting. Those are tracked and exclusive-checkout applies.
Supplier: Yondr. The CL 93 changelist description wrongly credited the 2026-07-24 delivery to "Cyborn"; amended on the server 2026-08-05. Per the findings above, none of this needed Yondr in the end.
Related: #434 (onboarding emails, closed). Ops record: agentcodex/docs/runbooks/rupelmonde-perforce-onboarding.md.
Transcribed from his mail:
VS 17.14 ships the MSVC 14.44 toolset. UE 5.5 does not fully support it:
Confidence: high on the mechanism, but not confirmed until we read his .log file. The log will show the exact toolset UBT picked and the first real compile error.
%APPDATA%\Unreal Engine\UnrealBuildTool\BuildConfiguration.xml with:
<?xml version="1.0" encoding="utf-8" ?>
<Configuration xmlns="https://www.unrealengine.com/BuildConfiguration">
<WindowsPlatform>
<CompilerVersion>14.38.33130</CompilerVersion>
</WindowsPlatform>
</Configuration>
Intermediate\, Binaries\, .vs\ and any .sln again, then open Rupelmonde.uproject directly and accept the module build.Saved\Logs\*.log from every attempt from now on (copy them out before cleaning).Note for the record: this is a machine independent problem. Any contributor on VS 17.10+ will hit it, so the BuildConfiguration.xml pin (or a Rupelmonde.uproject level fix) should become part of the onboarding runbook agentcodex/docs/runbooks/rupelmonde-perforce-onboarding.md once confirmed.
Tommaso's follow-up mail (partial): he had Gemini condense his findings into three options. Only option 3 survived the copy: replace the local VictoryBPLibrary with a fresh pre-compiled binary release built for UE 5.5. Options 1 and 2 are cut off; full text still needed. This confirms the failure centers on VictoryBPLibrary compilation, which fits the MSVC 14.44 hypothesis from the previous comment.
Log fragments (attempts of 08/05 16:29 and 08/07 11:15): both show only the harmless startup preamble (aqProf.dll, VtuneApi.dll misses are normal). Important detail: both logs show Running engine for game: Rupelmonde, so the editor process did launch on those attempts. The real error is further down; full log files still needed.
Depot check blocked: wanted to grep Content/ for VictoryBPFunctionLibrary references (to judge whether disabling the plugin is even an option). Blocked: hydra_admin tickets are expired everywhere (local and on the perforce node). hydraperforce_svc has a valid long-lived ticket but its protections line reads //rupelmondecastleviewer without /..., so it can read nothing under the depot. Fix when hydra_admin is next logged in: edit p4 protect, change the line to read user hydraperforce_svc * //rupelmondecastleviewer/....
Build validation machine approved (Cederik): fluffy-dumpling-87 (node-11da9ea3, RTX 5070 Ti, bxl1, online).
Plan:
//rupelmondecastleviewer/main (needs a p4 user; hydra_admin login required first).Rupelmonde.uproject with the stock 14.44 toolset. Expect the same plugin compile failure Tommaso sees. Capture the exact errors.vs_buildtools modify --add Microsoft.VisualStudio.Component.VC.14.38.17.8.x64.x86 --quiet, pin via BuildConfiguration.xml, recompile. Expect success.On Gemini's option 3 (replace Victory with a prebuilt 5.5 binary release): hold. A different plugin version can change or drop BlueprintCallable signatures and silently break every Blueprint node that calls into it. Decide only after step 3 shows the real errors.
Tommaso's full mail arrived with the exact error: C4335 'Mac file format detected', thrown only while compiling VictoryBPLibrary sources. His Gemini-assisted diagnosis pointed at line endings and Perforce translation. That was the right neighborhood, and inspecting the depot directly confirmed a variant of it:
text+x (NOT binary, so Gemini's option 1 as stated did not apply).LineEnd: local (Tommaso's setting, correct) expands every stored LF to CRLF. Stored \r\n therefore arrives as \r\r\n: a stray CR on every line of every file. MSVC sees the stray CRs and reports C4335 Mac format.CL 95 (hydra_admin, 2026-08-11): all 150 files re-stored with canonical LF line endings, content otherwise unchanged. Verified at head: zero CR bytes in the stored content. Windows clients now receive clean CRLF on sync; Linux/Mac clients receive LF.
Also fixed while in there: the hydraperforce_svc protections line was //rupelmondecastleviewer (missing /...); now //rupelmondecastleviewer/....
Intermediate\, Binaries\, .vs\, and any .sln under RupelmondeUE\.Rupelmonde.uproject directly and accept the module build.Saved\Logs\Rupelmonde.log; next suspect is the MSVC 14.44 toolset (pin instructions already on this issue).Ran the before/after test on the approved build machine, which has the SAME MSVC toolset as Tommaso (14.44.35207 from VS 2022 BuildTools). Test file: VictoryBPFunctionLibrary.cpp (2407 lines). Windows p4 client, LineEnd: local, exactly like Tommaso's workspace.
Pre-fix (synced at CL 94):
\r\r\n. The corruption is total and deterministic.cl.exe /Zs output, line 1: warning C4335: Mac file format detected: please convert the source file to either DOS or UNIX format. Reproduces Tommaso's exact diagnostic. (C4335 is a warning at the raw compiler level; the UE build chain escalates it, which is why it blocked his build.)Post-fix (synced at head, CL 95):
cl.exe /Zs: no C4335.Temp workspace and files removed from the machine afterwards.
Conclusion: the depot fix is confirmed working for Windows clients with default line-ending settings. Remaining risk before closing: whether the plugins fully compile under Tommaso's 14.44 toolset once UBT actually builds them (the 14.38 pin instructions earlier in this issue remain the fallback). Awaiting his re-sync and rebuild.
Reply sent to Tommaso (2026-08-11):
Hi Tommaso,
You found it. Your line-ending diagnosis was correct, and the fault was in our repository, not on your machine. My earlier reply dismissed the line-ending lead, and that was wrong. Thank you for persisting with it.
The detail is slightly different from Gemini's theory: the files are stored as text in Perforce, not binary. But they were imported with Windows line endings baked into the stored data, where Perforce expects to store plain LF. Your workspace setting "local" was correct, and that is exactly why every sync added an extra CR to every line. The compiler then read the files as Mac-format and refused. This affected 150 source files across all plugins, so it would have broken every Windows developer, exactly as you feared.
I have fixed the repository itself (changelist 95) and verified the fix on one of our own Windows machines with the same compiler version as yours: before the fix it reproduces your exact C4335 error, after the fix it does not. None of Gemini's three options are needed: no re-typing, no compiler flag, no plugin replacement.
What to do now:
If it fails again, please send the new Rupelmonde.log. The next suspect would be your compiler version (VS 17.14 ships a newer toolset than UE 5.5 was built against), and I have instructions ready for that. But try the plain rebuild first.
Best,
Cederik
Final reply sent to Tommaso 2026-08-11 (short version, supersedes the draft two comments up):
Subject: Fixed — sync and rebuild
Hi Tommaso,
We found the core issue, thanks to your input. Your line-ending diagnosis was right: the repository stored the source files with broken line endings, so every sync on Windows corrupted them. It affected 150 files across all plugins and would have hit every Windows developer. It is now fixed on the server (changelist 95), and we validated the fix on our own machine with your exact compiler version: your C4335 error is gone. None of the three options from your mail are needed.
To get going:
Let me know how it goes, either way. If anything still fails, send the new Rupelmonde.log.
Thanks for the clear reports. They led us to the real cause.
Best,
Cederik
Hi Tommaso,
Good news: this was not your setup. The project as it stood in Perforce could not be built on any machine, so you were chasing something that was genuinely broken on our side. I have fixed it in the depot (changelist 94). Two things were wrong:
Two of your findings, resolved:
Win64and nothing else, and the full source is in the depot. There is nothing to convert, and no line-ending change is needed..sln,.vs,IntermediateandBinariesis completely safe. None of them are tracked in Perforce, so they cannot conflict with anything when merging. They are local build output and get regenerated. Go ahead.Also worth knowing: this project is Blueprint-only. There is no
RupelmondeUE/Sourcefolder and the.uprojectdeclares no modules of its own, so there was never a project.slnto find. All the C++ comes from plugins, and Unreal builds those itself. You do not need UnrealBuildTool or a hand-made solution file at any point.What to do now
RupelmondeUE\, deleteRupelmonde.sln(andUE5.slnif it is there),.vs\,Intermediate\,Binaries\, andSaved\/DerivedDataCache\if present.RupelmondeUE\Rupelmonde.uprojectdirectly by double-clicking it. Unreal will offer to build the missing modules. Accept, and let it finish. The first build takes a while.Do not check out or delete anything under
Content/,Config/,Plugins/orSourceArt/while troubleshooting. Those are tracked, and binary assets use exclusive check-out.One thing still to check on your machine
The warning you hit,
Platform 'Win64' referenced in the project file 'UE5' cannot be found, is separate from the depot problem and will still bite after the re-sync. It almost always means Visual Studio is missing the Unreal bits. Please open the Visual Studio Installer, click Modify on VS 2022, and confirm:Reboot after any change. Also please confirm your Unreal is exactly 5.5 and installed from the Epic Games Launcher rather than built from GitHub source, since mixing a source engine with launcher-generated project files causes this same class of error.
If it still fails after all that, send over
Rupelmonde.logand the threeRupelmonde-backup-*.logfiles and we will take it from there. Sorry for the detour, and thanks for flagging it clearly enough that we could find the real cause.Best,
Cederik