Jump to content
  • 0

Intersect-Engine Support for ARM64


Basara

Question

I've manage to run the Intersect Server on Ubuntu Server using a Raspberry PI 4 64bit and Box64 as its wrapper. Is there any chance of compiling native dependencies for it?

 

spacer.pngspacer.png

 

Its messy but it works.

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 1

All platforms we support and build binaries for must be supported at minimum by the Client. Our upstream client dependencies (such as MonoGame) do not have dependencies compiled for ARM64.

Given our complete lack of resources and full dependence on volunteer contribution, we do not have any resources to support compiled builds for ARM64.

You are free to share how you compiled the server for ARM64 (something you didn't provide, so we could not include it in the repo anyway), but until our upstream client dependencies support compiling for ARM64 we will not be adding official binaries for it.

Link to comment
Share on other sites

  • 0

*Update, I manage to compile the source natively. Things run a lot more smoothly on ARM. I'm crossing fingers if the support for arm64 architecture will be added to the repo for easy updates.

 

spacer.png

Link to comment
Share on other sites

  • 0
On 1/20/2025 at 9:38 AM, panda said:

All platforms we support and build binaries for must be supported at minimum by the Client. Our upstream client dependencies (such as MonoGame) do not have dependencies compiled for ARM64.

Given our complete lack of resources and full dependence on volunteer contribution, we do not have any resources to support compiled builds for ARM64.

You are free to share how you compiled the server for ARM64 (something you didn't provide, so we could not include it in the repo anyway), but until our upstream client dependencies support compiling for ARM64 we will not be adding official binaries for it.

Thanks for replying! I was able to compile the server by installing .NET SDK for arm at this website: https://learn.microsoft.com/en-us/dotnet/iot/deployment . 

Then I followed the rest of the instructions provided the github page:https://github.com/AscensionGameDev/Intersect-Engine?tab=readme-ov-file . 

I used linux-arm64 arguments instead of linux-x64 to compile.

 

Thats unfortunate the MonoGame does not have dependencies for ARM64. I will run more test to see what I can do about that issue if I can, maybe I can find a source to compile it myself. I'll keep in touch!

 

UPDATE! Now this is interesting. I got monogame installed that came with the package of install mono-complete. It looks like its having trouble with Microsoft.Xna.Framework.Graphics.NoSuitableGraphicsDeviceException. I look into it more at a later time.

 

Here's the run down on the terminal command:

Spoiler
rpi4@pi:~/Desktop/Intersect-Engine/Intersect.Client/bin/Release/net8.0/linux-arm64/publish $ ./Intersect\ Client
Resource: Intersect.Client.Resources.libopenal.so.1
Resource: Intersect.Client.Resources.libSDL2-2.0.so.0
Resource: Intersect.Client.Resources.openal32.dll
Resource: Intersect.Client.Resources.MonoGame.Framework.dll.config
Resource: Intersect.Client.Resources.MonoGame.Framework.dll
[16:37:34 INF] Discovered service type: Intersect.Plugins.PluginService
[16:37:34 WRN] Directory was specified as a plugin directory but does not exist: 'resources/plugins'
[16:37:34 INF] Discovered 0 plugins:

[16:37:35 WRN] Error occurred when trying to apply Harmony patch, this is not a fatal error
System.NotImplementedException: The method or operation is not implemented.
   at HarmonyLib.PatchFunctions.UpdateWrapper(MethodBase original, PatchInfo patchInfo)
   at HarmonyLib.PatchProcessor.Patch()
   at HarmonyLib.Harmony.Patch(MethodBase original, HarmonyMethod prefix, HarmonyMethod postfix, HarmonyMethod transpiler, HarmonyMethod finalizer)
   at Intersect.Client.MonoGame.IntersectGame.MonoGameRunner.Start(IClientContext context, Action postStartupAction) in /home/rpi4/Desktop/Intersect-Engine/Intersect.Client.Core/MonoGame/IntersectGame.cs:line 568
[16:37:36 WRN] Error occurred while loading strings
System.IO.FileNotFoundException: Could not find file '/home/rpi4/Desktop/Intersect-Engine/Intersect.Client/bin/Release/net8.0/linux-arm64/publish/resources/client_strings.json'.
File name: '/home/rpi4/Desktop/Intersect-Engine/Intersect.Client/bin/Release/net8.0/linux-arm64/publish/resources/client_strings.json'
   at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirError)
   at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String path, OpenFlags flags, Int32 mode, Boolean failForSymlink, Boolean& wasSymlink, Func`4 createOpenException)
   at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize, UnixFileMode openPermissions, Int64& fileLength, UnixFileMode& filePermissions, Boolean failForSymlink, Boolean& wasSymlink, Func`4 createOpenException)
   at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize, Nullable`1 unixCreateMode, Func`4 createOpenException)
   at System.IO.Strategies.OSFileStreamStrategy..ctor(String path, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize, Nullable`1 unixCreateMode)
   at System.IO.StreamReader.ValidateArgsAndOpenPath(String path, Encoding encoding, Int32 bufferSize)
   at System.IO.File.ReadAllText(String path, Encoding encoding)
   at Intersect.Client.Localization.Strings.Load() in /home/rpi4/Desktop/Intersect-Engine/Intersect.Client.Core/Localization/Strings.cs:line 110
warning: queue 0x556ee9af60 destroyed while proxies still attached:
  wl_callback#32 still attached
  wl_surface#31 still attached
warning: queue 0x556ee3f400 destroyed while proxies still attached:
  wl_callback#32 still attached
  wl_surface#33 still attached
[16:37:38 INF] Acquiring context lock... (0ms)
[16:37:38 INF] Acquired. (3ms)
[16:37:38 INF] Beginning context dispose. (0ms)
[16:37:38 INF] GC.SuppressFinalize (2ms)
[16:37:38 INF] InternalDispose() completed. (3ms)
[16:37:38 INF] Clearing instance... (10ms)
[16:37:38 INF] Releasing context lock... (11ms)
[16:37:38 INF] Released. (12ms)
[16:37:38 ERR] Failed to start application context
Microsoft.Xna.Framework.Graphics.NoSuitableGraphicsDeviceException: Failed to create graphics device!
 ---> System.NullReferenceException: Object reference not set to an instance of an object.
   at MonoGame.OpenGL.GL.GetString(StringName name)
   at MonoGame.OpenGL.GL.LoadExtensions()
   at MonoGame.OpenGL.GL.LoadEntryPoints()
   at MonoGame.OpenGL.GraphicsContext..ctor(IWindowInfo info)
   at MonoGame.OpenGL.GL.PlatformCreateContext(IWindowInfo info)
   at MonoGame.OpenGL.GL.CreateContext(IWindowInfo info)
   at Microsoft.Xna.Framework.Graphics.GraphicsDevice.PlatformSetup()
   at Microsoft.Xna.Framework.Graphics.GraphicsDevice.Setup()
   at Microsoft.Xna.Framework.Graphics.GraphicsDevice..ctor(GraphicsAdapter adapter, GraphicsProfile graphicsProfile, Boolean preferHalfPixelOffset, PresentationParameters presentationParameters)
   at Microsoft.Xna.Framework.GraphicsDeviceManager.CreateDevice(GraphicsDeviceInformation gdi)
   at Microsoft.Xna.Framework.GraphicsDeviceManager.CreateDevice()
   --- End of inner exception stack trace ---
   at Microsoft.Xna.Framework.GraphicsDeviceManager.CreateDevice()
   at Microsoft.Xna.Framework.GraphicsDeviceManager.Microsoft.Xna.Framework.IGraphicsDeviceManager.CreateDevice()
   at Microsoft.Xna.Framework.Game.DoInitialize()
   at Microsoft.Xna.Framework.Game.Run(GameRunBehavior runBehavior)
   at Microsoft.Xna.Framework.Game.Run()
   at Intersect.Client.MonoGame.IntersectGame.MonoGameRunner.Start(IClientContext context, Action postStartupAction) in /home/rpi4/Desktop/Intersect-Engine/Intersect.Client.Core/MonoGame/IntersectGame.cs:line 576
   at Intersect.Client.Core.ClientContext.InternalStart() in /home/rpi4/Desktop/Intersect-Engine/Intersect.Client.Core/Core/ClientContext.cs:line 41
   at Intersect.Core.ApplicationContext`2.Start(Boolean lockUntilShutdown) in /home/rpi4/Desktop/Intersect-Engine/Intersect (Core)/Core/ApplicationContext`2.cs:line 232
rpi4@pi:~/Desktop/Intersect-Engine/Intersect.Client/bin/Release/net8.0/linux-arm64/publish $ ./Intersect\ Client
Resource: Intersect.Client.Resources.libopenal.so.1
Resource: Intersect.Client.Resources.libSDL2-2.0.so.0
Resource: Intersect.Client.Resources.openal32.dll
Resource: Intersect.Client.Resources.MonoGame.Framework.dll.config
Resource: Intersect.Client.Resources.MonoGame.Framework.dll
[16:40:58 INF] Discovered service type: Intersect.Plugins.PluginService
[16:40:58 WRN] Directory was specified as a plugin directory but does not exist: 'resources/plugins'
[16:40:58 INF] Discovered 0 plugins:

[16:40:59 WRN] Error occurred when trying to apply Harmony patch, this is not a fatal error
System.NotImplementedException: The method or operation is not implemented.
   at HarmonyLib.PatchFunctions.UpdateWrapper(MethodBase original, PatchInfo patchInfo)
   at HarmonyLib.PatchProcessor.Patch()
   at HarmonyLib.Harmony.Patch(MethodBase original, HarmonyMethod prefix, HarmonyMethod postfix, HarmonyMethod transpiler, HarmonyMethod finalizer)
   at Intersect.Client.MonoGame.IntersectGame.MonoGameRunner.Start(IClientContext context, Action postStartupAction) in /home/rpi4/Desktop/Intersect-Engine/Intersect.Client.Core/MonoGame/IntersectGame.cs:line 568
[16:41:01 WRN] Missing strings, overwriting strings file:
        Chatbox.ChatTabButtons (string dictionary)
warning: queue 0x55784a8a40 destroyed while proxies still attached:
  wl_callback#32 still attached
  wl_surface#31 still attached
warning: queue 0x5578488b40 destroyed while proxies still attached:
  wl_callback#32 still attached
  wl_surface#33 still attached
[16:41:03 INF] Acquiring context lock... (0ms)
[16:41:03 INF] Acquired. (3ms)
[16:41:03 INF] Beginning context dispose. (0ms)
[16:41:03 INF] GC.SuppressFinalize (2ms)
[16:41:03 INF] InternalDispose() completed. (3ms)
[16:41:03 INF] Clearing instance... (10ms)
[16:41:03 INF] Releasing context lock... (11ms)
[16:41:03 INF] Released. (12ms)
[16:41:03 ERR] Failed to start application context
Microsoft.Xna.Framework.Graphics.NoSuitableGraphicsDeviceException: Failed to create graphics device!
 ---> System.NullReferenceException: Object reference not set to an instance of an object.
   at MonoGame.OpenGL.GL.GetString(StringName name)
   at MonoGame.OpenGL.GL.LoadExtensions()
   at MonoGame.OpenGL.GL.LoadEntryPoints()
   at MonoGame.OpenGL.GraphicsContext..ctor(IWindowInfo info)
   at MonoGame.OpenGL.GL.PlatformCreateContext(IWindowInfo info)
   at MonoGame.OpenGL.GL.CreateContext(IWindowInfo info)
   at Microsoft.Xna.Framework.Graphics.GraphicsDevice.PlatformSetup()
   at Microsoft.Xna.Framework.Graphics.GraphicsDevice.Setup()
   at Microsoft.Xna.Framework.Graphics.GraphicsDevice..ctor(GraphicsAdapter adapter, GraphicsProfile graphicsProfile, Boolean preferHalfPixelOffset, PresentationParameters presentationParameters)
   at Microsoft.Xna.Framework.GraphicsDeviceManager.CreateDevice(GraphicsDeviceInformation gdi)
   at Microsoft.Xna.Framework.GraphicsDeviceManager.CreateDevice()
   --- End of inner exception stack trace ---
   at Microsoft.Xna.Framework.GraphicsDeviceManager.CreateDevice()
   at Microsoft.Xna.Framework.GraphicsDeviceManager.Microsoft.Xna.Framework.IGraphicsDeviceManager.CreateDevice()
   at Microsoft.Xna.Framework.Game.DoInitialize()
   at Microsoft.Xna.Framework.Game.Run(GameRunBehavior runBehavior)
   at Microsoft.Xna.Framework.Game.Run()
   at Intersect.Client.MonoGame.IntersectGame.MonoGameRunner.Start(IClientContext context, Action postStartupAction) in /home/rpi4/Desktop/Intersect-Engine/Intersect.Client.Core/MonoGame/IntersectGame.cs:line 576
   at Intersect.Client.Core.ClientContext.InternalStart() in /home/rpi4/Desktop/Intersect-Engine/Intersect.Client.Core/Core/ClientContext.cs:line 41
   at Intersect.Core.ApplicationContext`2.Start(Boolean lockUntilShutdown) in /home/rpi4/Desktop/Intersect-Engine/Intersect (Core)/Core/ApplicationContext`2.cs:line 232

 

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...