Linux mod development?
Has anyone successfully set up modding/development environment on linux?
I'm asking this because i don't want to spend a long time compiling the custom version of unreal engine just to find out something later on is blocking this from being possible. In particular i don't know if Wwise will work on linux, they have some documentation for linux but there isn't a clear way to get the sdk since there isn't an official installer and i wan't able to find other means of downloading the sdk.
200 Replies
I think a few people have tried over the years, but I haven't heard of anyone finishing/it succeeding
I know Vilsol and Mircea were interested in making it work, and made it sound like they made some pretty big progress, but got "distracted" by 1.0
The "big progress" was installing msvc-wine
for building UE or other things?
The goal was building UE
But never got to actually test it
And also msvc-wine says building debug instead of release doesn't really work, and I would assume Development uses debug
tried running UE through wine but i dont think i can bypass this

And the mere thought of running VS through wine made my entire body shudder in pain.
That would be the goal of msvc-wine
Or, at least the compiler, if not the IDE
Yeah, I was thinking about VS
I'm attempting this
At the moment, I'm going through VirtualBox with a Virtual Machine.
Is that virtual machine running Windows?
Correct. I'm using Windows 10 Pro within the VM. Getting the initial VisualStudio installer was a bit of a chore. After that, everything started flowing.
I'm still in the process of setting up the environment.
I feel the virtual GPU might be an issue but it should otherwise work
I haven't gotten to that point yet. If it becomes an issue, I'll proceed with my plan on building a native version of the base Unreal Engine and then start comparing the CSS differences and add them in.
Looking at the Unreal Engine documentation in relation to cross compiling gives clues as to what compilers and versions should be installed on Linux Native. I'm currently using Ubuntu 22.04 as recommended in the docs. I may consider upgrading to 24.04 for the proper llvm-clang toolchain that comes with 24.04 if I can't get it compiled on 22.04
I may just create a special repo on Launchpad.net to get llvm-toolchain compiled for 22.04. It will probably generate less headaches.
You might as well just build UE-CSS directly
If I do, I may just make a .deb package of it.
Please ask Mircea before doing that
I have no idea who that is. I tend to create .deb packages of items I choose to install. They typically don't get distributed.

But if you're not distributing the .deb package (you only use it for yourself) I think it's fine
It's mainly about respecting Unreal Engine's license
Distributing that deb outside of github forks or the UE marketplace is against the EULA
If you want the fruits of my .deb creation work, all you would have to do is create a {base_dir}/debian folder and put the packaging stuff in there, then commit that to the repo.
Similarily for RedHat, you would have a text file called {base_dir}/unrealengine.srpm that lays out how to create an RPM package. At least that is how I remember it from my RedHat days.
So far, This is as far as I have gotten. I was able to get the Unreal Engine - CSS up and running. I created a blank project, then I got this error:

It looks like you're getting a crash when trying to open the Unreal Editor - are you sure you downloaded our custom engine version as described in the docs?
Is the EngineAssociation in the uproject file set to the correct engine version?
Make sure to grab the Aspiring Modder role in https://discord.com/channels/555424930502541343/555442202780762143 if you haven't yet.
-# Responding to
editorenginemodulecompilefailure
triggered by @SymaxThe release I grabbed was UnrealEngine-5.3.2-css-66 and I made sure to grab the .EXE, as well as the -1 and -2 files.
EngineAssociation in the .uproject file is:
I guess I need to stick to the Sample project as a template.
You have to do as per the docs
i.e. download the starter project, integrate wwise, etc
won't work even with native compiled UE for linux it will still complain about missing visual studio 2022 when atempting to open the sf starter project
I know
For Linux, you have to use VS Code for Linux.
I'm still trying to figure the rest out.
You need MSVC (compiler), vscode doesn't have that
I know there will have to be some sort of conversion in the long run for Linux dev work
Gonna assume y'all already know this, but in case you don't:
You can also use JetBrains Rider as an IDE for UE5, which is available on Linux.
Rider has quite recently been made free for personal use.
Maybe that could work in some way?
You still need MSVC to compile for Windows. But it's convenient to have an IDE
Has anyone made any progress on this that can be shared? I just started looking into setting up a modding environment for Satisfactory and I don't have a Windows machine to use, so I started looking into using my Steam Deck which runs a modified version of Arch Linux. I saw a few mentions of JB's Rider, which I have access to use. Any update is appreciated!
Not that I have head. But even if you do, the specs and storage space of a steam deck will make compiling the project very slow
The 5.3.2-css-64 compiles natively (just one typo to fix).
Launching ./Engine/Binaries/Linux/UnrealEditor: the Starter Project needs Wwise plugin. No idea if it's even possible to to get it on Linux. Even in Proton, the Wwise Windows Launcher fails to install Wwise SDK:
Can't recognize '"C:\users\steamuser\AppData\Local\Temp\WwiseLauncher\runAsAdmin.lnk"' as an internal or external command, or batch script.
By removing Wwise from the FactoryGame.uproject: there is an UnrealEditor's error "The modules are missing or built with a different engine version" for a ton (63+) of modules like FactoryGame, FactoryPreEarlyLoadingScreen, FactoryDedicatedServer...Wwise is a requirement to work on the game, you can't run without it
trying without it is to check faster whether there is anything else blocking
ok, basically you install msvc into wine with the microsoft's vs_BuildTools.exe installer. Wwise launcher is bugged, the best it can do is to download archives that can be extracted into Plugins dir of the project. UnrealEditor works in wine. It's about 90% there, I'm getting an Alpakit packaging error: Failed to find command PackagePlugin (in \Engine\Source\Programs\AutomationTool\AutomationUtils\Automation.cs:line 258). Looks like some of the Alpakit's functions haven't loaded themselves. Any ideas?
Some of your Alpakit files are missing. Please redownload the folder /Build/Alpakit.Automation/ from the repo
-# Responding to
missingalpakit
triggered by @devel>remove crash missingaplakit
Crash could not be found!
>remove crash missingalpakit
Crash removed!
Can you send the full log?
Did you build UE from source?
yes 08d00ee44347101896506246689e3b779bc1bc16
Source built UE ignores
-ScriptsForProject
because reasons https://github.com/satisfactorymodding/UnrealEngine/blob/5.3.2-CSS/Engine/Source/Programs/Shared/EpicGames.Build/System/CompileScriptModules.cs#L164
(Yes, the comment above that says exactly the opposite)
Did the release not work under wine?ok, with a prebuilt UECSS it works: can make and run the wood crafting example from the wiki. Lost half of my day trying to install the compiler version that's newer than in the prebuilt. Had to disable the compiler version check for now.
Wdym compiler newer than prebuilt? UE doesn't ship with a compiler
This check: https://github.com/satisfactorymodding/UnrealEngine/blob/08d00ee44347101896506246689e3b779bc1bc16/Engine/Source/Programs/UnrealBuildTool/Platform/Windows/UEBuildWindows.cs#L1045
Solved that. Got rid of the second compiler by starting from scratch with a cleaned up list of the msvc components.
Am I understanding this correctly?
Did you manage to get the mod dev enviornment working on Linux?
Yes. I can't build things that depend too much on Wwise, but the dev env is usable enough.
Would you mind giving me a rundown on how I could get that working on my end?
My mods don't do anything with audio, so I should be fine
Build a native Unreal-CSS to use for mod editing. Use the prebuilt Unreal-CSS in Wine to build mods. There are some notes in the zip about installing MSVC and Wwise plugin.
UnrealEditor that's built from source doesn't add a skeleton to the list of available skeletons if the skeleton asset is in the mod content directories (same with input actions).
Is there a source code that corresponds to the prebuilt engine? Why are they different?
The prebuilt is the same code
The only difference between the prebuilt and source build is that the prebuilt one strips the temporary/unnecessary files after it builds from source, and adds the InstalledEngine.txt marker file that the IsEngineInstalled thing checks, to determine whether or not it should allow compiling the engine when building the project
Has anyone translated the multiplayer launch scripts to use them on Linux?
not that I'm aware of
Ok sooo... does anyone have a step-by-step guide of what to do and what currently breaks?
I think @Zvh recently tried to get it working on a Mac and may have some insights
if we can get a guide together that would be awesome
assuming we have everything actually working now
I'll do my best to contribute because I'm invested in this now
>docsearch compile unreal engine
This is the best result I got from the SMD :
https://docs.ficsit.app/satisfactory-modding/latest/CommunityResources/AssetToolkit.html#_troubleshooting_compile_errors
Unreal Engine Asset Toolkit :: Satisfactory Modding Documentation
The Asset Toolkit has not yet been fully tested on UE5 or the 1.0 release. This article is a work-in-progress. Please contact u...
Project Setup :: Satisfactory Modding Documentation
Now that you’ve installed all of the prerequisite software and got a copy of the starter project, it’s time to start setting the...
is that what you were looking for?
ah i see
we don't currently have any docs on compiling UE itself because in theory no one should need to do that since our CI already does it https://github.com/satisfactorymodding/UnrealEngine/actions
I see no linux bin in the github releases
correct, because linux mod development is not currently supported by us
sorry, I don't mean to say we already build engine for linux
I am explaining why we don't have any docs on building engine
I am taking notes as I figure it out
is there a way to avoid this? cc @Feyko (didn't you have a fake wwise at some point?)
There's the wwise-cli I made, but they changed the name of a component or split it or something, so it's not downloading everything anymore
Didn't have time to look into it
I shall be paying close attention to this thread
I ditched Windows last September, and haven't looked back since to the point where having to use Windows is the main thing keeping me from having the motivation to get back to modding.
@Borketh (silly) is that the only required build on linux change? wow
@The Urban Goose if you check out bork's branch, sounds like you should be able to build editor on linux
this is from devel's work
I encountered the same issue
ah
basically right now you can build two separate versions of unreal to use
one that edits (native)
one that builds mods (wine)
this is less than ideal especially for disk usage
Error: Unable to find 'class', 'delegate', 'enum', or 'struct' with name 'EAkMeteringFlags'
no fred?
Ak
... smells of Wwiseyeah I know. I can't seem to figure out what I'm missing

send full build log?
You're missing the css patches
I don't think I ended up writing a bash version of the patch script, because it ended up being way bigger than I expected
I think they have powershell for linux, perhaps that could be installed to avoid needing 2 versions of the patches?
Wow, I just looked it up, indeed they do
huh
where are those? did I miss part of the regular docs?
It's a set of patches that get applied by a powershell script ran as a UE pre-build task
Normally you never interact with any of that, it just happens automatically, so it's not in the docs, but on linux there's no pre-build step calling a bash script set up
They are in Mods/WwisePatches/Patches or something like that
For a quick fix you can just apply them manually, the script is meant to keep track of what's already been applied, like a git from wish
link bot was hungry
https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-linux?view=powershell-7.5
Install PowerShell on Linux - PowerShell
This article lists the Linux distributions and package managers that are supported for installing PowerShell.
But if you feel like it, you could also port the powershell script to bash, because the existing powershell script probably won't run out of the box on linux anyway
updated the bot rule to hopefully not eat any microsoft links now
going to take a crack at this because I don't expect linux devs to want to have to install that
anything I need to do to make sure the UE build step runs the right script?
It's in the .uproject
is it that big of a deal to install it? other scripts in the community are already powershell formatted, would rather not have to have 2 versions of each script to update
that much is fair, but can't powershell run a bastardized version of bash?
Not for the commands we have to run on windows
And yeah, powershell overall is kinda weird, I don't think anyone actually wants to install it on linux
let's use python instead :trol:
as far as I remember, I didn't have to touch any powershell. Only extracted some wwise plugins at the right place and that's it.
Yeah, but that was before we got the wwise patches from CSS
Or the wwise you extracted was already patched
how would that be possible
ok, rollback to 3.9.0
or try applying the patches that started to appear immediately after 3.9.0
powershell and *.exe for that part are just repulsive
Potentially working ™️ bash version. It did work for me, but it's very hacky because the wwise files are CRLF, so the patches must be too, but
patch
ignores CR by default, and in general linux doesn't like CRLFDid you manage to get anything working or not yet?
no, sorry. got busy with school shit
Fair enough
poked at this very quickly as I was finally able to properly install powershell - installing powershell is not an option to resolve this

I mean, the windows-only commands could be wrapped in an if, but the powershell script still references the patch.exe which you don't need on linux
Try the bash version
seems to work
building now
got some very weird errors about the comma operator :borked:
c++ doesn't have tuples right? why are there double parens around the FVector constructor arguments?
these files are generated by UHT, so is it borked or is it given bad data
this should fix it maybe, but those are generated files so this isn't a permanent fix (you should add the minus character to the 2nd capture group, this is not quite complete)

still getting
no idea there
question: why are UHT-generated files committed to the repo?
I know nothing about the inner workings but that doesn't seem right
well, back to work. please poke me if there's anything I missed
I found this:


Seems like renaming the file to PlatformFileManager.h (with a capital M) worked in these two cases
Maybe worth a shot?
Engine/Source/Runtime/Core/Public/HAL/PlatformFileManager.h
seems to already be named correctly...
oh the include is what's misnamed
ok, in theory, it's built
I can't launch unrealeditor anymore :borked:
LogPluginManager: Error: Plugin 'RenderDocPlugin' failed to load because module 'RenderDocPlugin' could not be found. Please ensure the plugin is properly installed, otherwise consider disabling the plugin for this project.
this makes SML buildable on linux, but now I can't launch UE for whatever reason
Found this thread on the Unreal Forums, looks like you may need to manually install renderdoc


Epic Games Developer
Using RenderDoc with Unreal Engine | Unreal Engine 5.5 Documentati...
RenderDoc is a standalone open-source graphics debugger that you can use to perform single-frame captures and inspect them in Unreal Engine.
I shouldn't have to though right? it launched before with no issues.
No clue, tbh, I was just sharing what I was able to find on the topic.
I mean this error message says that Unreal isn't able to launch, cause it can't find the plugin.
So my first course of action would be to make sure the RenderDoc plugin is still there, and the engine is launching with it enabled.
I found out that the RenderDoc plugin is part of the UE5 source code, so my guess would be that it may have needed to be built along with the engine, but something went wrong along the way?
(Keep in mind I have no clue about building UE5 from source, and am just making suggestions based on what limited knowledge I have in this topic)
Did you end up taking notes, and would you be able to share them?
I've got some time on my hands atm, and if I can get to the same point you're at right now, I could try and see if I can figure out something
my notes were just general steps for later
Is any of this being committed to any GutHub branch right now? I’d be so down to edit on Linux, I just had some things I wanted to get working before I switched over
I just now noticed that this is in our FG stubs, not in UE's source... Spot the issue https://github.com/satisfactorymodding/UnrealProjectGenerator/blob/EarlyAccess/GenerationScripts/defaultValues.py#L166
lmao, implicit tuple my beloved
so why did this issue only appear now that we try to compile on linux? does vs overlook what clang says nuh uh to?
Maybe you have a newer version of clang or something
Because crosscompiling for linux server is still clang
Or older, idk
Oh
It uses a builtin clang
Hmm


Not 100% sure that those get added when cross-compiling, as opposed to using clang to compile for windows, because this function is only called from VCToolchain
But it would explain it
what about the other things i had to patch
The filename case one it's just because windows is case insensitive, though I think at some point we did have warnings about stuff like this
And the other one is also disabled in the same function
fantastic
So wait, what else (aside from Wwise it seems) is there to figure out then?
I'm missing RenderDocPlugin for some reason
Is it just erroring, or is it straight up missing?
.
Ah, sorry must’ve missed that
Based on what it seems to do, would disabling it be an option? Or maybe it could be copied over from base 5.3?
This may be a stupid suggestion, but...
Couldn't you just put the plugin files into the correct folder?
Like copying them out of another version of the engine, just to try it out?
IDK if CSS would've made any modifications to that plugin, but if not, would that not be a possible temporary fix?
it should have compiled itself though
I want to figure out why it didn't, I just don't have the time right now
it not compiling itself is probably™️ a sign of something bigger going wrong, but that is something you could try
Well yeah, obviously it's a problem that the plugin isn't compiling, but if a drop-in replacement works, then that'd mean it's just the renderdoc plugin that's the issue
The plugin is disabled when building the project
So you should run UE with the project argument, otherwise it will enable the plugin as it is a default plugin, but it will be missing
Or maybe add the build all modules param that we added to fix a similar issue before
I'm just compiling it with make
renderdoc doesn't appear anywhere in the makefile. is it part of the sml project or ue itself?
UE5 itself
But are you compiling FactoryEditor or the default UnrealEditor?
The makefile is just a wrapper, like .vs and everything else
All the building happens through UE's C# stuff (UBT)
just
make
which compiles all

UnrealEngine/Engine/Source/ThirdParty/RenderDoc/
@Borketh (silly) can you check what
.target
files you have in Engine/Binaries/Linux/
?
Not sure what exactly make
compiles, but if it somehow compiles using the FactoryGame.uproject, the .target will have the wrong name, and the installed build script fixes thatHm, so it is building UnrealEditor
and I'm launching unrealeditor
I am doing so from a symlink in the top level dir though, would that fuck it
The executable is always named unrealeditor
Probably not
Ok, so, I compiled UE from source on linux too (no incredibuild, so it took a while), and nothing from
make
seemed to be compiling what I wanted it to, so I compiled UE using ./Engine/Build/BatchFiles/Linux/Build.sh -Target="FactoryEditor Linux Development -Project=\"$(pwd)/FactoryGame/FactoryGame.uproject\""
, which did result in the same issue, but when I compiled the project using a similar command (pointing to the real .uproject, not the one in the UE dir), everything worked finedid not work for me
Also, I found the reason why the
LD_LIBRARY_PATH
is required, our fix for the RPATH
specifically builds the path with FactoryGame
, instead of just having one ../
fewerhow do I do the equivalent of make clean with ubt
Maybe there's a Clean.sh or something
There isn't
Maybe
Build.sh clean
there's a Clean.bat...
So adapting that would be
Build.sh -Clean
I guess-Clean
wants a target, what is the equivalent of allNot sure all is a thing
i cleaned fe linux dev and am rebuilding
computer go brr
yep still no renderdoc
Can you send your log?
There is currently a bug that keeps the editor from loading properly if you launch it from a desktop shortcut. To avoid this, directly open a uproject file instead of going through the shortcut. Alternatively, enable "Always load last project on startup" and the shortcut will work correctly.
-# Responding to
editorlocationservices
triggered by @Borketh (silly)why did THAT fix it?!
opened the uproject like suggested and it opened properly
now compiling 4.5k shaders
Something is preventing this mod from loading. Troubleshooting ideas:
- Try closing and reopening the mod manager
- Try turning mods off and back on again in the Mod Manager
- Are you playing on Experimental? Check the compatibility info to find out if that mod supports it.
- Are you using the most recent version of the mentioned mod? If you are, be patient. Mod support for new versions is an ongoing effort by authors in their spare time. If you absolutely need this mod, you can play something else or start a fresh save while you wait for an update!
-# Responding to
failedtoload
triggered by @Borketh (silly)Frequently Asked Questions :: Satisfactory Modding Documentation
You can find answers to frequently asked questions on the modding discord (and about modding in general) here. Consider using your browser...
That's... what I suggested too
Oh, or I guess I didn't
But yeah, the cause is technically different, but the issue is the same as what fred said
now it's complaining about no alpakit and I probably missed a step for that to happen
You're missing the
LD_LIBRARY_PATH
From thishow do I add that if I'm launching from the uproject file
Will fix that soon ™️ (maybe tomorrow)
LD_LIBRARY_PATH=stuff /path/to/UnrealEditor /path/to/FactoryGame.uproject
I did not receive this prompt
Yeah, not sure why that happens (prompt not showing)
and also no the fuck they weren't
i just built them
make
vs Build.sh
with -Project
(which is what the vs project passes to Build.bat
)

And it looks like the makefile is missing that because it expects the editor target to be
FactoryGameEditor
Which was fixed in 5.5 https://github.com/EpicGames/UnrealEngine/commit/e89c9499ed78cd97cf71017975c8ef160ccd800c, so we can just cherry pick that
Commited (not pushed yet) fixes for all of the issues (makefile not building FactoryEditor, RPATH for mods not being created, compile errors in both the engine and the project)Right now I'm potentially making UE support crosscompiling for windows on linux using https://github.com/mstorsjo/msvc-wine, we'll find out if it worked hopefully in about an hour

Mh, it failed, I believe because of this https://github.com/mstorsjo/msvc-wine/pull/96

I mean, still being able to develop on Linux, only needing Windows to compile is still a pretty good step I’d say
Depends on what you mean by develop, because you still need to build for windows to test your mod
That’s true, I more meant get far enough to add things
I downgraded msvc to the version recommended by the docs, and also patched UE's response file generation to output wine paths. I don't really like it, but it does seem to be working this time. If it finishes successfully I'll undo the UE patch and see if it still works (probably not unless wine itself converts paths in its windows APIs)
Ok, it doesn't work with linux paths, maybe a patch to msvc-wine would be cleaner than the UE patch. The directx SDK in the windows SDK seems to not be the right one (it's missing some types, but seems to be generated the same way), I'll have to check tomorrow where the real one is on windows. And I've previously disabled ispc because UE's build of ispc for linux does not allow compiling for windows, but it's necessary for one of the project plugins, so I guess that also has to run in wine
But for good news, I've updated wwise-cli to fix the missing files, and also added linux support
For the directx thing, apparently it's supposed to be using the bundled directx library from UE, so maybe it's still related to some path not being converted so msvc-wine was not finding the file there
It was trying to use that, but Epic didn't even try to write paths with case sensitivity in mind. There apparently should have also been a warning about it, but I guess it got swept in between the other case sensitivity warnings about .libs that I was ignoring because it said it should still be fine

The resulting SML also loads sucessfully on windows
I'll look into converting the (kinda intrusive) UE wine path patches to be handled in msvc-wine, and also look into whether the changed file detection is breaking because of something, or if this is just how it's supposed to behave, because it always recompiled everything, even when all I did was ctrl+C and run the same command again. Though probably this is not going to happen today
Re the recompiling thing, I believe it is because the dependency files are generated by the compiler (I thought it was the other way around), so they have wine paths that UE can't find, so that's another thing on the list of stuff msvc-wine has to pre/post-process
[sending a message, cause Discord has hidden the thread in the channel list for me]
it's the Hide After Inactivity setting, I will increase it some for this forum as a whole
Have you been able to make any progress on this?
If not, what's currently causing issues?
Anything I could maybe help with in any way?
I'm busy with uni stuff for a couple more days, but I did have some time last night to implement the msvc-wine patches, haven't tested them yet though, maybe I can do that tonight
Ah, fair enough
Did a quick test, the dependencies json it generated all-lowercase, so fixing it is a bit harder than I thought. But the rest seems to be working, I didn't let it run till the end, just the first few actions, but it does correctly remap response files, and it would generate a valid dependencies json if it wasn't all-lowercase (might need to actually
winepath
that, but winepath seems to be very slow)Personally I'd be happy with a slow, but functional solution, even just temporarily.
I've got a few ideas for mods I'm itching to make, and I refuse to use Windows on my personal machine out of principle at this point.
Obviously no rush, it's my choice after all, if it takes time it takes time, I fully get that.
When I say "seems to be slow" I mean

And there's like 100 paths in each json, and 1.6k jsons
I see, that kind of slow
Yeah no, that's fair
Maybe nocaseglob + sed + realpath is the solution


Did the maths real quick.
If it's the "real" value that matters, and it's 0.1s on average, it's about 04:30 hours
Question:
Is the upgrade to 1.1 gonna delay/affect the development of Linux support, or is it something that can be worked on alongside/as part of the process in some way?
(Just asking out of curiosity, not trying to be passive aggressive)
I've done all of that on a separate branch, and all things considered the linux patches are quite small, so besides not being able to test them until I set everything up for 1.1, it shouldn't affect anything
Nice (hopefully)
Hey Mircea, if you need your favorite test dummy, I have a VM that I am testing on for migrating from Winblows to Linux. I'll gladly toss it out there to do a from-scratch setup of the SME
I've changed the timeout for this thread from 3d to 1w so this doesn't leave my radar