I downloaded the .NET source code for Ultimate Doom Builder and I managed to get it to compile on Ubuntu 24.04. This is quite an achievement for sure.
Firstly, I downloaded the source code.
┏jcartwright@jcartwright-System-Version╼╸╸╸╸╸╸╾ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━◉:~/Documents/UltimateDoomBuilder/Build$ git clone https://github.com/UltimateDoomBuilder/UltimateDoomBuilder.git |
After that, I had to install all Mono dependencies.
┏jcartwright@jcartwright-System-Version╼╸╸╸╸╸╸╾ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━◉:~/Documents/UltimateDoomBuilder/Build$ sudo apt install make g++ git libx11-dev mesa-common-dev ┏jcartwright@jcartwright-System-Version╼╸╸╸╸╸╸╾ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━◉:~/Documents/UltimateDoomBuilder/Build$ sudo apt install mono-complete |
I required the msbuild functionality, so this was easily installed by adding extra packages. The standard Mono installation does not include this, but it is required to compile this .NET application.
Install these required packages.
┏jcartwright@jcartwright-System-Version╼╸╸╸╸╸╸╾ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━◉:~/Documents/UltimateDoomBuilder/Build$ sudo apt install ca-certificates gnupg |
Then, import the required GPG key.
┏jcartwright@jcartwright-System-Version╼╸╸╸╸╸╸╾ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━◉:~/Documents/UltimateDoomBuilder/Build$ sudo gpg --homedir /tmp --no-default-keyring --keyring /usr/share/keyrings/mono-official-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF |
After this, add the proper package repository.
┏jcartwright@jcartwright-System-Version╼╸╸╸╸╸╸╾ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━◉:~/Documents/UltimateDoomBuilder/Build$ echo "deb [signed-by=/usr/share/keyrings/mono-official-archive-keyring.gpg] https://download.mono-project.com/repo/ubuntu stable-bionic main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list |
Then, the package repository information must be updated.
┏jcartwright@jcartwright-System-Version╼╸╸╸╸╸╸╾ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━◉:~/Documents/UltimateDoomBuilder/Build$ sudo apt update |
And install the required package.
┏jcartwright@jcartwright-System-Version╼╸╸╸╸╸╸╾ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━◉:~/Documents/UltimateDoomBuilder/Build$ sudo apt install mono-devel |
After all of this, cd into the UltimateDoomBuilder folder and run ‘make’.
┏jcartwright@jcartwright-System-Version╼╸╸╸╸╸╸╾ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━◉:~/Documents/UltimateDoomBuilder/Build$ make |
This should be successful, then you may cd into the Build folder and run ./builder.
BuilderMono -> /home/jcartwright/Documents/UltimateDoomBuilder/Build/Builder.exe libpng warning: Interlace handling should be turned on when using png_read_image libpng warning: iCCP: known incorrect sRGB profile libpng warning: Interlace handling should be turned on when using png_read_image libpng warning: Interlace handling should be turned on when using png_read_image libpng warning: Interlace handling should be turned on when using png_read_image libpng warning: Interlace handling should be turned on when using png_read_image BuilderModesMono -> /home/jcartwright/Documents/UltimateDoomBuilder/Build/Plugins/BuilderModes.dll libpng warning: iCCP: known incorrect sRGB profile BuilderEffectsMono -> /home/jcartwright/Documents/UltimateDoomBuilder/Build/Plugins/BuilderEffects.dll ColorPickerMono -> /home/jcartwright/Documents/UltimateDoomBuilder/Build/Plugins/ColorPicker.dll TagExplorerMono -> /home/jcartwright/Documents/UltimateDoomBuilder/Build/Plugins/TagExplorer.dll CommentsPanelMono -> /home/jcartwright/Documents/UltimateDoomBuilder/Build/Plugins/CommentsPanel.dll /home/jcartwright/Documents/UltimateDoomBuilder/Source/Plugins/NodesViewer/NodesViewerMode.cs(889,5): warning CS0162: Unreachable code detected [/home/jcartwright/Documents/UltimateDoomBuilder/Source/Plugins/NodesViewer/NodesViewerMono.csproj] NodesViewerMono -> /home/jcartwright/Documents/UltimateDoomBuilder/Build/Plugins/NodesViewer.dll TagRangeMono -> /home/jcartwright/Documents/UltimateDoomBuilder/Build/Plugins/TagRange.dll VisplaneExplorerMono -> /home/jcartwright/Documents/UltimateDoomBuilder/Build/Plugins/VisplaneExplorer.dll SoundPropagationMono -> /home/jcartwright/Documents/UltimateDoomBuilder/Build/Plugins/SoundPropagationMode.dll AutomapModeMono -> /home/jcartwright/Documents/UltimateDoomBuilder/Build/Plugins/AutomapMode.dll ThreeDFloorModeMono -> /home/jcartwright/Documents/UltimateDoomBuilder/Build/Plugins/ThreeDFloorMode.dll StairSectorBuilderMono -> /home/jcartwright/Documents/UltimateDoomBuilder/Build/Plugins/StairSectorBuilder.dll cp builder.sh Build/builder chmod +x Build/builder g++ -std=c++14 -O2 --shared -g3 -o Build/libBuilderNative.so -fPIC -I Source/Native Source/Native/*.cpp Source/Native/OpenGL/*.cpp Source/Native/OpenGL/gl_load/*.c -lX11 -ldl
This is a successful compilation of Ultimate Doom Builder on Linux. This is amazing. And I was able to load a map, perform an edit and then save it. So I do not need to load Windows 11 to edit a map with Doom Builder.
As seen below, this runs on Linux just fine. So you can build a .NET application on Linux, but it is quite a process to get this done.
It looks great.