I figured out how to load the aarch64-linux binaries supplied with Unreal 227j on the Switch. Works pretty much the same as the Max Payne loader from before.
The resulting "port" is very unstable and hacky and runs pretty poorly, but you can now play (most of) Unreal and Unreal Gold on the Switch.
Github repo: /fgsfdsfgs/unreal_nx
Latest version: r2 (Dec 27, 2022)
Download link: Github release page
How to install:
You're going to need an Unreal or Unreal Gold installation patched with the OldUnreal 227j patch.
Unfortunately oldunreal.com seems to disallow direct linking to files, so click the link at the bottom of that post to get it.
Ensure that the patch is installed correctly: when installing make sure to tick every box, but only tick "Return to Na Pali support" if you have Unreal Gold.
If you don't have a folder called SystemARM in the Unreal folder, you need to reinstall the patch. Simply run the installer again to do that.
To install:
The resulting "port" is very unstable and hacky and runs pretty poorly, but you can now play (most of) Unreal and Unreal Gold on the Switch.
Github repo: /fgsfdsfgs/unreal_nx
Latest version: r2 (Dec 27, 2022)
Download link: Github release page
How to install:
You're going to need an Unreal or Unreal Gold installation patched with the OldUnreal 227j patch.
Unfortunately oldunreal.com seems to disallow direct linking to files, so click the link at the bottom of that post to get it.
Ensure that the patch is installed correctly: when installing make sure to tick every box, but only tick "Return to Na Pali support" if you have Unreal Gold.
If you don't have a folder called SystemARM in the Unreal folder, you need to reinstall the patch. Simply run the installer again to do that.
To install:
- Create a folder called unreal in the switch folder on your SD card.
- Copy the contents of your Unreal or UnrealGold folder into /switch/unreal/.
- Extract the contents of the .zip file from the latest release into /switch/unreal/. Replace everything.
- This will only work with Unreal/UnrealGold 227j right now. If 227k is released, the loader will most likely have to be updated to support it.
- This will likely not work in applet/album mode. Use a proper game override.
- The performance sucks, mostly because of the dynamic lights. You can disable dynamic lights to get a performance increase at the cost of all the pretty lighting effects in the game (including your flares and flashlight and any time a light turns on or off). To do that, in SystemARM/UnrealLinux.ini look for NoDynamicLights and set it to True.
- You can also disable volumetric lights to get a small performance increase in some areas with less of an impact on visuals. To do that, in SystemARM/UnrealLinux.ini look for all instances of VolumetricLighting and set them to False. There might be other config parameters that affect performance, but I haven't explored that much yet.
- Trying to join a multiplayer game or opening the server browser will likely cause the game to crash. Hosting a multiplayer game or playing Botmatch seems to work, though.
- Exiting and relaunching the game will cause it to crash. Quit out of hbmenu after exiting the game to avoid that.
- If you see any appThrowf errors, first try to re-extract the .zip file again, replacing everything.
- Return to Na Pali may crash on new game with an error about UPakFonts. To fix that get the original 3 MB UPakFonts.utx file from the Textures folder on your Unreal Gold CD or unpatched Unreal Gold install and replace the one in /switch/unreal/Textures.
- Joystick sensitivity can be adjusted for each axis individually in the SystemARM/User.ini file. Search for for SpeedBase and edit the number for each axis to your liking.
- You can bring up the on-screen keyboard by pressing MINUS at any time.
- You can enable the advanced XOpenGL renderer, though it hasn't been tested much, does not seem to improve performance and will probably explode. To do that, in SystemARM/UnrealLinux.ini change GameRenderDevice=OpenGLDrv.OpenGLRenderDevice to GameRenderDevice=XOpenGLDrv.XOpenGLRenderDevice.
- If the game crashes, usually there will be a message on the screen telling you the reason. It will also create logs at SystemARM/fatal.log and SystemARM/UnrealLinux.log. Please attach these to issue reports when possible, along with the last Atmosphere crash report.
- OldUnreal for the 227j patch;
- Switchbrew for libnx;
- devkitPro for devkitA64.
Last edited by fgsfds,