Archive for the ‘Howto’ Category

Sistemi Linux a confronto con Quake Wars 1.2

Sunday, November 4th, 2007

Dopo aver installato Quake Wars dal DVD usando la patch 1.2, ho messo a confronto i tre sistemi Linux a 32bit installati sul mio Asus A6Tc; era giunto il momento di verificare effettivamente quali livelli di prestazioni poteva raggiungere il portatile, anche se avrei voluto compiere questo test molto tempo fa, poiché lo comprai nell’estate del 2006 (magari con Doom 3 o Quake 4). Sul banco di prova ho messo così la distribuzione OpenSUSE 10.3, Linux From Scratch 6.2 e Linux From Scratch 6.3. Soltanto questi ultimi due sistemi avevano l’opzione CONFIG_HZ_1000 e il modello preemption LOW LATENCY, dato che ne suggeriva l’attivazione Timothee Besset sia per il server che il client di Quake Wars. OpenSUSE usava invece il parametro CONFIG_HZ_250 e un modello preemption VOLUNTARY ma, come ho potuto già osservare in precedenza (rif. OpenSUSE 10.3, distro tuttofare), sono caratteristiche che non hanno spinto piu’ di altre il gioco. Le versioni del kernel erano 2.6.16.26, 2.6.23.1, 2.6.22.5-31 rispettivamente per LFS 6.2, LFS 6.3 e OpenSUSE. Eccetto LFS 6.3 che usava la versione 100.14.19, sugli altri due sistemi era installato durante il benchmark il vecchio driver 1.0-9755, dimostratosi “affidabile” per tutto il 2006 e 2007.

Il driver 1.0-9755 non si installava su Linux From Scratch 6.3, a causa di incompatibilità con la versione del kernel. Mi è dispiaciuto questo perché la serie 100.XX.XX faceva i capricci mentre girava il timedemo. Avvenivano congelamenti dello schermo improvvisi e fatali che mi lasciavano di fronte a una sola alternativa per riavere il controllo sul sistema… riavviare (si legga anche Zander in “100.14.19 nvidia geforce go 7200 flashing and freezing“).
L’opzione irqpoll per il kernel pare risolvere parzialmente il problema, per lo meno ora avvengono solo brevi interruzioni, della durata di 2 o 3 secondi mediamente, dei programmi in esecuzione. Per questo motivo dai diagrammi LOW QUALITY il LFS 6.3 esce con un rendimento peggiore rispetto agli altri due sistemi analizzati; esso ha un deficit anche di 4 FPS.

Dunque la patch 1.2 installa Quake Wars automaticamente dal DVD; quando si carica il gioco per la prima volta, occorre creare un account online, ovvero scegliere un nome e una password che identificheranno il giocatore nelle gare sui server con le statistiche (RANKED).
La demo usata nelle prove era stata registrata per circa tre minuti con il comando toggleNetDemo (F12) durante la terza fase di una partita in corso sulla mappa Salvage. In essa l’azione si svolgeva sia all’interno degli edifici che all’esterno e quindi secondo me era perfetta per valutare il comportamento dell’engine con diversi livelli di dettaglio, illuminazione e ambientazione. Per un minuto ho sorvolato come spettatore la zona dove la guardia GDF faceva il suo ingresso nel gioco, nei pressi della struttura di salvataggio delle informazioni top-secret (Salvage). Dopo di che sono passato a osservare l’azione dal punto di vista del giocatore, in First Person Shooter come si suol dire, cambiandola spesso repentinamente.
Il comando timeNetdemo carica una partita precedentemente registrata e al termine calcola il frame rate medio. L’ho eseguito con configurazioni diverse, ma stessa risoluzione schermo di 800×600 pixels: la prima per ottenere una qualità grafica il piu’ povera di effetti e dettagli, la seconda con valori impostati a “normal” nella maggior parte delle opzioni disponibili, per avere una grafica di buona qualità. Ho ripetuto due volte il timedemo per ciascuna configurazione e i tempi di caricamento della mappa variavano, a seconda delle distribuzioni esaminate, da 58 a 64 secondi (senza cache).

Quake Wars: Bassa qualità

Con OpenSUSE ho preferito scaricare dalla memoria XDM e lanciare Quake Wars direttamente da una console con

(startx :0 -- /usr/games/etqw/etqw)

Tuttavia un ulteriore test l’ho condotto in una finestra dell’ambiente GNOME e Compiz-Fusion, con un risultato che non dico sia considerevole, ma neppure oso scartare: 29.3 Frame per Secondo.
Quando registro una partita, il file viene salvato con estensione ndm in $HOME/.etqwcl/base/demos, per caricarlo con timeNetDemo è sufficiente però passare il nome del file, per esempio

timeNetDemo Salvage

Di solito i nomi dei file sono demo_00000.dnm, demo_00001.dnm, e così via. Nell’esempio ho usato Salvage, perché avevo precedentemente rinominato demo_00000.dnm.
I sistemi hanno restituito valori simili con entrambe le configurazioni, anche se mi sarei aspettato qualcosa di piu’ da LFS, perché aveva nel kernel i parametri suggeriti da TTimo per migliorare le prestazioni generali. LFS 6.2, LFS 6.3 e OpenSUSE occupavano tre partizioni root sul disco rigido da 80GB del portatile, mentre il gioco e i dati dell’utente stavano su due partizioni separate del disco rigido esterno; si tratta di un disco da 200GB alloggiato in un LAN Drive di Extreme Technology collegato alla porta USB 2.0. Nel diagramma 40 FPS sono segnalati con il colore arancione, perché non lo ritengo, in base alla mia esperienza, un valore accettabile per giocare online (nota: quando offline l’engine è bloccato a 30 FPS). La mia scala di misura dà invece il via libera (segnalato con il colore verde) attorno a 64 FPS, per salire verso l’ebrezza totale (colore blu) degli 80 FPS e oltre.

Qualità media

C’era da aspettarselo, a qualità media i valori calcolati da timedemo si sono quasi dimezzati per tutti i sistemi. In questo caso LFS 6.2 ha primeggiato con 22.2 ma le differenze erano, ancora una volta, minime.

Una introduzione al server di Enemy Territory: Quake Wars

Saturday, September 29th, 2007

Installer del server di Quake Wars
Il server di Enemy Territory: Quake Wars, l’ultimo gioco d’azione di Splash Damage e id Software, viene distribuito online tramite Bittorent in due versioni alternative:
ETQW-server-1.1-full.r2.x86.run che ha dimensioni pari a 418.64 MB, è proposto all’amministratore di sistema nel caso intendesse fare una installazione completa del server, perché contiene i programmi eseguibili e i dati (mappe, script, ecc.); ETQW-server-1.1-nomedia.r2.x86.run che fornisce solo Punk Buster e i programmi (dimensione complessiva 11.44 MB), è indicato qualora sia presente già sul disco rigido una installazione di Quake Wars per Windows.

Con la distribuzione Ubuntu in versione server si può scaricare i file suddetti da console tramite il programma bittorrento (richiede ncurses).
apt-get install bittorrento

Ci sono importanti prerequisiti di tipo software che debbono essere controllati col proprio provider prima di procedere alla configurazione e successivamente esecuzione del server; se è una Intranet ad interconnettere i client al server, è probabile che l’amministratore abbia le chiavi d’accesso anche ai programmi di sviluppo o di gestione dei pacchetti. A basso livello il kernel dovrebbe avere il parametro CONFIG_HZ_1000 abilitato, che si trova nel menù di configurazione (di solito si ottiene con make menuconfig…)

Processor type and features / Time frequency / 1000 Hz (default è 250 HZ)

in questo modo si otterranno prestazioni ottimali.

Requisiti Hardware/Software
Se vuoi eseguire un server di Quake Wars al 100% senza lag e riservato a 31 giocatori, allora devi prenderti delle precauzioni: non eseguire più di 2 server per macchina; evitare se possibile le tipologie di macchina “virtual private server” a meno che quest’ultime abbiano risorse pari al seguente hardware dedicato

  • Processore Pentium (r) 4 @ 2.0GHz oppure Athlon ™ XP 2000+
  • 512MB di memoria di sistema
  • Ottime unità di massa; per esempio con velocità di 7200rpm, meglio in RAID
  • Kernel Linux 2.6 low-latency, con timer a 1Khz
  • Una connessione a banda larga (broadband) con 320KB/s in upstream (~2.5Mbit/s) e 122.1KB/s in downstream (1MBit)

