Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[suggestion]make the client runs on macOS, Linux and etc. #59

Closed
QianNangong opened this issue Sep 10, 2017 · 13 comments
Closed

[suggestion]make the client runs on macOS, Linux and etc. #59

QianNangong opened this issue Sep 10, 2017 · 13 comments

Comments

@QianNangong
Copy link

MonoGame is available on macOS and Linux, so I think it'll be possible to run client on those platforms without wine.
I think it is worthy to make a 'native' client because both wine and mono can be cut into a very small size, that can make it to be distributed easily without depend on Microsoft's .Net Framework.

I have made some try to run on macOS but it refused to start up.
screen shot 2017-09-10 at 2 31 12 pm
screen shot 2017-09-10 at 2 31 16 pm

@Rampastring
Copy link
Member

I haven't really tried running the client on non-Windows platforms, nor do I have time for it in the near future, so I'm afraid I can't help much with it right now.

I think @dkeetonx got the client's OpenGL build to run natively on Linux, however.

@QianNangong
Copy link
Author

I'd like to achieve it on my spare time, but I'm not familiar with C#.

@dkeetonx
Copy link
Member

It does work on mono. The only problem is file separators and file system case-sensitivity assumption. Both are fixed if you launch the game like this:

env MONO_IOMAP=all mono --debug Resources/clientogl.exe

For DTA: In Resources/ClientDefinitions.ini you can change the game that gets executed: GameExecutableNames=wine-dta.sh

wine-dta.sh should be executable in $PATH and contain:

env WINEPREFIX=/path/to/.wine/ wine game.exe -SPAWN

@ghost
Copy link

ghost commented Sep 16, 2017

I have made a guide on how to run mental omega in linux: https://hastebin.com/raw/metoqelewu

@QianNangong
Copy link
Author

It does work! Thank you all.

@Rampastring
Copy link
Member

Thanks for the guide @kosti1. I'll try to simplify the process for future client versions (so that for example deleting the .wav files and editing ClientDefinitions.ini wouldn't be necessary).

@zpimp
Copy link

zpimp commented Aug 21, 2018

i have made some scripts to automate playing mental omega on linux
put all files (game + mod + this) in a directory mod in drive_c in your wineprefix
just run ./config.sh, and play from desktop shortcut
thanks @ghost for initial code

@melroy89
Copy link

melroy89 commented Sep 24, 2018

So..? where is the official Linux downloadable? Eg. Red Alert Multiplayer is still Windows only:
https://cncnet.org/red-alert#download

EDIT: Wait a sec. Does the deb file actually also include Online? If so, this download page is very misleading actually..

@andwan0
Copy link

andwan0 commented Nov 5, 2024

I have made a guide on how to run mental omega in linux: https://hastebin.com/raw/metoqelewu

Sorry for necro an old thread. But there's still a lack of linux instructions and this link is long dead gone :(

@Metadorius
Copy link
Member

Latest client versions 2.11.x.x are runnable on Linux natively provided you have .NET 8 installed. All reference projects should ship with a script to launch the client, but if they aren't, look into Resources/BinariesNET8/UniversalGL (IIRC), you'll find an xplat binary there.

@andwan0
Copy link

andwan0 commented Nov 8, 2024

Okay, I installed mono (.NET Framework implementation for Linux).
Tried running the client exes.

