develia.org
»» i686 slackware tarballs..
»» software projects..
»» and much more..
 NAVIGATION 
 OPTIONS 

 INFO 
*** develia.org ***
di Giacomo Lozito
© 2004-2010

valid xhtml 1.0valid css!
powered by apachepowered by php
valid rss 2.0get firefox!

NO software patents in UE
 DOCUMENTS 
Giocare a scacchi su Linux.

1. Introduzione
2. Interfacce di gioco
3. Chess engine
4. Link e crediti


 Introduzione

Questo articolo è dedicato agli appassionati del gioco degli scacchi, principianti o esperti che siano. Le indicazioni contenute, pur riferendosi sempre al sistema operativo Linux, sono valide per qualsiasi sistema UNIX-like. Giocare a scacchi su Linux non soltanto è possibile, ma è anche interessante e divertente, data la varietà di programmi che è possibile usare e di chess engine con i quali confrontarsi.

Introduciamo l'argomento facendo proprio questa importante distinzione: su Linux avremo bisogno sia del programma che ci metta a disposizione l'interfaccia (solitamente grafica, con scacchiera, pedine e varie opzioni a corredo), sia del programma di intelligenza artificiale che giocherà a scacchi contro di noi (un "chess engine").
Facendo un paragone con la vita reale, avremo bisogno tanto di una scacchiera quanto di un avversario; niente potrà poi impedirci di giocare usando la stessa scacchiera contro avversari diversi o affrontare lo stesso avversario su scacchiere differenti.

Di solito, le distribuzioni rendono facoltativa questa duplice ricerca di programmi, mettendo subito a disposizione qualche interfaccia e qualche chess engine, collocando magari il tutto in un singolo pacchetto. Per esempio questo è il caso di Slackware Linux, che con il proprio tarball di Gnuchess mette a disposizione due interfacce (xboard e eboard) e due chess engine (gnuchess e sjeng).
Piccola nota, probabilmente superflua: qualora si desideri giocare in rete contro un altro giocatore umano, sarà sufficiente disporre di un'interfaccia che supporti il gioco in rete, mentre non si avrà ovviamente bisogno di un chess engine.


 Interfacce di gioco

xboard Cominciamo dunque procurandoci una scacchiera e le pedine, ossia scegliendo un'interfaccia di gioco tra le diverse disponibili per Linux.

La prima possibile interfaccia di gioco è il classico e sempre valido XBoard (in figura), leggero e in grado di girare praticamente su qualsiasi sistema UNIX-like. XBoard permette di giocare con tutti i chess engine che supportino il protocollo omonimo XBoard (divenuto in pratica uno standard per l'interfacciamento con i chess engine).
XBoard funziona inoltre come client per i server ICS (Internet Chess Server), attraverso cui è possibile sfidare in rete altri giocatori umani. La sfida con un altro giocatore umano si può effettuare anche tramite cmail, programma incluso con XBoard per il gioco in rete tramite posta elettronica.
XBoard supporta caricamento e salvataggio di partite con lo standard PGN (Portable Game Notation). Permette quindi di prendere visione non soltanto dello stato corrente di una partita, ma anche di esaminare tutte le mosse precedenti, ricostruendo la partita dall'inizio. Last but not least, XBoard può essere usato come scacchiera elettronica (senza intelligenza artificiale), nella quale possiamo muovere entrambi gli schieramenti e quindi ricreare situazioni precise o analizzare l'andamento delle partite.
Per maggiori informazioni vi rimando alla man page di xboard, che tratta in modo molto approfondito tutte le possibilità appena elencate. Mi limito ad illustrare sotto alcuni dei caratteristici parametri di avvio.

>> xboard
L'uso del semplice comando xboard senza altri parametri lancia il programma XBoard assieme al primo chess engine disponibile sul sistema (solitamente gnuchess).

>> xboard -fcp "gnuchessx" -fd ./games
In questo caso come primo giocatore computer (fcp, first computer player) abbiamo specificato il chess engine gnuchess; -fd serve per specificare la working directory per il primo chess engine (in questo caso gnuchess), dove l'engine potrebbe collocare proprie risorse, per esempio i file di apprendimento (learning file). Questa è una sintassi molto comune per specificare un chess engine diverso da quello di default.

>> xboard -fcp "phalanx" -fd ./games -scp "sjeng" -sd ./games -mode TwoMachines
Nulla vieta di assistere alla partita tra due chess engine diversi (o tra due istanze dello stesso). Questo è esattamente ciò che otteniamo con i parametri specificati sopra, si noti il parametro -mode che permette di specificare la modalità di gioco (possiamo comunque farlo anche dal menù grafico di XBoard).

Benchè la grafica di XBoard sia personalizzabile, non raggiunge ovviamente l'elevato look and feel cui oggigiorno siamo abituati grazie soprattutto a desktop environment come KDE e GNOME. Era lecito quindi, se non implicito, aspettarsi la comparsa di interfacce di gioco più accattivanti dal punto di vista grafico, più comode da usare e magari corredate di un numero ancora maggiore di opzioni.

knights In tal senso vi segnalo eboard e Knights. Il primo, eboard, nasce principalmente per il gioco in rete. Dispone di una comoda interfaccia GTK+ e permette di giocare con tutti i chess engine che supportano il protocollo XBoard. Una delle caratteristiche uniche di eboard è la possibilità di giocare in rete contro un avversario umano non solo mediante server ICS, ma anche in connessione diretta con un altro client eboard. E' estremamente personalizzabile (anche dal punto di vista estetico di scacchiera e pedine) e, benchè il suo sviluppo attualmente sia rallentato, pare stia venendo progressivamente convertito ad interfaccia GTK+2.

Knights (in figura) è una splendida interfaccia di gioco per KDE. Davvero gradevole sia per aspetto (ampie possibilità di personalizzazione, con tanto di temi) che per usabilità, Knights permette di giocare con tutti i chess engine che supportano il protocollo XBoard o il protocollo UCI (Universal Chess Interface). Offre anche la possibilità di giocare in rete, tramite server ICS o tramite email. Sia eboard che Knigths supportano naturalmente salvataggio e caricamento di partite in formato PGN (Portable Game Notation). Una versione precompilata di Knights, per Slackware Linux, è disponibile nell'archivio tarball di develia.org.

Esistono probabilmente altre interfacce di gioco (che però non ho mai provato personalmente), una di queste è glChess, programma che offre una scacchiera tridimensionale e permette, come gli altri, di giocare con i chess engine che supportano il protocollo XBoard.


 Chess engine

I chess engine disponibili sono veramente tanti. Un sito di riferimento utilissimo per conoscere e apprezzare le caratteristiche di ciascuno di essi (nonchè il protocollo di interfacciamento utilizzato, come XBoard o UCI), è WBEC Ridderkerk, in particolare la sezione "Engine info". Anche sulle Tim Mann's Chess Pages è disponibile una lista, un pò datata, di engine che supportano il protocollo XBoard.
Nello scegliere un chess engine, dovremo naturalmente assicurarci che funzioni su Linux e che sfrutti un protocollo di interfacciamento tra quelli supportati dalla nostra interfaccia di gioco (di solito XBoard). Inoltre, dovremo valutare anche le possibilità di personalizzazione di ciascuno di essi, in modo da regolare la difficoltà in base alle nostre capacità.
Non è semplice stimare l'abilità di un chess engine, il sito WBEC Ridderkerk mette comunque a disposizione diverse graduatorie e informazioni in tal senso. Molto dipende anche dalle risorse messe a disposizione dell'engine: potenza della CPU, ottimizzazioni usate nella compilazione, tempo di calcolo messo a disposizione e risorse come libri d'apertura, tabelle di chiusura e quant'altro.

A meno che non siate giocatori smaliziati, vi renderete conto abbastanza presto che regolare le risorse a disposizione del chess engine non è qualcosa di facoltativo, ma è fondamentale perchè la partita sia equilibrata. Viceversa, si rischia di incappare in frustranti sconfitte che, seppure utili dal punto di vista didattico, possono scoraggiare il giocatore novizio (dopotutto vincere ogni tanto è piacevole!).

In effetti, una delle prime domande che solitamente ci si pone è: "il chess engine è troppo forte, come faccio ad indebolirlo?". I metodi sono molteplici.
  • In primo luogo, possiamo disattivare il "ponder"; normalmente, quando è il nostro turno, il chess engine continua a calcolare possibili mosse e sviluppi di gioco da usare; con il ponder disattivato, penserà al da farsi solo ed esclusivamente durante il suo turno. Il ponder attivo è tra l'altro il motivo per il quale durante una partita la cpu resta al 100% per tutto il tempo.
  • Possiamo impostare un tempo massimo entro il quale il chess engine deve effettuare la propria mossa. Minore il tempo di calcolo a disposizione per il chess engine, minore la difficoltà di gioco.
  • Possiamo indicare al chess engine di non usare libri d'apertura o altre risorse analoghe, in modo da indebolirne la strategia iniziale.
  • Ogni chess engine dispone di svariati parametri propri, sui quali è possibile agire influenzando anche le prestazioni in scacchiera. Tempo di calcolo dell'engine, profondità di calcolo, autoapprendimento e molto altro ancora.
Al momento in cui scrivo, uso solitamente quattro chess engine: GNU Chess, Sjeng Free, Crafty e Phalanx. Ciascuno di questi ha i propri parametri, per i quali vi rimando al rispettivo helpfile o man page. Tutti comunque supportano il protocollo XBoard.
Phalanx (tra l'altro in licenza GPL) è quello che consiglio maggiormente ai principianti in quanto molto semplice da personalizzare. Senza dover agire su profondità e tempo di calcolo, dispone infatti di un vero e proprio parametro "livello di difficoltà" che è possibile impostare da 0 (difficile) a 100 (facile).
Una versione precompilata di Phalanx, per Slackware Linux, è disponibile nell'archivio tarball di develia.org.

>> phalanx -e100 -l- -b-
Lanciato con questi parametri, Phalanx gioca al livello più facile, senza apprendimento e senza libri d'apertura. Volendo fare una partita su XBoard contro l'engine Phalanx in questo modo, digiteremmo:
>> xboard -fcp "phalanx -e100 -l- -b-"
Analogamente, usando un'altra interfaccia di gioco come eboard o Knight, potremo passargli i parametri nell'apposita finestra di dialogo dedicata alle impostazioni per i chess engine.

Si noti che i chess engine, per funzionare, non necessitano obbligatoriamente di un'interfaccia di gioco. Sono perfettamente funzionanti anche come programmi a sè stanti (con interfaccia testuale), anche se naturalmente giocare in questo modo può essere un pò troppo complicato (Sjeng almeno disegna la scacchiera con i caratteri ascii :).


 Link e crediti

Oltre ai link sopracitati, WBEC Ridderkerk e Tim Mann's Chess Pages, vi segnalo le pagine web del FICS (Free Internet Chess Server), uno dei più grandi e rinomati Internet Chess Server, con oltre 150000 utenti registrati.


Questo articolo è stato realizzato da Giacomo Lozito, il maintainer di develia.org, con passione e pazienza.
Se qualcuno trovasse l'howto particolarmente utile è libero di pubblicarlo sul proprio sito, a patto però che lasci immutati questi crediti (link a develia.org incluso) e che abbia la gentilezza di farmelo sapere via email.
Tutti i marchi, nomi di aziende e i prodotti indicati e/o raffigurati nell'howto appartengono ai loro legittimi proprietari.