Controlla la variabile net_servermaxclientrate e net_clientmaxrate. Esse limitano la banda per ogni client connesso (è espressa in bytes/s). Valori piu’ alti assicurano prestazioni migliori per ogni giocatore, ma in ogni caso il server aggiusta automaticamente la disponibilità di banda a seconda delle richieste del client. Mediamente 16000 (default) è un valore molto buono per entrambe le variabili nella maggior parte dei sistemi. Se i client non useranno più di 16KB/s, valori superiori di net_maxclientrate non avranno effetto.

Se c’è un firewall attivo fra il server del gioco e Internet, allora dovranno essere “aperte” certe porte

  • in ingresso: UDP 27733 e UDP 3074
  • in uscita: TCP 3074

La porta del primo tipo può essere cambiata a piacimento dalla linea di comando con una opzione, per esempio
etqw-dedicated +set net_port 27734
oppure
etqw-dedicated +set in_tty "0" +set net_ip 194.175.27.69 +set net_port 27734
La opzione in_tty abilita/disabilita l’uso dei comandi nel terminale tty sul quale si sta eseguendo Quake Wars. Quando avviato per la prima volta, il server crea una serie di directory e sub-directory nella home dell’utente che esegue il gioco. Affinché l’amministratore o i suoi delegati (moderatori) possano gestire tutte le funzioni speciali previste per una partita (kick/ban, votazioni, riavvio, scelta mappa, ecc.), dovrà essere creato o copiato i file usergroups.dat, match.cfg e public.cfg dentro $HOME/.etqw/base e modificati opportunamente; potrebbe benissimo farlo il seguente comando (dopo aver adattato il percorso d’origine)
cp /path/to/etqw/base/{usergroups.dat, macth.cfg, server.cfg} $HOME/.etqw/base
Altrimenti il server eseguirà una configurazione “precotta”. Usergroups.dat si ispira probabilmente alla gestione dei gruppi di amministrazione previsti dalla modifica ETPUB (e precedentemetne SHRUB) di Wolfenstein: Enemy Territory. Qui possiamo aggiungere le utenze che detengono determinati privilegi. E’ bene non eliminare o rinominare il gruppo Default, perché comprende tutti i giocatori che si collegano al server; è sconsigliato anche associargli una password.
etqw-dedicated +set in_tty "0" +set net_ip 194.175.27.69 +set net_port 27734 +exec "server.cfg"

Wine 0.9.45 e Counter-Strike

Wednesday, September 19th, 2007

Rieccomi a parlare di Wine, spinto dal fatto che l’annuncio di venerdì scorso riportava, fra gli altri cambiamenti, “A number of fixes to sound support, cioè soluzioni ai problemi con il suono che potevano interessarmi molto. E infatti le avevo provate proprio tutte con le versioni precedenti per sentire qualche rumore in Counter-Strike, ma nisba.
L’installazione da sorgenti non è niente di trascendentale (vedasi anche LFS+Wine 0.9.31=Counter-Strike), in sostanza la compilazione è una operazione da compiersi con una serie di comandi abbastanza semplici:


./configure --prefix=/opt/wine-0.9 && make depend && make && make install

E stavolta funziona anche il suono… sono abbastanza soddisfatto. Dal menu’ di winecfg ho abilitato l’emulazione del driver via OSS, prima di caricare il browser Steam di Valve con il comando steam; quest’ultimo non fa parte di nessuna distribuzione perché l’ho creato con un alias nell’ambiente bash (in $HOME/.bashrc, per esempio) ed è molto piu’ comodo da richiamare:


alias steam="/usr/bin/aoss /opt/wine-0.9/bin/wine $HOME/MyGames/Steam/steam"

Ora viene il compito piu’ difficile! Imparare a giocare :)
Ho appena 8 anni di esperienza da recuperare (sì, quello nella foto in primo piano sono io, battetemi una stecca :) ).
Counter-Strike è un gioco d’azione appartenente al genere counter-terror. Distribuito come una modifica per Half-Life, è ancora tra i più giocati al mondo, per questo non potevo rinunciare ad acquistarlo (nell’agosto 2006) online tramite Steam e a provarlo con Wine sotto Linux.

(+) Scarica wine-0.9.45.tar.bz2