Posted: 27 May 2024. At: 10:44 AM. This was 1 month ago. Post ID: 19644
Page permalink. WordPress uses cookies, or tiny pieces of information stored on your computer, to verify who you are. There are cookies for logged in users and for commenters.
These cookies expire two weeks after they are set.

Ultimate Doom Builder works on Linux as well as Windows.

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.

Running Ultimate Doom Builder on Ubuntu.

It looks great.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.