p1xel8ted / UltrawideFixes

An ever-growing collection of ultra-wide solutions for games built on the Unity engine.
https://github.com/p1xel8ted/UltrawideFixes
GNU General Public License v3.0
45 stars 1 forks source link

Fix isn't compatible with Ubisoft+ (subscription) release. #12

Closed Bioteststream closed 5 months ago

Bioteststream commented 5 months ago

When applying the fix, you receive the following error. I assume it's because of the directory mismatch. Looks like it's looking for "\TheLostCrown_plus_Data\il2cpp_data\Metadata\global-metadata.dat" path, however the Ubisoft+ version has "\TheLostCrown_Data\" and there is also two executables and only one is used. "TheLostCrown.exe" and "TheLostCrown_plus.exe". The game launches using the "plus" executable.

[Message: Preloader] BepInEx 6.0.0-be.682 - TheLostCrown_plus
[Message: Preloader] Built from commit 910844a982dbb126d0c6544847424bc42fb7849c
[Info   :   BepInEx] System platform: Windows 10 64-bit
[Info   :   BepInEx] Process bitness: 64-bit (x64)
[Info   :   BepInEx] Running under Unity 2021.3.29a0
[Info   :   BepInEx] Runtime version: 6.0.7
[Info   :   BepInEx] Runtime information: .NET 6.0.7
[Message:InteropManager] Downloading unity base libraries
[Message:InteropManager] Extracting downloaded unity base libraries
[Message:InteropManager] Running Cpp2IL to generate dummy assemblies
[Error  :InteropManager] Failed to generate Il2Cpp interop assemblies: Cpp2IL.Core.Exceptions.LibCpp2ILInitializationException: Fatal Exception initializing LibCpp2IL!
 ---> System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Program Files (x86)\Ubisoft\Ubisoft Game Launcher\games\Prince of Persia The Lost Crown\TheLostCrown_plus_Data\il2cpp_data\Metadata\global-metadata.dat'.
   at Microsoft.Win32.SafeHandles.SafeFileHandle.CreateFile(String fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions options)
   at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize)
   at System.IO.Strategies.OSFileStreamStrategy..ctor(String path, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize)
   at System.IO.Strategies.FileStreamHelpers.ChooseStrategyCore(String path, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize)
   at System.IO.Strategies.FileStreamHelpers.ChooseStrategy(FileStream fileStream, String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, Int64 preallocationSize)
   at System.IO.File.ReadAllBytes(String path)
   at LibCpp2IL.LibCpp2IlMain.LoadFromFile(String pePath, String metadataPath, UnityVersion unityVersion) in /home/runner/work/Cpp2IL/Cpp2IL/LibCpp2IL/LibCpp2IlMain.cs:line 202
   at Cpp2IL.Core.Cpp2IlApi.InitializeLibCpp2Il(String assemblyPath, String metadataPath, UnityVersion unityVersion, Boolean allowUserToInputAddresses) in /_/Cpp2IL.Core/Cpp2IlApi.cs:line 61
   --- End of inner exception stack trace ---
   at Cpp2IL.Core.Cpp2IlApi.InitializeLibCpp2Il(String assemblyPath, String metadataPath, UnityVersion unityVersion, Boolean allowUserToInputAddresses) in /_/Cpp2IL.Core/Cpp2IlApi.cs:line 67
   at BepInEx.Unity.IL2CPP.Il2CppInteropManager.RunCpp2Il() in /home/runner/work/BepInEx/BepInEx/Runtimes/Unity/BepInEx.Unity.IL2CPP/Il2CppInteropManager.cs:line 301
   at BepInEx.Unity.IL2CPP.Il2CppInteropManager.GenerateInteropAssemblies() in /home/runner/work/BepInEx/BepInEx/Runtimes/Unity/BepInEx.Unity.IL2CPP/Il2CppInteropManager.cs:line 236
