Archivio > Linux e Open Source, Fuori tema > Singolo: Emulare Lineage 2 su Linux

Emulare Lineage 2 su Linux

Quante volte avete provato ad emulare Lineage 2 (voce su Wikipedia) su Linux, e non avete mai ottenuto risultati soddisfacenti?

Io ci ho perso un paio di giorni. Non sono riuscito a giocare, ma ho scoperto alcune cose interessanti che potrebbero tornarvi utili.

Wine o Cedega?

[Immagine] Lineage 2 è un gioco di ruolo online molto conosciuto in Korea e in America per le sue caratteristiche fantasy/medioevali. Ha conosciuto una fama notevole a partire da Ottobre 2003, riportando 1.5 milioni di videogiocatori in tutto il mondo nel Settembre 2004.

Innanzi tutto, è bene sapere che differenza c’è fra le due applicazioni. Wine (Wine Is Not Emulator, acronimo ricorsivo) è decisamente più completo, e permette di utilizzare gran parte delle applicazioni per Windows ricostruendo le sue API. Cedega (voce su Wikipedia) è un fork più specifico, in particolare si occupa di emulare al meglio le librerie DirectX per il rendering 3d: è quindi particolarmente adatto per emulare i videogiochi.

In realtà, sarete probabilmente costretti ad utilizzare entrambi i motori per riuscire a completare correttamente le operazioni di installazione/patching. Esistono, comunque, howto specifici per Wine, in particolare è stato relativamente utile quello disponibile su WineHQ.

Wine: il problema

Il problema di Wine riguarda specialmente le configurazioni del mouse: utilizzando una versione di Wine ufficiale il nostro cursore tende a gravitare sempre verso il centro, togliendoci la possibilità di muoverci liberamente nello schermo. Ovviamente qualcuno ha pensato bene di creare una patch (No mouse centering hack). E’ anche possibile scaricare una versione già patchata di Wine, che necessita solo ed esclusivamente di essere compilata. Per patchare Wine, dopo aver scaricato i sorgenti ufficiali, eseguite i seguenti comandi:

$ cd [Cartella dell'archivio scompattato con i sorgenti di wine]
$ cd dlls/dinput
$ patch -i mouse_center_hack.diff # La patch deve essere in dlls/input

Cedega: il problema

[Immagine] Emulare Lineage 2 su Linux risulta a volte molto complicato, e spesso è necessario fare affidamento sia a Wine che a Cedega per riuscire a giocare correttamente.

Su Cedega (attualmente siamo alla versione 5.2.x) non avrete bisogno di patchare alcunchè, basterà semplicemente installare l’applicazione (sono disponibili pacchetti .rpm, .deb, ecc…). Ricordate che è software commerciale, e quindi deve essere comprato. Potete comunque utilizzare WineX, che è l'equivalente gratuito di Cedega, ma non dispone della GUI (Graphical User Interface - Interfaccia Grafica) e di alcune funzionalità (approfondimenti su volalibero.it).

Il problema di Cedega è che spesso non riesce ad emulare le patch dei server unofficial, e quindi per quelle è necessario sfruttare Wine.
Una volta partito il gioco, inoltre, potreste avere problemi nel visualizzare alcune armature. Niente di grave insomma, ma considerate sempre Wine come alternativa a ciò che Cedega in quanto fork non può fare.

I problemi comuni

Entrambi i progetti tuttavia condividono, direttamente o non, gli stessi problemi.

  • Ogni distro è una storia

    Ogni distribuzione ha i propri pregi, i propri difetti, le proprie caratteristiche. E’ inevitabile quindi che anche i risultati di un’emulazione siano diversi. Sulla pagina di Lineage II relativa al database di WineHQ troverete alcune informazioni più specifiche al riguardo. In particolare, vi è una lista di distribuzioni su cui è stato effettuato del testing (cliccate su [Show] per visualizzare la documentazione relativa al vostro SO Linux.

  • Hardware

    E’ facile riscontrare problemi anche fra chi condivide le stesse scelte nell’ambito della distribuzione Linux utilizzata. Questo è dovuto al fatto che Lineage 2 richiede driver ed hardware aggiornato, in particolare per quel che concerne le schede video. Io ho una nVIDIA GeForce 5600, e con gli ultimi driver 9629 non ho mai avuto problemi. E voi?

  • Questioni di shard

    Ogni shard necessita delle opportune modifiche nella cartella "system/" della vostra copia di Lineage 2. E’ evidente quindi che a seconda del server variano anche le possibilità di corretto funzionamento del gioco. Con NSG Servers il client è partito al primo colpo.

  • Chronicle? GameGuard!

    Se la memoria non mi inganna, a partire dalla Chronicle 3 è stato introdotto un nuovo sistema anti-hacking, di nome GameGuard, che è un vero e proprio demonio per noi poveri utenti Linux alle prese con una difficile emulazione. Nella maggior parte dei casi (mio compreso) GG resta l’unico, purtroppo impossibile, ostacolo da superare.

Suggerimenti e consigli

In quei due giorni (oserei dire mal spesi…) ho appuntato quei procedimenti che consideravo utili ai fini di una corretta emulazione del gioco. Cercherò di suddividerli per stato.

Installazione

[Immagine] L'emulazione di Lineage 2 si suddivide in quattro fasi principali: Installazione, Aggiornamento ufficiale, Aggiornamento non-ufficiale e Avvio.

E’ preferibile un’installazione via Wine, poichè con Cedega può capitare di ottenere qualche oscuro errore relativo al registro di sistema. Tuttavia, anche con Cedega l’installazione va sostanzialmente a buon fine.
Un consiglio che posso dare a voi temerari che mi leggete, è quello di provare ad installare il gioco su Windows, e copiare la cartella di installazione presente nella directory dei programmi (es. "C:\Programmi\Lineage II\") in quella di Wine (es. "~/.wine/drive_c/Program Files/") o Cedega (es. "~/.cedega/$GameFolder/c_drive/Program Files/").

Se avete optato per Wine, allora dovete prima abilitare il No Mouse Centering Hack (ricordate? Ne abbiamo parlato qualche riga fa). Ecco il procedimento:

  1. Se avete una preesistente directory di configurazione di wine (per intenderci, "~/.wine"), cancellatela o rinominatela (io vi consiglio la seconda, così eventualmente fate un backup dei programmi installati in "Program Files").

    $ cd ~
    $ mv .wine .wine.old # Rinomina ".wine" in ".wine.old"
  2. A questo punto dovreste avere installato il nuovo wine patchato. Se non lo avete già fatto, seguite l’howto su WineHQ, che riporto semplificato qui:

    $ cd [Cartella dell'archivio scompattato con i sorgenti patchati]
    $ ./configure
    $ make depend && make
    $ sudo make install # Oppure "sudo checkinstall"
  3. $ winecfg

    Questo comando creerà la nuova cartella "~/.wine" con tutti i files di configurazione.
    Ecco i miei settaggi principali:

    • Applications -> Windows Version -> Windows XP
    • Graphics -> [Senza spunta] Allow DirectX apps to stop the mouse leaving their window
    • Graphics -> [Con spunta] Emulate a virtual desktop (io ho messo 1024×768, ma dipende dalla vostra risoluzione)
  4. $ regedit

    Se tutto andrà bene vi si aprirà il registro di sistema di Windows.
    A questo punto, dirigetevi in HKEY_CURRENT_USER\Software\Wine, e create una nuova chiave di nome DirectInput.
    Fatto ciò, dentro di essa inserite due tipi stringa, di nome Mouse_Hack e No_Mouse_Center, ed applicate ad entrambi il valore TRUE.
    Grazie a questa nuova chiave nel registro di sistema, il mouse smetterà di accentrarsi.

Aggiornamento ufficiale

L’aggiornamento dovrebbe funzionare sia con Wine che con Cedega senza alcun tipo di errore. Per lanciare "LineageII.exe", potete dare questi comandi:

$ # Con Wine
$ wine LineageII.exe
$ # Con Cedega
$ cedega -gddb LineageII.exe

Aggiornamento non ufficiale in base allo shard

A questo punto è bene evidenziare che Lineage 2 NON funziona sui server ufficiali. Gli shard spesso si preoccupano di sostituire i files in "system/" per eludere in parte il controllo GG. Non ci credete? Chiede su #lineage2linux @ Freenode. ;-)

Per patchare il gioco e giocare sul vostro server amatoriale preferito vi consiglio di utilizzare Wine. Cedega spesso emula solo le librerie .dll necessarie al 3d, mentre Wine bene o male contiene tutte le librerie di sistema più comuni. Se volete provare con Cedega, copiate in "$Drive_C/Windows/system32/" tutte le librerie che vi richiede il client unofficial. Potete prelevarle dalla directory di Wine (es. "~/.wine/drive_c/Windowssystem/32/") o anche direttamente dall’hard disk/partizione in cui risiede Windows (es. "C:\Windows\system32\").
Siccome non è una cosa scientificamente testata, use at your own risk.

Avvio del gioco

A questo punto, siamo pronti per far partire (con una buona dose di speranza, di quella che muore per ultima) il nostro buon vecchio Lineage 2.

Se usate Wine assicuratevi di farlo partire con l’eseguibile generato dalla versione patchata: in teoria potreste utilizzare due differenti versioni di Wine, basta scegliere un percorso diverso nella compilazione:

$ ./configure --prefix=/usr/local # Installa wine in /usr/local

Se invece usate Cedega, ecco qualche consiglio per la configurazione del profilo:

  • General -> Winver -> winxp
  • General -> Engine Version -> 5.2
  • General -> [Senza spunta] DXGrab
  • General -> Desktop -> 1024×768 (dipende dalla vostra risoluzione)

Infine, è ora di introdurre L2EncDec, un tool che ci torna utile per creare files "l2.ini" personalizzati ed adeguati alle nostre esigenze. In questo caso, essendo Linux users, le nostre esigenze sono tante, e urge soddisfarle (ambiguo, eh?). Per ora l’unico file di configurazione che ha sempre funzionato senza problemi è stato quello postato da A2K su WineHQ. Ovviamente, a voi interessa solo cambiare il parametro ServerAddr, il resto delle impostazioni riguardano rendering 3d e non.

Per decodificare:

$ cd [Cartella dell'archivio scompattato con l'eseguibile l2encdec]
$ ./l2encdec -d [l2.ini da decodificare]

Per decodificare il file l2.ini originale:

$ cd [Cartella dell'archivio scompattato con l'eseguibile l2encdec]
$ ./l2encdec -l [l2.ini originale da decodificare]

Per codificare un file l2.ini:

$ cd [Cartella dell'archivio scompattato con l'eseguibile l2encdec]
$ ./l2encdec -e [metodo] [l2.ini da codificare]

In quest’ultimo caso, l’applicazione ci offre alcuni metodi di codifica: 111, 120, 121, 211, 212, 411, 412, 413. Personalmente ho sempre utilizzato l’ultimo, il 413, e Lineage 2 (C5) lo ha letto correttamente senza riportare errori.
Per maggiori informazioni sulle possibilità di l2encdec, lanciare il comando col flag --help.

Gli errori

Come ho già detto, la presenza o no di errori dipende dalla cartella "system/" di Lineage. Questo è dovuto al fatto che la cartella ospita il sistema di prevenzione GameGuard ed è quella che più spesso subisce modifiche in seguito a patch non ufficiali: insomma, sostanzialmente si occupa di avviare il client, effettuando vari controlli sulle librerie DirectX e su eventuali tentativi di hacking. Un bel problema.

Dopo alcuni tentativi ho teorizzato la suddivisione degli errori in quattro fasi. Non scambiate per oro ciò che vi dico, consideratela piuttosto un’analisi "empiristica" di un’eventuale - tragica - situazione in cui il gioco si chiude con un misterioso messaggio di errore.

Fase 1

Nella prima fase, è possibile che avviando "l2.exe" semplicemente non accada nulla. In questo caso, ho notato che spesso il problema deriva dal file "Engine.dll", che probabilmente non è adatto alla configurazione già esistente in "system/". Provate a lanciare l’upgrade ufficiale per sovrascrivere il file, o prelevatelo da una preesistente cartella "system/" (io mi tengo sempre una copia di Lineage 2 con i files originali, dopodichè la duplico e metto le varie patch non ufficiali).

Fase 2

Nella seconda fase, il messaggio di errore appare pochi secondi dopo la splash image del gioco. Questo può essere causato dalle librerie "Engine.dll" e/o "NWindow.dll". Considerate valida la soluzione proposta per la prima fase.

Fase 3

Nella terza fase, il messaggio di errore appare alcuni secondi dopo la splash image del gioco (dopo, cioè, che la schermata diventa nera). In questo caso le motivazioni valide sono tante (alcune volte le indicazioni dei crash si rivelano utili per comprendere la fonte del problema):

  • Driver: I driver della nostra scheda video potrebbero realmente non essere aggiornati e/o rilevati correttamente dal gioco. Se possibile, aggiornateli alla versione più recente.
  • DirectX: Il gioco non riconosce le librerie DirectX installate e non si avvia, chiedendo di aggiornare l’engine all’ultima versione (in questo caso la 9.x).
  • l2.ini: Wine e/o Cedega spesso non interpretano correttamente le impostazioni video in questo file. Provate col file l2.ini modificato da A2K (sopra ho spiegato come fare).
  • Librerie .dll: Come al solito, potrebbe trattarsi anche delle librerie in "system/": ad esempio "Engine.dll" e/o "NWindow.dll", ma non escludete le altre. Provate ad aggiornare dal server ufficiale, e osservate se il gioco vi dà lo stesso errore. Se disponete di cartelle "system/" ottimizzate per altri shard, provate a sostituire file per file, annotandovi le rispettive "reazioni" del client (messaggi di errore relativi alle varie fasi e non).

Fase 4

[Immagine] Prima di cantare vittoria, sperate di non ottenere un errore GameGuard sopra la schermata di login, dopo l'avvio del client. Io non sono ancora riuscito a risolvere! In quest’ultima fase il gioco si avvia, lasciandovi sperare ciò che non è. Appare la schermata di login, ma sopra ai campi di testo "ID" e "PWD" compare un messaggio di errore riferito a GG (strano eh?), con relativo codice di errore. Personalmente, io mi sono fermato a questa fase, ottenendo i codici di errore 124 e 610. Su internet c’è qualche riferimento utile (come ad esempio un topic sul forum ufficiale, e qualche articolo scritto nelle comunità di appassionati), anche se generalmente per noi linuxiani le possibilità sono limitate. Comunque, possiamo:

  • Cancellare la cartella "GameGuard/" in "system/", e sperare che - dopo aver lanciato il client - il gioco ricrei correttamente tutti i files necessari.
  • Cancellare il contenuto della cartella "GameGuard" in "system/".
  • Effettuare sostituzioni di "GameGuard/" e "GameGuard.des" con versioni provenienti dalla cartella "system/" originale, o da quelle patchate per i server non ufficiali.

Extra

[Immagine] Delle quattro fasi sopra citate, spesso le prime tre vengono superate senza problemi. All'avvio del gioco invece, è molto frequente la segnalazione di errori di rendering e/o relativi a GameGuard.

Su WineHQ esistono le cosiddette No-GG Patch, che teoricamente dovrebbero occuparsi di eludere il controllo GG effettuato dal client. Sostanzialmente sono versioni modificate delle librerie .dll - già citate più volte - contenute in "system/". A qualcuno funzionano, ai restanti purtroppo no: anche in questo caso dipende da una serie di fattori che bene o male coincidono con quelli già elencati all’inizio dell’articolo.

Se nessuna di queste operazioni va a buon fine, allora mettetevi l’anima in pace e tornate a giocare a Frozen-Bubble.

Conclusioni

Purtroppo Wine ed i suoi fratellini non riescono ad emulare tutto ciò che gira nativamente per Windows, e per queste operazioni così delicate la pazienza non è mai troppa. Giochi come World of Warcraft girano tranquillamente alla gran parte dei videogiocatori linuxiani, e su internet si trovano veramente tonnellate di informazioni a riguardo.

Lineage è un gioco che a mio parere merita molto. Tanti utenti chiedono come farlo funzionare, ma pochi rispondono. In questi giorni mi sono documentato e ho cercato di capire dove fosse il problema. La mia intenzione era quella di creare un riferimento utile per tutti coloro che, come me, volevano cimentarsi nell’impresa di emulare questo MMORPG (Massive Multiplayer Online Role Playing Game). Spero, con questa guida, di avervi fornito informazioni e strumenti utili affinchè voi riusciate là dove io ho fallito. :-)

Approfondimenti

L'articolo è stato di tuo gradimento? Puoi controllare che vi sia altro di tuo interesse nelle categorie e , oppure iscriverti al notiziario RSS e seguirmi su per restare sempre aggiornato sulle ultime pubblicazioni.

Pubblicato sabato 02 dicembre 2006.

Discussione [12]

  1. chtr aggiunge:

    [Immagine] Segue l'intervento di chtr

    Qui ti comunico il mio interesse ed i miei più sentiti complimenti.
    L’ articolo, per quella che è la mia opinione, è scritto in maniera ottimale; dunque, si lascia seguire e si presenta comprensibile.
    L’ argomento, poi, è senza alcun dubbio un arricchimento e, se vogliamo, un incoraggiamento per tutti quei “linuxiani” che, come noi, si trovano ad affrontar “dilemmi” quali il corretto funzionamento dell’ apprezzatissimo Lineage. Passo per passo, infatti, la tua guida informa e conduce al ragionamento.
    Spero di poterne usufruire al meglio.
    Saluti. =P

  2. pietro aggiunge:

    [Immagine] Segue l'intervento di pietro

    grazie mille ! ctrl+D

  3. giovanni aggiunge:

    [Immagine] Segue l'intervento di giovanni

    voglio scaricare il gioco

  4. Sigurrino aggiunge:

    [Immagine] Segue l'intervento di Sigurrino

    La tua guida e' perfetta e molto esplicativa, ma purtroppo il problema della GG e' insuperabile anche su altri giochi on-line (vedi MapleStory), l'unico modo che rende possibile giocare a giochi nativi per windows su linux e' la VM (Virtual Machine)... provala per me e' stata una salvezza non indifferente, l'unica pecca e' che richiede molto hardware e molto "smanettamento"... cmq io credo che un giorno riusciremo a giocare a qualcosa di diverso da FrozenBubble

  5. eKoeS aggiunge:

    [Immagine] Segue l'intervento di eKoeS

    Ciao Sigurrino, io non sono mai riuscito ad avviare la Virtual Machine con l'accelerazione 3D, nonostante in giro ci siano buone guide. :D

    Credo anch'io che prima o poi riusciremo a giocare tranquilli persino in un ambiente emulato, gli strumenti ci sono e la volontà pure. :)

  6. Sanzo aggiunge:

    [Immagine] Segue l'intervento di Sanzo

    salve...ho provato il tuo metodo solo ke quando carica la prima skermata "no quella d login quella ankora prima" mi da' critical error... se puoi aiutarmi a risolvere questo problema t lascio il mio msn sanzohosci@hotmail.it

  7. Sanzo aggiunge:

    [Immagine] Segue l'intervento di Sanzo

    ora ho provato a reinstallare il game mi da' questo errore

    plz help me

  8. Sanzo aggiunge:

    [Immagine] Segue l'intervento di Sanzo

    http://img45.imageshack.us/my.php?image=schermata1yc7.png scusate ma nn lo ha messo nell'altro post

  9. eKoeS aggiunge:

    [Immagine] Segue l'intervento di eKoeS

    Ciao Sanzo, come ho già detto molti degli errori che si presentano potrebbero dipendere da miliardi di fattori, ma detto questo ti consiglio sempre di:

    1. Eseguire Wine da terminale, per poter rintracciare l'errore preciso, o qualsiasi altro tipo di output utile;
    2. Copiare l'errore e incollare l'intera stringa su Google, per capire se qualcuno ha già riscontrato problemi simili ai tuoi;
    3. Giocare con le configurazioni di Wine (e i permessi sui file) per cercare quantomeno di capire quando si presenta l'errore, e perchè.

    Io in genere seguo sempre questi tre punti, non dico di riuscire sempre nell'intento, ma non è raro che leggendo l'errore preciso da terminale si possa in qualche modo capire come risolvere. :)

  10. Sanzo aggiunge:

    [Immagine] Segue l'intervento di Sanzo

    thx ora provo poi t dico come va' :D

  11. Furay aggiunge:

    [Immagine] Segue l'intervento di Furay

    Aaaaaa a me si riavvia il pc help

  12. Lineage 2 server aggiunge:

    [Immagine] Segue l'intervento di Lineage 2 server

    For a l2 server you could try lineage2server.org

Discuti

Il blog è in sola lettura.

Paginatura: