Risposte:
I giochi di cui stai parlando sono basati su .NET Framework e in esecuzione con Mono, che è un'implementazione gratuita e open source di .NET Framework di Microsoft.
Poiché queste applicazioni sono basate su .NET, gli assembly hanno estensione .dll. Quindi puoi vedere i file DLL nelle cartelle.
Un programma .NET progettato per l'uso multipiattaforma può essere eseguito su Windows, Linux o Mac, con gli stessi "binari" (comprese le DLL che sono anche assembly), che sono compilati in MSIL e richiedono un runtime .NET / Mono per essere eseguiti .
Nota che hai anche alcune applicazioni gratuite (non solo giochi) basate su Mono Framework disponibili nei repository Ubuntu. Ad esempio: Tomboy.
.dll
e .so
, sono prive di significato in Linux. Sono usati solo per nostra comodità.
gcc
non troverà una libreria fornita come ad esempio -lm
se il nome del suo file non termina con .so
oo .a
varianti della versione.
I .dll
file in GameDataFolder/Managed
appartengono a un programma di codice nativo che utilizza Mono internamente.
Gli eseguibili multipiattaforma e le librerie condivise che possono essere eseguite da .NET Common Language Runtime o Mono sono spesso denominati .exe
e con .dll
suffissi, anche quando non sono specifici di Windows. Quando trovi un .dll
file in un programma per un sistema GNU / Linux come Ubuntu o per qualsiasi sistema operativo tranne Windows, di solito è questo il motivo. La maggior parte delle volte trovi un .dll
in un sistema Ubuntu, la risposta di Golboth lo spiega. Ma non è proprio quello che sta succedendo qui.
Il motore di gioco Unity - che non deve essere confuso con l'interfaccia grafica predefinita nella maggior parte delle versioni di Ubuntu - è un popolare motore di gioco multipiattaforma proprietario. Questo motore non funziona su .NET Framework o Mono. Invece, incorpora Mono , vale a dire che Mono scorre sopra di esso. Questo è il modo in cui gli sviluppatori scrivono qualsiasi codice di cui il loro gioco ha bisogno e che non sia già parte del motore Unity.
In generale, Mono può essere utilizzato allo stesso modo in cui viene normalmente utilizzato il CLR .NET di Microsoft, per eseguire programmi .NET / Mono completi. Ma Mono è anche progettato per essere facilmente integrabile in applicazioni di codice nativo , anche per consentire la personalizzazione di tali applicazioni . Questo è ciò che sta accadendo nella situazione che stai descrivendo. I file visualizzati non appartengono a un programma che viene eseguito direttamente su Mono o su CLR .NET. Invece appartengono a un programma in codice nativo che incorpora Mono.
Il motore di gioco Unity, che è scritto principalmente in C ++, ospita la propria istanza di Mono, che non utilizza - e potrebbe essere diversa dalla - versione (se presente) installata tramite il gestore di pacchetti del sistema. Questo runtime Mono incorporato non può essere utilizzato per eseguire programmi .NET / Mono autonomi, perché non è questo lo scopo. Invece, la parte di codice nativa del motore lo utilizza per eseguire il codice CIL. (CIL è Common Intermediate Language , che è il suo nome ufficiale. In precedenza era chiamato MSIL o Microsoft Intermediate Language, da quando Microsoft lo ha sviluppato in origine.) I programmatori che realizzano giochi che utilizzano il motore Unity di solito scrivono il proprio codice in C #, anche se alcune altre lingue sono supportati.
Il motore Unity incorpora Mono anche in Windows. Per i giochi della piattaforma Windows universale - e nessun'altra piattaforma - utilizza Microsoft .NET Framework anziché Mono. Ma la maggior parte dei giochi Unity sulla maggior parte delle piattaforme, inclusa la maggior parte dei dispositivi mobili e delle console di gioco, inclusi Ubuntu e Windows, usa Mono. Su alcune piattaforme IL2CPP è disponibile in alternativa a Mono e su alcune è supportato solo IL2CPP. Vedi Restrizioni agli script per i dettagli.
.dll
file su UbuntuSono .dll
state descritte due situazioni in cui è probabile che tu veda un file su Ubuntu:
.dll
s vedrai su un sistema Ubuntu. Semplicemente non capita a cosa servono i .dll
file nella tua GameDataFolder/Managed
cartella.Esistono altri due casi ragionevolmente comuni in cui è possibile visualizzare un .dll
file su Ubuntu:
.dll
file anziché .exe
file, anche quando ciò che si sta compilando non è una libreria. Il runtime .NET Core (chiamato CoreCLR) e non il normale .NET Framework o Mono, esegue questi file. .NET Core è un prodotto Microsoft, ma a differenza del .NET Framework standard, .NET Core è multipiattaforma con supporto ufficiale per sistemi GNU / Linux come Ubuntu ed è un software open source gratuito ..dll
file che vedi su Ubuntu sarà solo una libreria di Windows. È possibile che ciò venga visualizzato se il programma viene archiviato in un sistema Ubuntu ma viene eseguito su Windows o se si monta un'unità Windows in Ubuntu. Potresti anche vederlo in relazione a programmi che possono essere eseguiti su Ubuntu utilizzando Wine , incluso il software fornito con Wine o che si installa automaticamente winetricks
per supportare altri software Windows.Questo non è un tentativo di elencare esaurientemente tutte le circostanze in cui potresti riscontrare un .dll
su Ubuntu. (Ad esempio, potrebbe anche essere una libreria OS / 2. ) Tuttavia, credo che questi quattro casi siano i più comuni.