09.11. 00:02:16.332    ***Logfile for Yuri's Revenge client***
09.11. 00:02:16.333    Client version: 2.11.1.0
09.11. 00:02:16.333    Loading settings.
09.11. 00:02:16.349    Failed to load a translation file. Neither /home/deck/Games/ea-app/drive_c/Program Files/EA Games/Command and Conquer Red Alert II/Resources/Translations/en/Yuri Theme/Translation.ini nor /home/deck/Games/ea-app/drive_c/Program Files/EA Games/Command and Conquer Red Alert II/Resources/Translations/en/Translation.ini exist.
09.11. 00:02:16.349    Loaded translation: English
09.11. 00:02:16.364    Initializing updater.
09.11. 00:02:16.368    Updater: Initializing updater.
09.11. 00:02:16.371    Updater config file not found - attempting to read legacy updateconfig.ini.
09.11. 00:02:16.371    Warning: No download mirrors found in updater config file or the built-in game info.
09.11. 00:02:16.371    Updater: Update mirror count: 0
09.11. 00:02:16.372    Updater: Running from: clientdx.exe
09.11. 00:02:16.372    OSDescription: Unix 6.1.52.16
09.11. 00:02:16.374    OSArchitecture: X64
09.11. 00:02:16.374    ProcessArchitecture: X64
09.11. 00:02:16.375    FrameworkDescription: Mono 6.12.0 (makepkg/73df89a73d2 Sat May 27 11:12:33 UTC 2023)
09.11. 00:02:16.375    Selected OS profile: UNIX
09.11. 00:02:16.375    Current culture: en-GB
09.11. 00:02:16.399    Removing partial custom component downloads.
09.11. 00:02:16.400    Checking for the existence of FinalSun.ini.
09.11. 00:02:16.401    FinalSun.ini doesn't exist - writing default settings.
09.11. 00:02:16.410    Starting background processing of INI files.
09.11. 00:02:16.410    /INI/Base does not exist, skipping background processing of INI files.
09.11. 00:02:16.514    KABOOOOOOM!!! Info:
09.11. 00:02:16.514    Type: System.DllNotFoundException
09.11. 00:02:16.514    Message: shell32.dll assembly:<unknown assembly> type:<unknown type> member:(null)
09.11. 00:02:16.514    Source: 
09.11. 00:02:16.515    KABOOOOOOM!!! Info:
09.11. 00:02:16.515    Type: System.NullReferenceException
09.11. 00:02:16.516    Message: Object reference not set to an instance of an object
09.11. 00:02:16.516    Source: clientdx
09.11. 00:02:16.516    TargetSite.Name: LogException
09.11. 00:02:16.518    Stacktrace:   at DTAClient.PreStartup.LogException (System.Exception ex, System.Boolean innerException) [0x0007a] in <096729570f1f4ac2b2ca69ee41b87120>:0 
  at DTAClient.PreStartup.HandleException (System.Object sender, System.Exception ex) [0x00001] in <096729570f1f4ac2b2ca69ee41b87120>:0 
  at DTAClient.PreStartup.Initialize (DTAClient.StartupParams parameters) [0x00567] in <096729570f1f4ac2b2ca69ee41b87120>:0 
  at DTAClient.Program.Main (System.String[] args) [0x000fb] in <096729570f1f4ac2b2ca69ee41b87120>:0 

and

