Introduzione al gaming sotto Linux

Questo documento ha l'intenzione di mettere l'utente comune a conoscenza del problema del gaming multipiattaforma, esponendo i perchè e i per come i giochi win32 non possono girare sotto altri ambienti o perchè così pochi giochi vengono portati a Linux e simili. Comincerò con alcuni "Cos'è X" per poi spianare la strada nella lettura successiva. Se dopo la lettura ritieni che io abbia scritto in modo erroneo o vorresti criticare qualche punto non esitare a contattarmi, sia chiaro accetto solo critiche costruttive.
Buona lettura ;).
10 gennaio 2005
Michele Comignano e la comunità di PlayLINUX.net

- Cos'è un programma:
Un programma (e qui intendo programmi compilati) è il risultato della compilazione di dato codice sorgente, operazione svolta dai compilatori, che traduce il linguaggio scelto in linguaggio macchina (o bytecode). Sebbene esistano linguaggi di scripting (o interpretati che dir si voglia) programmi che necessitin del massimo delle prestazioni (quali altri se non i giochi!) hanno bisogno di questo processo. A seconda del sistema operativo che ha ospitato il processo di compilazione, dato programma sarà eseguibile solo su quel sistema operativo in quanto il bytecode sarà generato per sfruttare chiamate di sistema del sistema operativo in questione. Ecco perchè un programma compilato sotto piattaforme win32 non può girare nativamente (senza l'uso di artifici quali wine o cedega) sotto Linux e viceversa. Per questo è necessaria l'operazione di porting che verrà illustrata di seguito. Il porting risulta ancora più difficile quando se il passaggio va effettuato da un'architettura (x86=dal 386 ai PentiumIV o Athlon XP, ia64=i nuovi processori a 64bit, ppc=powerpc i processori dei Mac) all'altra dove il porting si compilaca e non riguarda più solo le librerie ma anche le chiamate di sistema più complesse.

- Cos'è Linux:
Siamo soliti chiamare amichevolmente Linux tutti quei sistemi operativi aventi Linux come kernel (il cuore del sistema), una serie di applicazioni e utilità della GNU fundation come contorno e una miriade di altri programmi per dessert. C'è chi vuole chiamarlo GNU/Linux, ma cosi leveremmo merito ad altre applicazioni molto importanti, quindi preferisco chiamarlo semplicemente Linux riconoscendo comunque tutto il merito della fondazione GNU e a Richard Stallman, il filosofo del software libero. Il software libero non è altro che software prodotto da centinaia di migliaia di programmatori sparsi per la terra che viene rilasciato non solo in forma bytecode ma anche in forma codice sorgente. Questo ne amplia l'utilizzo e consente una collaborazione stretta tra programmatori, nonchè la condivisione delle conoscenze. Esistono particolari licenze che tutelano il software libero impedendo ad esempio da me di compilare il OpenOffice.org, chiamarlo ComickOffice.net e venderlo a 600EURO dichiarandolo un mio lavoro.
Linux rappresenta l'apoteosi della libertà informatica, possiamo scegliere tutto, possiamo avere un sistema operativo fatto su misura (e per su misura non intendo i colori dei pulsanti o lo sfondo del desktop) con solo ciò che serve, e possiamo collaborare noi stessi allo sviluppo di quei programmi che usiamo più frequentemente. Linux lo troviamo in forma di distribuzioni, ovvero i prodotti di aziende o singoli individui che raccolgono software libero in giro per la rete e lo mettono in sieme come meglio credono. Quindi chiunque può crearsi il suo sistema dasato su Linux anche da zero.

- Cos'è un videogioco:
Vi sembrerà una banalità, ma è importante sapere almeno superficialmente cosa sia un videogioco e come funzioni.
I videogiochi sono normalissime applicazioni, programmi paragonabili in tutto e per tutto ad ogni altra aplicazione, dal gestionale ad CAD al software di videoscrittura. La peculiarità dei videogiochi è quella di simulare situazioni reali o imaginarie tali da calare il giocatore in un ambiente nuovo e inaccessibile nella vita reale e ingenerare così divertimento (o terrore, vedi DoomIII ;) ) o più in generale "intrattenimento".
Spesso i videogiochi utilizzano particolari librerie (una libreria è un insieme di utilità prefabbricate che possono facilitare la vita ad uno sviluppatore) che altri programmi non usano. Quelle maggiormente usate nei giochi sono generalmente librerie sonore, grafiche e di input. Esistono molte di queste librerie, ed è lo sviluppatore a scegliere quella che più si addice al suo stile (o alle richieste del mercato) per poi farne la base del proprio progetto.
Sebbene esistano molte di queste librerie, oggi giorno esistono due principali "blocchi" contrapposti, da una parte le DirectX (grafica, sonoro e input) dall'altra una serie di librerie libere, ovvero le cui specifiche sono disponibili a chiunque e chiunque è in potenza di crearne una propria implementazione (per implementazione si intende la creazione della libreria vera e propria seguendo le specifiche pubbliche); alcune di queste librerie sono: OpenGL (grafica), SDL (grafica, sonoro, input), OpenAL (sonoro) e molte altre ancora. Queste ultime hanno la peculiarità di avere implementazioni su molti sistemi operativi, mentre le DirectX di Microsoft hanno un unica implementazione sotto un unico sistema operativo che è facile intuire e non avendo accesso alle specifiche è molto difficile crearne nuove implementazioni su altri sistemi operativi.

