Chessnet:
un servizio di rete per giocare a scacchi

La International Chess Machines (ICM) intende costruire un servizio distribuito di ausilio ai giocatori di scacchi collegati ad Internet. Questo documento descrive in modo informale i requisiti di un sistema che offre questo servizio.

1. Premessa

La rete Internet è una rete mondiale di computer che è ormai da più di 10 anni uno standard di fatto per collegare computer di università e centri di ricerca; si calcola che siano collegati al momento più di 2 milioni di computer e circa 20 milioni di persone (Dic 1993), con un incremento annuo dell'ordine del 30%. La rete era inizialmente riservata a scopi di ricerca scientifica e comunque senza fini di lucro; da qualche tempo è invece possibile a compagnie commerciali collegarsi a Internet per offrire servizi a pagamento. Si prevede una forte espansione di questo genere di servizi nell'immediato futuro di Internet.

La ICM è interessata ad offrire ai giocatori di scacchi un servizio a pagamento che permetta loro di giocare su rete collegandosi dalla propria stazione ad uno dei centri di servizio via Internet. Il servizio, che denominiamo Chessnet, sarà basato su una serie di siti Intenet cui gli utenti potranno collegarsi via telnet.

Scopo di questo documento è descrivere le caratteristiche del servizio e dei programmi clienti che potranno essere utilizzati dagli utenti.

2. Struttura del servizio

I servizi offerti da Chessnet saranno i seguenti:


* connessione remota via telnet; la connessione è protetta da password; la base di conteggio per i costi del servizio dal punto di vista dell'utente è il tempo di connessione;


* visualizzazione degli utenti connessi ad un server e di una serie di attributi che ne descrivono le capacità di gioco;


* chiunque si colleghi deve poter vedere qualsiasi partita in corso;


* il servizio supporta un protocollo di partita: un utente fa una proposta di partita ad un giocatore collegato; se la proposta è accettata, viene attivato automaticamente l'ambiente di gioco che si basa su interfaccia grafica che controlla la legalità delle mosse e i tempi di gioco; deve essere prevista la possibilità di caduta del collegamento di uno o entrambi i giocatori (la parita viene aggiornata); al termine della partita avviene l'invio automatico per posta elettronica della partita giocata;


* comunicazioni in broadcasting a tutti i giocatori connessi ad un server, oppure riservate tra coppie o gruppi di giocatori;


* gestione del rating (punteggio Elo) a livello mondiale, per i soli utenti registrati;


* database di tutte le partite giocate, interrogabile dai soli utenti registrati.

Nei paragrafi seguenti le singole voci vengono ulteriormente dettagliate.

Nota: Al momento su Internet esistono due servizi gratuiti (chiamati XICS server) che permettono di giocare su rete. Si suggerisce ai partecipanti al progetto di collegarsi per osservare le possibilità offerte da tali servizi (indirizzo telnet: 198.7.0.1 5000 per il server americano, 130.225.16.162 5000 per quello europeo).

3. Descrizione del servizio Chessnet

Il servizio si assume funzionante su un certo numero di sistemi (server) di cui è noto al pubblico l'indirizzo Internet. Chiunque può collegarsi mediante un opportuno programma cliente a qualunque server.

3.1 Connessione

A scopo pubblicitario, qualsiasi utente Internet può collegarsi ad uno dei siti che offrono il servizio usando il comando

telnet indirizzodirete

Il comando telnet si assume corrispondere al programma standard cliente telnet (ne esistono per tutte le principali macchine; vedere letteratura di corredo).

Il server risponde con il prompt di un protocollo di login; l'utente allora introduce uno username: se questo non risulta tra quelli registrati non viene richiesta password; solo gli utenti registrati ottengono uno username protetto da password (solo per questi ultimi è necessario fatturare il tempo di tempo di collegamento).

Gli utenti non registrati ottengono un sottoinsieme dei servizi previsti per quelli registrati. Un giocatore registrato può collegarsi a qualsiasi server ed ottenerne i servizi completi (non è necessario specificare la procedura di registrazione).

La connessione termina col comando exit.

3.2 Visualizzazione informazioni sullo stato del servizio

Durante la connessione in ogni momento l'utente può dare i seguenti comandi:

who visualizza i nomi degli utenti connessi

players visualizza i nomi degli utenti che stanno giocando

games visualizza dati sulle partite in corso

stat nomegiocatore visualizza dati su un singolo giocatore; ogni giocatore è descritto dai seguenti dati: nome, rating, status (sta giocando, è disposto a giocare, non vuol giocare).

3.3 Partite

Un utente U1 può sfidare un altro utente U2 collegato al servizio col comando

match U2 T1 T2

e si intende che U1 sfida U2 ad una partita con dotazione iniziale di tempo T1 minuti e incremento per ogni mossa di T2 secondi. Si può sfidare un solo giocatore per volta.

Il giocatore U2 che viene sfidato riceve il seguente messaggio:

You have been invited to play by player U1, with times T1 T2. Say accept to accept, decline to decline, match U1 T1' T2' to suggest different times.

Il comando accept serve per accettare la sfida; il comando decline serve per declinare la sfida; il comando match si può usare per proporre tempi di gioco differenti.

Nel momento in cui due giocatori si accordano eventuali altre sfide da altri giocatori decadono, e viene creato l'ambiente grafico di gioco mostrato in figura.

Le mosse possono essere inserite o via mouse sulla finestra che mostra la scacchiera, o in modo testuale sulla finestra apposita. L'interfaccia controlla la legalità della mossa ed i tempi di gioco.

La partita continua sino a che uno dei due giocatori abbandona, oppure prende matto, oppure supera i limiti di tempo e l'avversario chiede la vittoria mediante il comando flag, oppure uno accetta la proposta di patta dell'altro (per offrire la patta: comando proposedraw; per accettare la patta: comando acceptdraw).

I giocatori possono anche accordarsi per sospendere la partita, che viene memorizzata per essere ripresa in un altro momento. La partita viene memorizzata anche nel caso in cui la connessione di uno o entrambi i giocatori venga interrotta inaspettatamente.

Copia della partita terminata viene inviata per posta elettronica ad entrambi i giocatori; la partita viene anche memorizzata del database di partite (vedi paragrafo 3.6).

3.4 Gestione del rating

I giocatori registrati ottengono un rating iniziale R. Dopo ogni partita tra giocatori con rating R1 e R2 si applica una funzione Elo(R1,R2,risultato)=(R1',R2') che calcola per ciascun giocatore il suo nuovo rating in base a quello dell'avversario ed al risultato della partita stessa.

La gestione del rating è globale a livello mondiale: in altre parole ogni utente registrato ha diritto ad avere rivalutato il proprio rating ovunque giochi. Qualsiasi utente ha diritto di conoscere il rating di chiunque altro, mediante il comando stat. Esiste un comando (toplist) per vedere l'elenco dei primi 100 rating a livello mondiale.

3.5 Comunicazioni

Qualunque utente connesso ad un server può emettere messaggi che vengono trasmessi a tutti gli altri utenti connessi, mediante il comando

shout messaggio

Un utente può comunicare direttamente con un altro utente mediante il comando

tell utente messaggio

Durante una partita si può omettere il nome dell'utente, intendendo per default che ogni comando tell messaggio spedisce il messaggio direttamente all'avversario corrente.

Gruppi di utenti possono stabilire comunicazioni riservate al gruppo entrando in uno dei canali offerti dal servizio. Un canale viene creato col comando makechannel numerocanale. Per entrare in un canale, un utente può usare il comando inchannel numerocanale. Il comando shout emesso da un utente che è in un certo canale trasmette il messaggio ai soli utenti che si trovino entro lo stesso canale. Per uscire da un canale si usa il comando outchannel numerocanale. Il comando channels visualizza i canali attivi e gli utenti che vi sono collegati.

3.6 Database

Ogni partita giocata in un sito viene memorizzata localmente: oltre alle mosse, si memorizzano nomi dei giocatori, data, tipo di apertura, tempi di gioco e risultato finale. Tutti gli utenti registrati hanno diritto di chiedere il reperimento di partite mediante interrogazioni sui nomi dei giocatori o sul tipo di apertura. Tutte le partite che soddisfano l'interrogazione vengono tramesse al richiedente mediante posta elettronica.