09.11. 00:04:47.553    ***Logfile for Yuri's Revenge client***
09.11. 00:04:47.554    Client version: 2.11.1.0
09.11. 00:04:47.555    Loading settings.
09.11. 00:04:47.571    Failed to load a translation file. Neither /home/deck/Games/ea-app/drive_c/Program Files/EA Games/Command and Conquer Red Alert II/Resources/Translations/en/Yuri Theme/Translation.ini nor /home/deck/Games/ea-app/drive_c/Program Files/EA Games/Command and Conquer Red Alert II/Resources/Translations/en/Translation.ini exist.
09.11. 00:04:47.571    Loaded translation: English
09.11. 00:04:47.583    Initializing updater.
09.11. 00:04:47.587    Updater: Initializing updater.
09.11. 00:04:47.589    Updater config file not found - attempting to read legacy updateconfig.ini.
09.11. 00:04:47.590    Warning: No download mirrors found in updater config file or the built-in game info.
09.11. 00:04:47.590    Updater: Update mirror count: 0
09.11. 00:04:47.590    Updater: Running from: clientogl.exe
09.11. 00:04:47.591    OSDescription: Unix 6.1.52.16
09.11. 00:04:47.593    OSArchitecture: X64
09.11. 00:04:47.593    ProcessArchitecture: X64
09.11. 00:04:47.593    FrameworkDescription: Mono 6.12.0 (makepkg/73df89a73d2 Sat May 27 11:12:33 UTC 2023)
09.11. 00:04:47.593    Selected OS profile: UNIX
09.11. 00:04:47.594    Current culture: en-GB
09.11. 00:04:47.607    Removing partial custom component downloads.
09.11. 00:04:47.609    Checking for the existence of FinalSun.ini.
09.11. 00:04:47.609    FinalSun settings file exists.
09.11. 00:04:47.617    Starting background processing of INI files.
09.11. 00:04:47.618    /INI/Base does not exist, skipping background processing of INI files.
09.11. 00:04:48.112    Initializing GameClass.
09.11. 00:04:48.301    InitGraphicsMode: 1280x720
09.11. 00:04:48.314    KABOOOOOOM!!! Info:
09.11. 00:04:48.314    Type: System.EntryPointNotFoundException
09.11. 00:04:48.314    Message: LoadCursorFromFileW assembly:<unknown assembly> type:<unknown type> member:(null)
09.11. 00:04:48.315    Source: 
09.11. 00:04:48.315    KABOOOOOOM!!! Info:
09.11. 00:04:48.316    Type: System.NullReferenceException
09.11. 00:04:48.316    Message: Object reference not set to an instance of an object
09.11. 00:04:48.316    Source: clientogl
09.11. 00:04:48.316    TargetSite.Name: LogException
09.11. 00:04:48.318    Stacktrace:   at DTAClient.PreStartup.LogException (System.Exception ex, System.Boolean innerException) [0x0007a] in <297d49540c7240919b8f5290ab787910>:0 
  at DTAClient.PreStartup.HandleException (System.Object sender, System.Exception ex) [0x00001] in <297d49540c7240919b8f5290ab787910>:0 
  at DTAClient.PreStartup.Initialize (DTAClient.StartupParams parameters) [0x00567] in <297d49540c7240919b8f5290ab787910>:0 
  at DTAClient.Program.Main (System.String[] args) [0x000fb] in <297d49540c7240919b8f5290ab787910>:0 

and

09.11. 00:05:46.146    ***Logfile for Yuri's Revenge client***
09.11. 00:05:46.148    Client version: 2.11.1.0
09.11. 00:05:46.148    Loading settings.
09.11. 00:05:46.164    Failed to load a translation file. Neither /home/deck/Games/ea-app/drive_c/Program Files/EA Games/Command and Conquer Red Alert II/Resources/Translations/en/Yuri Theme/Translation.ini nor /home/deck/Games/ea-app/drive_c/Program Files/EA Games/Command and Conquer Red Alert II/Resources/Translations/en/Translation.ini exist.
09.11. 00:05:46.164    Loaded translation: English
09.11. 00:05:46.177    Initializing updater.
09.11. 00:05:46.182    Updater: Initializing updater.
09.11. 00:05:46.184    Updater config file not found - attempting to read legacy updateconfig.ini.
09.11. 00:05:46.185    Warning: No download mirrors found in updater config file or the built-in game info.
09.11. 00:05:46.185    Updater: Update mirror count: 0
09.11. 00:05:46.185    Updater: Running from: clientxna.exe
09.11. 00:05:46.186    OSDescription: Unix 6.1.52.16
09.11. 00:05:46.188    OSArchitecture: X64
09.11. 00:05:46.188    ProcessArchitecture: X64
09.11. 00:05:46.188    FrameworkDescription: Mono 6.12.0 (makepkg/73df89a73d2 Sat May 27 11:12:33 UTC 2023)
09.11. 00:05:46.189    Selected OS profile: UNIX
09.11. 00:05:46.189    Current culture: en-GB
09.11. 00:05:46.203    Removing partial custom component downloads.
09.11. 00:05:46.204    Checking for the existence of FinalSun.ini.
09.11. 00:05:46.204    FinalSun settings file exists.
09.11. 00:05:46.213    Starting background processing of INI files.
09.11. 00:05:46.213    /INI/Base does not exist, skipping background processing of INI files.
09.11. 00:05:46.219    KABOOOOOOM!!! Info:
09.11. 00:05:46.220    Type: System.TypeInitializationException
09.11. 00:05:46.220    Message: The type initializer for '<Module>' threw an exception.
09.11. 00:05:46.220    Source: Microsoft.Xna.Framework.Game
09.11. 00:05:46.220    TargetSite.Name: .ctor
09.11. 00:05:46.222    Stacktrace:   at Microsoft.Xna.Framework.Game..ctor () [0x00084] in <98409fd015ca451f9453a78e8b1c4f32>:0 
  at DTAClient.DXGUI.GameClass..ctor () [0x00000] in <2aae341393644e818c539625a0d303fa>:0 
  at DTAClient.Startup.Execute () [0x00331] in <2aae341393644e818c539625a0d303fa>:0 
  at DTAClient.PreStartup.Initialize (DTAClient.StartupParams parameters) [0x00539] in <2aae341393644e818c539625a0d303fa>:0 
