Compilare ioDoom3 su openSUSE 12.1 x64

Recentemente mi sono messo a giocare un po’ con il codice di ioDoom3, siccome nel wiki vengono spiegati vari metodi di compilazione per molte distro, tranne openSUSE, ho pensato di scrivere questo thread in caso servisse a qualcuno (non riesco ad aggiornare le pagine al riguardo sul wiki del progetto perchè ho problemi con il modulo di registrazione… :S).

In breve, avremo bisogno di GIT per scaricare i sorgenti dal repo del progetto, SCONS e altre librerie per compilarli e, infine, una versione LEGALE di Doom 3 o Quake 4 o una mappa di test per provare il motore compilato. Come da titolo, faccio riferimento a sistemi a 64 bit, ma dato che il motore grafico è scritto per sistemi a 32 bit (uno degli obbiettivi di ioDoom3 è proprio il porting a 64bit nativi) la maggior parte delle dipendenze le prenderemo a 32 bit. Senza indugiare ancora, procediamo.

Incominciamo scaricando e installando Scons: io ho usato l’ultima versione disponibile sul loro sito web (la 2.1.0) come RPM, su oS è pacchettizzata la precedente release stabile la 1.3.1. Installando da RPM avrete bisogno di soddisfare qualche dipendenza (che, scusate, non ricordo visto i mille mila test di dipendenze per trovare le librerie mancanti che mi segnalava SCONS compilando il motore…).

Installiamo quindi GIT e le dipendenze per il motore grafico con Zypper o YaST:

su -c "zypper in git xorg-x11-libXext-devel-32bit xorg-x11-devel-32bit gcc46-32bit xorg-x11-libX11-devel-32bit m4 libopenal-soft-devel glibc-devel-32bit zlib-devel"

(dovrebbero essere tutte, avvertitemi se dovesse mancare qualcosa…)
(vorrei ringraziare Orion del forum IT-openSUSE per avermi aiutato con un paio di pacchetti mancanti!).

Procediamo quindi scaricando gli ultimi sorgenti disponibili dal repo GIT del progetto:

git clone git://git.iodoom.org/iodoom3/iodoom3.git

A questo punto entriamo nella directory iodoom3/neo/ e lanciamo il comando

scons NOCURL=1

Se tutto va a buon fine vi dovrebbero comparire nuovi file nella directory neo/ . L’eseguibile del gioco è doom3.x86 (inteso proprio per l’architettura x86 ovviamente…). Per provare il motore grafico possiamo copiare i file pk4 (pak000, pak001, pak002, pak003, pak004, game00 e game01) della versione LEGALE in nostro possesso di Doom 3 nella directory ~/.doom3/base . Eventualmente voleste cambiare questo path potete sempre avviare il gioco con il parametro set fs_basepath:

./doom3.x86 +set fs_basepath

Per ricompilare dopo aver apportato qualche modifica al codice, invece, potrebbe essere necessario pulire un po’ di directory dai file già compilati. Su ambiente Win si tratta di lanciare il file clean.bat, su *NIX possiamo usare uno script analogo tipo questo (una conversione abbastanza brutale, barbarica e niubbesca ma funzionale xD).

Prima di concludere, per chi volesse patchare il gioco si può scaricare il file ufficiale dai server di ID Software.

Questo è più o meno tutto per il momento. Tra gli obbiettivi del progetto ioDoom3 troviamo il porting a 64bit del motore grafico, l’aggiunta del supporto a SDL, una pulizia generale del codice… ma sinceramente, completati questi task non mi dispiacerebbe lavorare ad una conversione-upgrade del motore ad OpenGL 4.2, aggiungendo feature grafiche avanzate e attuali come tesselation e simili.

Spero che questa breve guida possa servire a qualcuno, scrivetemi pure eventuali consigli e suggerimenti!

Grazie per la lettura,

Saluti
hawake

Conversione video FLV a MPEG/AVI

Oggi ho riscontrato un problema nell’esecuzione di video FLV (quelli scaricati da YouTube o Google Video per citarne due), infatti Totem mi chiede di installare un plug-in inesistente, o almeno così pare dalle mie ricerche, il “Demurxer Flash” (o simile…) che non trovo da nessuna parte… VLC non riesce ad aprirlo, cioé lo apre e non da nessun errore, ma non si vede, e resta la barretta da sola come se fosse un file audio.

Così ho trovato un modo per convertire i file direttamente da FLV a MPEG o AVI.
# ffmpeg -i video.flv output.mpg

Per gli FLV scaricati da YouTube sarebbe opportuno creare il file output come AVI, quindi:
# ffmpeg -i miovideo.flv output.avi

Come qualità perde un po’, questo è vero, ma sicuramente è un metodo utile e veloce di conversione! 😉

Saluti
hawake