- Cos'è il porting
Si chiama porting l'operazione di modifica del codice sorgente di un software inizialmente progettato sotto una determinata piattaforma per consentirne il funzionamento anche su piattaforme differenti. Il porting di un'applicazione può essere più o meno complicato a seconda della complessità dell'applicazione da "portare" e dalle librerie di cui la stessa fa uso. Portare un programma che faccia uso di OpenGL, SDL e OpenAL progettato sotto ambiente win32 ad esempio potrebbe addirittura risultare una banalità per un programmatore esperto, mentre il porting di un gioco che sfrutti DirectX richiederebbe molto più lavoro in quanto ogni chiamata di funzione DirectX dovrebbe essere sostituita con una chiamata altarnativa ed equivalente di una libreria "aperta".

Per questi motivi tutti i giochi presenti sotto Linux hanno il porting sotto altre piattaforme (win32 compresa), mentre pochi, davvero pochi dei giochi win32 hanno il porting sotto Linux o Mac, proprio perchè l'operazione risultarebbe quantomai difficoltosa nella presenza di librerie proprietarie Microsoft.

- Drivers video, DirectX, librerie libere:
Non ho ne le conoscenze nel l'autorità di fare un simile confronto, ma documentandomi anche presso acluni programmatori di videogiochi e leggendo in giro per internet (è davvero grande, si trova di tutto! :D ) posso porporvi alcune soluzioni. Se sei uno sviluppatore e non sei d'accordo con la seguente esposizione contattami, sarò ben lieto di discuterne e eventualmente cambiarne il contenuto. Se sei un normale lettore prendi con le molle quanto sto stai per leggere.
DirectX prodotte dalla famosa azienda americana hanno a corredo un'ambiente di sviluppo davvero potente che semplicfica e velocizza le operazioni di sviluppo. Inoltre le DirectX da sole forniscono librerie sia per la grafica che per il suono che per l'input. Inoltre il 90% e più (ma mi sa molto più) dei videogiocatori sulla terra usano un sistema operativo dell'azienda stessa. Alla luce di questo chi sviluppa solo per i soldi sceglie senza esitazione la soluzione Microsoft. OpenGL invece è ritenuta una libreria particolarmente complessa da utilizzare e inoltre fornisce solo soluzioni per la grafica, implicando l'utilizzo di altre librerie se si vuole utilizzare un particolar effetto audio un particolare metodo di input. Esiste tuttavia una libreria, SDL (simple direct media layer) che vuole semplificare lo sviluppo dei videogiochi ed èproprio così. Non a casa alcuni (per non dire tutti) tra i più e meno noti videogiochi portati a Linux ne fanno largo uso (per citarne alcuni: doom3, ut2004, america's army, ...).
In ogni caso le opinioni sono contrastanti. Spesso chi sviluppa con un metodo è perchè la sua formazione è avvenuta con quel metodo e studiare un nuovo metodo può risultare una perdita di tempo e di soldi (i soldi... sono loro che comandano).

Oltre alla questione DirectX, l'ostacolo più grosso alla diffusione del gaming sotto Linux e la cattiva qualità dei drivers Linux di alcuni produttori di GPU (graphic processing unit, schede video insomma) che per chi non lo sapesse fanno gran parte del lavoro quando si tratta di 3D in tempo reale. Dopo il crollo 3dfx e Matrox esistono due principali produttori di schede video, Nvidia e ATi, entrambe diffusissime tra gli utenti win32 dove vantano prestazioni analoghe grazie ai drivers win32 forniti che sfruttano tutta la potenza dei sispositivi hardware via via commercializzati. Da una lato Nvidia offre drivers Linux ad altissimo livello con prestazioni identiche se non superiori (qui c'è il merito del sistema operativo) a quelli win32, dall'altra c'è ATi che da poco ha cominciato a sviluppare sul serio drivers Linux che spesso danno problemi e in ogni caso limitano l'hardware. Dal momento che nelle fasce basse le schede video ATi sono più diffuse, questo è un problema per chi decida di migrare ad Linux senza trascurare l'aspetto videoludico. Tuttavia dalle ultime indiscrezioni nuovi drivers ATi Linux migliori sono in arrivo per la gioia di tutti i suoi clienti.

Dunque giocare e sviluppare videogiochi sotto Linux sembrerebbe poco conveniente... ora forse, ma col crescente interesse dei produttori hardware il futuro si profila quantomai roseo.

Ora illustrerò una serie di quelli che secondo me sono i vantaggie e gli svantaggi dell'uso di Linux come piattaforma videoludica.

- Wine/Cedega:
L'architettura più diffusa nei PC moderni è quella x86 32 bit, la stessa usata da tutti i vari Windows e quella su cui Linux è più diffuso. Proprio questa condivisione dell'architettura più utilizzata per questi due sistemi operativi, ha reso possibile lo sviluppo di un grande progetto che va sotto il nome di Wine (acronimo ricorsivo di Wine is not an emulator). Wine in soldoni permette di avviare applicazioni native Windows sotto ambienti *nix (ovvero unix like: linux, bsd, ...) su architetture x86. Wine non è però un emulatore, proprio per il fatto che funziona solo negli stessi ambienti hardware in cui funzionano i sistemi Windows. Più correttamente Wine va definito come un implementazione libera delle API win32, ovvero di tutte quelle librerie win32 a cui sono linkati tutti i programmi per tali sistemi.

I livelli raggiunti dal progetto Wine sono incredibili: programmi con Macromedia Flash o MS Office riescono a girare senza intoppi sotto Linux proprio grazie a Wine. La cosa positiva del progetto Wine è che non solo rende possibile l'utilizzo di programmi win32 sotto sistemi *nix-x86, ma fornisce agli sviluppatori tutto il necessario per eventuali porting nativi. Unreal Tournement 2004 ad esempio contiene codice del progetto Wine nella sua verione nativa Linux e Macromedia sta usando anch'essa i sorgenti di Wine per il port tutt'ora in corso di Flash a Linux.

Anche molti giochi sono giocati con Wine. Questo insieme si limita tuttavia a giochi basati OpenGL, che spesso tra l'altro funzionano perfettamente, proprio perchè OpenGL è una libreria nativa Linux e Wine non fa altro che dirigere tutte le chiamate OpenGL di un programma alla libreria nativa del sistema in uso. Half-Life e i suoi mod ad esempio funzionano molto bene sotto Linux tramite Wine.

Alcuni anni fa Transgaming ha intravisto in wine una nuova possibilità, ovvero l'implementazione delle librerie DirectX, quelle usate in moltissimi giochi Windows. Inizialmente poteva sembrare un azzardo, ma ben presto lo sviluppo si rivelò promettente e ad oggi giochi come Half-Life 2 possono essere giocati con Cedega. Cedega non è altro che un'estensione commerciale di Wine che aggiunge appunto il supporto DirectX fino alla 9.

Tuttavia questo non è un progetto liberò e l'utilizzo di questo software richiede una quota mensile che non tutti vogliono pagare sebbene la qualità di Cedega sia davvero buona. Esiste comunque una versione CVS la cui pubblicazione è sempre distanziata da quella commerciale e che a molti da problemi di compilazione.

- Vantaggi per l'utente:
Ogni videogioco viene eseguito sul sistema operativo. Linux è da molti considerato un sistema più sicuro e più stabile di altri (di un'altro in particolare :P ) e l'utilizzo di un sistema stabile e sicuro non può che migliorare in generale l'esperienza di gioco. E' gratis: checchè se ne dica, l'utente comune non si rivolge a RedHat o Novell per la messa a punto del proprio PC Linux, e per giocare con Linux non servono particolari strumenti a pagamento ma tutto ciò che serve è compreso in una qualunque distribuzione gratuita. I giochi vanno comunque pagati, quelli commerciali si intende. Per l'utente più smaliziato c'è la possibilità di creare un sistema operativo ottimizzato (vedi Gentoo, Linux from scratch) per il proprio hardware, con tutte gli accorgimenti che una compilazione i686 generica non offrirebbe, e un conseguente guadagno di prestazioni che in un videogioco 3D sono fondamentali.

I SESSANTAQUATTRO BIT: recentemente è cominciata la diffusione dei processori a 64 bit che a parità di clock hanno una potenza di calcolo ben superiore ad un analogo a 32bit. Come sempre il software libero è arrivato per primo e la maggior parte delle distribuzioni precompilate offrono già pacchetti compilati per processori 64bit che ne sfruttano tutta la potenza in fase di esecuzione. Lo stesso è per i drivers video che vengono ditribuiti da Nvidia anche in versione 64bit e presto ATi farà lo stesso. Di alcuni giochi anche commerciali abbiamo il compilato Linux a posta per processori a 64bit. Non accade lo stesso ad esempio per Windows: ho usato volutamente win32 in precedenza proprio per questa fatto, infatti sebbene esista la versione 64bit di Windows XP, questa ha una diffusione limitatissima e spesso vedo offerte di nuovissimi computer con processore Athlon64 con Windows XP home edition preinstallato. Inutile dire che quella è una versione compilata 32bit che gira solo in virtu della retrocompatibilità dei suddetti processori e mai ne sfruttarà il registro a 64bit. I giochi stessi per Windows vengono sempre col bytecode compilato per i 32bit.

- Svantaggi per l'utente:
I giochi nativi per Linux sono una minoranza della totalità e si limitano ai giochi che utilizzano le librerie libere (questo non significa che sono giochi scadenti, vedi tutta la produzione di Id software, quelli di Doom III, i vari Unreal, Neverwinter Nights e molti altri). Spesso nemmeno tutti questi giochi hanno il port Linux, addirittura videogiochi basati su motori grafici già portati a Linux in origine non hanno mai visto la luce accanto al pinguino. Alcuni drivers per i dispositivi video non sono di grande qualità.

- Tirare le somme:
Spero di essere stato chiaro e di aver esposto quanto meglio il "problema" nonchè di aver sensibilizzato giocatori e sviluppatori ad un maggiore interesse nei confronti di Linux e più in generale delle immense possibilità che il software libero può offrire a utenti e sviluppatori.
Se ho scritto qualcosa di cui voui discutere o proporre nuove solizioni non esitare a contattarmi per parlarne in modo COSTRUTTIVO o vieni nel forum di PlayLINUX.net dove tanti altri utenti sono pronti a discutere di questi argomenti.

Note: Copyright (c) 2005 PlayLINUX.net.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
Texts. A copy of the license is available here.

Articoli correlati

  • Ecologia della vita quotidiana e computer
    Ecodidattica
    Linux Lubuntu per resuscitare i vecchi computer

    Ecologia della vita quotidiana e computer

    Non volete gettare il computer su cui è istallato Windows XP? Ecco alcuni consigli per evitare l'obsolescenza tecnologica usando il software giusto.
    29 marzo 2019 - Alessandro Marescotti
  • Linux orientato alla didattica
    Ecodidattica
    So.Di.Linux

    Linux orientato alla didattica

    Un ottimo esempio anche di green economy perché consente - essendo un software "leggero" - di riutilizzare computer ancora funzionanti ma poco potenti. Computer che rischiano di andare in discarica ma che con Linux tornano a "nuova vita"
    5 dicembre 2016 - Alessandro Marescotti
  • Richard Stallman a Firenze: Software libero ed economia solidale per difendere democrazia e libertà
    CyberCultura
    Stallman, chi era costui? :-)

    Richard Stallman a Firenze: Software libero ed economia solidale per difendere democrazia e libertà

    Per chi non è avvezzo al sistema operativo del "pinguino", il nome di Stallman non dice nulla. E per chi non segue le vicende del "software libero", o non sa che la Rete può diventare un'arma a doppio taglio, difficilmente avrà partecipato all'importante e seguitissimo incontro che si è tenuto a Firenze lo scorso 14 settembre 2013; ospite illustre, appunto, Richard Stallman.
    25 settembre 2013 - Roberto Del Bianco
  • Dal pensiero strade per innovare
    CyberCultura
    Tesi del Master "Scienza Tecnologia e Innovazione"

    Dal pensiero strade per innovare

    Software e comunicazione digitale, circolazione della conoscenza ed esigenze di tutela della proprietà intellettuale
    28 gennaio 2010 - Lidia Giannotti
PeaceLink C.P. 2009 - 74100 Taranto (Italy) - CCP 13403746 - Sito realizzato con PhPeace 2.7.26 - Informativa sulla Privacy - Informativa sui cookies - Diritto di replica - Posta elettronica certificata (PEC)