09.11. 00:05:46.222    InnerException info:
09.11. 00:05:46.222    Type: <CrtImplementationDetails>.ModuleLoadException
09.11. 00:05:46.223    Message: The C++ module failed to load.

09.11. 00:05:46.223    Source: Microsoft.Xna.Framework
09.11. 00:05:46.223    TargetSite.Name: <CrtImplementationDetails>.LanguageSupport.Initialize
09.11. 00:05:46.223    Stacktrace:   at <Module>.<CrtImplementationDetails>.LanguageSupport.Initialize (<CrtImplementationDetails>.LanguageSupport* ) [0x00047] in <b5670410a7b64100af8b64f5878f5c83>:0 
  at <Module>..cctor () [0x00008] in <b5670410a7b64100af8b64f5878f5c83>:0 
09.11. 00:05:46.224    InnerException info:
09.11. 00:05:46.224    Type: System.MissingMethodException
09.11. 00:05:46.224    Message: Method contains unsupported native code assembly:<unknown assembly> type:<unknown type> member:(null)
09.11. 00:05:46.224    Source: 
09.11. 00:05:46.225    KABOOOOOOM!!! Info:
09.11. 00:05:46.225    Type: System.NullReferenceException
09.11. 00:05:46.225    Message: Object reference not set to an instance of an object
09.11. 00:05:46.225    Source: clientxna
09.11. 00:05:46.226    TargetSite.Name: LogException
09.11. 00:05:46.226    Stacktrace:   at DTAClient.PreStartup.LogException (System.Exception ex, System.Boolean innerException) [0x0007a] in <2aae341393644e818c539625a0d303fa>:0 
  at DTAClient.PreStartup.LogException (System.Exception ex, System.Boolean innerException) [0x000b6] in <2aae341393644e818c539625a0d303fa>:0 
  at DTAClient.PreStartup.LogException (System.Exception ex, System.Boolean innerException) [0x000b6] in <2aae341393644e818c539625a0d303fa>:0 
  at DTAClient.PreStartup.HandleException (System.Object sender, System.Exception ex) [0x00001] in <2aae341393644e818c539625a0d303fa>:0 
  at DTAClient.PreStartup.Initialize (DTAClient.StartupParams parameters) [0x00567] in <2aae341393644e818c539625a0d303fa>:0 
  at DTAClient.Program.Main (System.String[] args) [0x000fb] in <2aae341393644e818c539625a0d303fa>:0 

@Metadorius
Copy link
Member

I said natively, this means just running the file without any sorts of compatibility layers. You just need .NET 8 runtime for Linux installed.

@Metadorius
Copy link
Member

Oh didn't see the edit. You're still doing it wrong. Please follow what I say, I didn't say anything about Wine, .NET Framework or Mono. For running the client you need only .NET 8 runtime for Linux, that's all.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants
@melroy89 @andwan0 @QianNangong @Rampastring @zpimp @dkeetonx @Metadorius and others