Compilar código C# + DirectX con Mono en Linux

No sé si hay algún entendido de C#/Mono por aquí.

La cosa es que tengo un código fuente de un MMORPG, tanto servidor como cliente y está programado en C# y usa DirectX para el tema gráficos, aunque no es nada del otro mundo, es 2D isométrico.

Me interesaría compilarlo con Mono y hacerlo funcionar en linux porque con Wine es imposible y es un coñazo virtualizar VMWare para jugar. Además que por temas de seguridad el servidor me gustaría que se pudiese ejecutar en linux.

He intentado compilarlo tal cual. La compilación da 9 advertencias relacionadas con DirectX y 3 errores por algo mal formateado en el código, unos archivos .resx o algo así.

¿Cómo se procede en estos casos? ¿Habría que sustituir DirectX por OpenGL? ¿Hay alguna capa de compatibilidad que traduzca las llamadas?

He visto que hay una herramienta de Mono para analizar la compatibilidad, pero es antigua y está obsoleta.

En fin, cualquier orientación me vendría de perlas.

Gracias.

EDITO:

Ya tengo las cosas más o menos claras. Va a ser que el cliente se quedará como está porque no tengo ganas de reescribir la parte de OpenGL. El server casi lo tengo funcionando que es más sencillo.
¿Es compartible ese código? El servidor puedes portarlo a .NET Core. No sé cómo de acoplado estará con Mono (no he desarrollado en Mono más allá del Hello World), pero .NET Core corre perfectamente en Linux de forma "nativa". El cliente ya es más complicado por lo que comentas del OpenGL.
oMega_2093 escribió:¿Es compartible ese código? El servidor puedes portarlo a .NET Core. No sé cómo de acoplado estará con Mono (no he desarrollado en Mono más allá del Hello World), pero .NET Core corre perfectamente en Linux de forma "nativa". El cliente ya es más complicado por lo que comentas del OpenGL.


Hay un problema gordo. Es que el juego tira mucho de Windows Forms, tanto en las herramientas del servidor como en el cliente. Si a eso le añadimos las enormes dependencias de DirectX SDK...básicamente sería reescribir el juego salvo por algunos bits.
2 respuestas