Recuerda que en las ciencias informáticas un problema suele tener varias resoluciones, de igual modo nosotros te mostramos lo más óptimo y eficiente.
Solución:
Los juegos de los que habla se basan en .NET Framework y se ejecutan con Mono, que es una implementación gratuita y de código abierto de .NET Framework de Microsoft.
Debido a que estas aplicaciones están basadas en .NET, los ensamblados tienen la extensión .dll. Para que pueda ver los archivos DLL en las carpetas.
Un programa .NET diseñado para uso multiplataforma se puede ejecutar en Windows, Linux o Mac, con los mismos “binarios” (incluidos los archivos DLL que también son ensamblados), que se compilan en MSIL y necesitan un tiempo de ejecución .NET / Mono para ejecutarse. .
Tenga en cuenta que también tiene algunas aplicaciones gratuitas (no solo juegos) basadas en Mono Framework disponibles en los repositorios de Ubuntu. Por ejemplo: Tomboy.
los .dll
archivos en GameDataFolder/Managed
pertenecen a un programa de código nativo que usa Mono internamente.
El motor de juego de Unity incrusta Mono (incluso en la mayoría de las plataformas Windows).
Los ejecutables multiplataforma y las bibliotecas compartidas que se pueden ejecutar con .NET Common Language Runtime o Mono a menudo se denominan con .exe
y .dll
sufijos, respectivamente, incluso cuando no son específicos de Windows. Cuando encuentres un .dll
archivo en un programa para un sistema GNU / Linux como Ubuntu, o para cualquier sistema operativo excepto Windows, esto es generalmente por qué. La mayor parte del tiempo encuentras un .dll
en un sistema Ubuntu, la respuesta de Golboth lo explica. Pero eso no es exactamente lo que está pasando aquí.
El motor de juego de Unityque no debe confundirse con la interfaz gráfica predeterminada en la mayoría de las versiones de Ubuntu– es un popular motor de juegos multiplataforma patentado. Este motor hace no ejecutar sobre .NET Framework o Mono. En lugar de, incrusta Mono, lo que quiere decir que Mono se ejecuta encima de él. Así es como los desarrolladores escriben cualquier código que su juego necesite que no forme parte del motor de Unity.
En general, Mono puede usarse de la misma manera que se usa normalmente .NET CLR de Microsoft, para ejecutar programas completos .NET / Mono. Pero Mono también está diseñado para integrarse fácilmente en aplicaciones de código nativo, incluso para permitir la personalización de esas aplicaciones. Eso es lo que está sucediendo en la situación que está describiendo. Los archivos que está viendo no pertenecen a un programa que se ejecuta directamente sobre Mono o .NET CLR. En cambio, pertenecen a un programa de código nativo que incorpora Mono.
Cómo el motor de juegos de Unity usa Mono
El motor de juego de Unity, que está escrito principalmente en C ++, aloja su propia instancia de Mono, que no usa, y puede ser diferente, de la versión (si existe) instalada a través del administrador de paquetes de su sistema. Este tiempo de ejecución Mono incorporado no se puede utilizar para ejecutar programas .NET / Mono independientes, porque ese no es su propósito. En cambio, la parte de código nativo del motor lo usa para ejecutar código CIL. (CIL es Common Intermediate Language, que es su nombre oficial. Anteriormente se llamaba MSIL o Microsoft Intermediate Language, ya que Microsoft lo desarrolló originalmente). Los programadores que crean juegos que usan el motor Unity generalmente escriben su propio código en C #, aunque algunos otros lenguajes son compatibles.
El motor de Unity incorpora Mono incluso en Windows. Para los juegos de la Plataforma universal de Windows, y ninguna otra plataforma, utiliza Microsoft .NET Framework en lugar de Mono. Pero la mayoría de los juegos de Unity en la mayoría de las plataformas, incluidos la mayoría de los dispositivos móviles y consolas de juegos, e incluso Ubuntu y Windows, usan Mono. En algunas plataformas, IL2CPP está disponible como alternativa a Mono, y en algunas solo se admite IL2CPP. Consulte Restricciones de secuencias de comandos para obtener más detalles.
Otras situaciones donde puede ver .dll
Archivos en Ubuntu
Dos situaciones en las que es probable que veas un .dll
archivo en Ubuntu se han descrito:
- Una biblioteca compartida destinada a ser utilizada por una aplicación .NET / Mono. La respuesta de Golboth describe esto en detalle. Esto es lo que mas
.dll
s que verá en un sistema Ubuntu son. Simplemente no es lo que.dll
archivos en tuGameDataFolder/Managed
carpeta son para. - Un archivo que proporciona código que es utilizado por un tiempo de ejecución Mono incorporado para proporcionar “secuencias de comandos” para una aplicación de código nativo. Eso es lo que está pasando en este caso.
Hay otros dos casos razonablemente comunes en los que puede ver un .dll
archivo en Ubuntu:
- El compilador de .NET Core produce
.dll
archivos en lugar de.exe
archivos, incluso cuando lo que está compilando no es una biblioteca. El tiempo de ejecución de .NET Core (llamado CoreCLR) y no el .NET Framework o Mono normal, ejecuta estos archivos. .NET Core es un producto de Microsoft, pero a diferencia del .NET Framework estándar, .NET Core es multiplataforma con soporte oficial para sistemas GNU / Linux como Ubuntu, y es un software gratuito de código abierto. - A veces un
.dll
El archivo que ve en Ubuntu será solo una biblioteca de Windows. Puede ver esto si el programa se almacena en un sistema Ubuntu pero se ejecuta en Windows, o si monta una unidad de Windows en Ubuntu. También puede verlo en relación con programas que se pueden ejecutar en Ubuntu usando Wine, incluido el software que viene con Wine o que se instala automáticamente conwinetricks
para admitir otro software de Windows.
Este no es un intento de enumerar exhaustivamente todas las circunstancias en las que puede encontrar un .dll
en Ubuntu. (Por ejemplo, también podría ser una biblioteca OS / 2). Sin embargo, creo que esos cuatro casos son los más comunes.
Comentarios y calificaciones
Si te ha sido de ayuda este post, sería de mucha ayuda si lo compartes con el resto programadores de esta manera nos ayudas a difundir nuestro contenido.