Did a quick test of it, and it's pretty neat in windowed mode, but has issues in fullscreen, especially when using dual monitors.
In that scenario, I get two mouse pointers: the Win95-looking one from the game and the OS one. The Win95 one is what interacts with the game, but the OS one is what defines what the borders are. The game pointer moves faster than the OS pointer. If I move the mouse outside the window screen, the game stops receiving mouse input, which means that I can only ever rotate about 180 degrees.
The windowed mode is much better, there is only the OS pointer and
Also, there still seem to be issues with stability, I still get these errors when loading maps from time to time:
Log: LoadStream <- UStruct::SerializeTaggedProperties <- UClass::Serialize <- LoadObject <- ULinkerLoad::Preload <- ULinkerLoad::Preload <- ULinkerLoad::CreateExport <- IndexToObject <- ULinkerLoad<<UObject <- ULevelBase::Serialize <- ULevel::Serialize <- LoadObject <- ULinkerLoad::Preload <- PreLoadObjects <- UObject::EndLoad <- UObject::StaticLoadObject <- LoadLevel <- UGameEngine::LoadMap <- LocalMapURL <- UGameEngine::Browse <- ClientTravel <- UGameEngine::Tick <- UpdateWorld <- MainL
Then a few less important issues:
One, the mousewheel doesn't seem to be recognised, so I can only switch weapons via keyboard.
Two, I managed to break my desktop completely when I first enabled fullscreen mode (my fault for not merging UnrealLinux.ini with DefaultLinux.ini earlier, so it defaulted to 0x0). Normally this would be expected, except not with SDL2.
Take a look at this:
https://wiki.libsdl.org/SDL_SetWindowFullscreenhttps://wiki.libsdl.org/SDL_CreateWindowSDL2 allows using SDL_WINDOW_FULLSCREEN_DESKTOP instead of SDL_WINDOW_FULLSCREEN, which guarantees that your desktop will never be broken, and the native resolution is used automatically. This is one of the most important features of SDL2!
Three, the font looks very ugly because it's not using alpha blending. UFO:AI had a very similar problem when porting from SDL1 to SDL2, too.
Four, using libssr-glinject.so instead of libGL.so.1 for recording now breaks the game and gives a GPF:
UOpenGLRenderDevice::Init <- USDL2Viewport::TryRenderDevice <- USDL2Viewport::OpenWindow <- UGameEngine::Init <- InitEngine <- main