[Info   : Preloader] 0 patcher plugins loaded
[
Necka44 commented 5 months ago

Same issue here with the Ubisoft + version

[Message: Preloader] BepInEx 6.0.0-be.682 - TheLostCrown_plus [Message: Preloader] Built from commit 910844a982dbb126d0c6544847424bc42fb7849c [Info : BepInEx] System platform: Windows 10 64-bit [Info : BepInEx] Process bitness: 64-bit (x64) [Info : BepInEx] Running under Unity 2021.3.29a0 [Info : BepInEx] Runtime version: 6.0.7 [Info : BepInEx] Runtime information: .NET 6.0.7 [Message:InteropManager] Downloading unity base libraries [Message:InteropManager] Extracting downloaded unity base libraries [Message:InteropManager] Running Cpp2IL to generate dummy assemblies [Error :InteropManager] Failed to generate Il2Cpp interop assemblies: Cpp2IL.Core.Exceptions.LibCpp2ILInitializationException: Fatal Exception initializing LibCpp2IL! ---> System.IO.DirectoryNotFoundException: Could not find a part of the path 'E:\Uplay\games\Prince of Persia The Lost Crown\TheLostCrown_plus_Data\il2cppdata\Metadata\global-metadata.dat'. at Microsoft.Win32.SafeHandles.SafeFileHandle.CreateFile(String fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions options) at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize) at System.IO.Strategies.OSFileStreamStrategy..ctor(String path, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize) at System.IO.Strategies.FileStreamHelpers.ChooseStrategyCore(String path, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize) at System.IO.Strategies.FileStreamHelpers.ChooseStrategy(FileStream fileStream, String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, Int64 preallocationSize) at System.IO.File.ReadAllBytes(String path) at LibCpp2IL.LibCpp2IlMain.LoadFromFile(String pePath, String metadataPath, UnityVersion unityVersion) in /home/runner/work/Cpp2IL/Cpp2IL/LibCpp2IL/LibCpp2IlMain.cs:line 202 at Cpp2IL.Core.Cpp2IlApi.InitializeLibCpp2Il(String assemblyPath, String metadataPath, UnityVersion unityVersion, Boolean allowUserToInputAddresses) in //Cpp2IL.Core/Cpp2IlApi.cs:line 61 --- End of inner exception stack trace --- at Cpp2IL.Core.Cpp2IlApi.InitializeLibCpp2Il(String assemblyPath, String metadataPath, UnityVersion unityVersion, Boolean allowUserToInputAddresses) in /_/Cpp2IL.Core/Cpp2IlApi.cs:line 67 at BepInEx.Unity.IL2CPP.Il2CppInteropManager.RunCpp2Il() in /home/runner/work/BepInEx/BepInEx/Runtimes/Unity/BepInEx.Unity.IL2CPP/Il2CppInteropManager.cs:line 301 at BepInEx.Unity.IL2CPP.Il2CppInteropManager.GenerateInteropAssemblies() in /home/runner/work/BepInEx/BepInEx/Runtimes/Unity/BepInEx.Unity.IL2CPP/Il2CppInteropManager.cs:line 236 [Info : Preloader] 0 patcher plugins loaded [Info : Preloader] 0 assemblies discovered [Message:AssemblyPatcher] Executing 0 patch(es)

p1xel8ted commented 5 months ago

Thanks for the logs. This will require a modified BepInEx build to correct I believe. I'll take a look after work tonight.

p1xel8ted commented 5 months ago

@Necka44 @Bioteststream Can you extract the contents of the attached zip into the BepInEx/Core folder. Overwrite all. I tried testing with my Ubisoft+ sub, but as I own the retail version, it kept launching that.

Unity.IL2CPP.zip

Smoochiebumble commented 5 months ago

Didn't work for me (using Ubisoft+ as well).

Gerchan commented 5 months ago

@Necka44 @Bioteststream Can you extract the contents of the attached zip into the BepInEx/Core folder. Overwrite all. I tried testing with my Ubisoft+ sub, but as I own the retail version, it kept launching that.

Unity.IL2CPP.zip

Crashes with error:

[Message: Preloader] BepInEx 6.0.0 - TheLostCrown_plus
[Message: Preloader] Built from commit 910844a982dbb126d0c6544847424bc42fb7849c
[Info   :   BepInEx] System platform: Windows 10 64-bit
[Info   :   BepInEx] Process bitness: 64-bit (x64)
[Info   :   BepInEx] Running under Unity 2021.3.29a0
[Info   :   BepInEx] Runtime version: 6.0.7
[Info   :   BepInEx] Runtime information: .NET 6.0.7
[Message:InteropManager] Downloading unity base libraries
[Error  :InteropManager] Failed to generate Il2Cpp interop assemblies: System.Net.Http.HttpRequestException: An attempt was made to access a socket in a way forbidden by its access permissions. (unity.bepinex.dev:443)
 ---> System.Net.Sockets.SocketException (10013): An attempt was made to access a socket in a way forbidden by its access permissions.
   at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
   at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token)
   at System.Net.Sockets.Socket.<ConnectAsync>g__WaitForConnectWithCancellation|277_0(AwaitableSocketAsyncEventArgs saea, ValueTask connectTask, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
   --- End of inner exception stack trace ---
   at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.AddHttp11ConnectionAsync(HttpRequestMessage request)
   at System.Threading.Tasks.TaskCompletionSourceWithCancellation`1.WaitWithCancellationAsync(CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.GetHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
   at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
   at System.Net.Http.HttpClient.GetStreamAsyncCore(HttpRequestMessage request, CancellationToken cancellationToken)
   at BepInEx.Unity.IL2CPP.Il2CppInteropManager.DownloadUnityAssemblies() in C:\Users\Ben\OneDrive\Development\BepInExActual\Runtimes\Unity\BepInEx.Unity.IL2CPP\Il2CppInteropManager.cs:line 275
   at BepInEx.Unity.IL2CPP.Il2CppInteropManager.GenerateInteropAssemblies() in C:\Users\Ben\OneDrive\Development\BepInExActual\Runtimes\Unity\BepInEx.Unity.IL2CPP\Il2CppInteropManager.cs:line 238
[Info   : Preloader] 0 patcher plugins loaded
[Info   : Preloader] 0 assemblies discovered
[Message:AssemblyPatcher] Executing 0 patch(es)
p1xel8ted commented 5 months ago

Didn't work for me (using Ubisoft+ as well).

This isn't helpful. Need logs please.

Smoochiebumble commented 5 months ago

Didn't work for me (using Ubisoft+ as well).

This isn't helpful. Need logs please.

Sorry, here:

[Message: Preloader] BepInEx 6.0.0 - TheLostCrown_plus [Message: Preloader] Built from commit 910844a982dbb126d0c6544847424bc42fb7849c [Info : BepInEx] System platform: Windows 10 64-bit [Info : BepInEx] Process bitness: 64-bit (x64) [Info : BepInEx] Running under Unity 2021.3.29a0 [Info : BepInEx] Runtime version: 6.0.7 [Info : BepInEx] Runtime information: .NET 6.0.7 [Message:InteropManager] Downloading unity base libraries [Message:InteropManager] Extracting downloaded unity base libraries [Message:InteropManager] Running Cpp2IL to generate dummy assemblies [Error :InteropManager] Failed to generate Il2Cpp interop assemblies: Cpp2IL.Core.Exceptions.LibCpp2ILInitializationException: Fatal Exception initializing LibCpp2IL! ---> System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Program Files (x86)\Ubisoft\Ubisoft Game Launcher\games\Prince of Persia The Lost Crown\TheLostCrown_plus_Data\il2cppdata\Metadata\global-metadata.dat'. at Microsoft.Win32.SafeHandles.SafeFileHandle.CreateFile(String fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions options) at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize) at System.IO.Strategies.OSFileStreamStrategy..ctor(String path, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize) at System.IO.Strategies.FileStreamHelpers.ChooseStrategyCore(String path, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize) at System.IO.Strategies.FileStreamHelpers.ChooseStrategy(FileStream fileStream, String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, Int64 preallocationSize) at System.IO.File.ReadAllBytes(String path) at LibCpp2IL.LibCpp2IlMain.LoadFromFile(String pePath, String metadataPath, UnityVersion unityVersion) in /home/runner/work/Cpp2IL/Cpp2IL/LibCpp2IL/LibCpp2IlMain.cs:line 202 at Cpp2IL.Core.Cpp2IlApi.InitializeLibCpp2Il(String assemblyPath, String metadataPath, UnityVersion unityVersion, Boolean allowUserToInputAddresses) in //Cpp2IL.Core/Cpp2IlApi.cs:line 61 --- End of inner exception stack trace --- at Cpp2IL.Core.Cpp2IlApi.InitializeLibCpp2Il(String assemblyPath, String metadataPath, UnityVersion unityVersion, Boolean allowUserToInputAddresses) in /_/Cpp2IL.Core/Cpp2IlApi.cs:line 67 at BepInEx.Unity.IL2CPP.Il2CppInteropManager.RunCpp2Il() in C:\Users\Ben\OneDrive\Development\BepInExActual\Runtimes\Unity\BepInEx.Unity.IL2CPP\Il2CppInteropManager.cs:line 304 at BepInEx.Unity.IL2CPP.Il2CppInteropManager.GenerateInteropAssemblies() in C:\Users\Ben\OneDrive\Development\BepInExActual\Runtimes\Unity\BepInEx.Unity.IL2CPP\Il2CppInteropManager.cs:line 239 [Info : Preloader] 0 patcher plugins loaded [Info : Preloader] 0 assemblies discovered [Message:AssemblyPatcher] Executing 0 patch(es)

p1xel8ted commented 5 months ago

Hmmm. Thanks all. Put a pin in this for a bit. Need to look into it a little deeper.

WaffleWasher commented 5 months ago

Has there been a known issue of the game crashing on boot for the retail version if bought through Epic? Seems that I can get initial boot with Bepin to work, but any subsequent boots result in a crash right after the Ubisoft splash screen in game. Unsure if this is caused by the same issue listed above or not.

p1xel8ted commented 5 months ago

Has there been a known issue of the game crashing on boot for the retail version if bought through Epic? Seems that I can get initial boot with Bepin to work, but any subsequent boots result in a crash right after the Ubisoft splash screen in game. Unsure if this is caused by the same issue listed above or not.

Create a separate report and post any logs

p1xel8ted commented 5 months ago

@Gerchan @Necka44 @Bioteststream @Smoochiebumble

Please remove all traces of BepInEx and Verify your game files.

https://github.com/p1xel8ted/UltrawideFixes/releases/download/PrinceOfPersiaTheLostCrown/01.PrinceOfPersia_v0.1.3_CustomBepInEx.zip

Smoochiebumble commented 5 months ago

@Gerchan @Necka44 @Bioteststream @Smoochiebumble

Please remove all traces of BepInEx and Verify your game files.

https://github.com/p1xel8ted/UltrawideFixes/releases/download/PrinceOfPersiaTheLostCrown/01.PrinceOfPersia_v0.1.3_CustomBepInEx.zip

This did it! The game is working now in 32:9 (5120x1440). Thank you very much!

gaafah commented 5 months ago

Hello!

First of all thanks for the effort making a mod for that, I really appreciate it.

That being said, i've done all of the above but the game won't launch with the Ubi+ version. No error, no crash, just no game. When I delete the mode files, the game is stuck in an ugly stretched version.

Gerchan commented 5 months ago

Hello!

First of all thanks for the effort making a mod for that, I really appreciate it.

That being said, i've done all of the above but the game won't launch with the Ubi+ version. No error, no crash, just no game. When I delete the mode files, the game is stuck in an ugly stretched version.

Had the same issue, just launch the game through lostcrownplus.exe directly from game folder.

gaafah commented 5 months ago

Hello! First of all thanks for the effort making a mod for that, I really appreciate it. That being said, i've done all of the above but the game won't launch with the Ubi+ version. No error, no crash, just no game. When I delete the mode files, the game is stuck in an ugly stretched version.

Had the same issue, just launch the game through lostcrownplus.exe directly from game folder.

Tried that as well already but still didn't work :/

gaafah commented 5 months ago

image

I get this window and then nothing

p1xel8ted commented 5 months ago

Closing this as the initial issue has been resolved.