Giovedì, Gennaio 18, 2018
   
Text Size

SGF ovvero Smart Game Format

L' SGF fornisce due modi per poter aggiungere le pietre sul Goban:

  • fare una mossa;
  • posizionare una pietra.

"Fare una mossa" coincide con l'eseguire una mossa così come accade in una partita reale; invece "posizionare una pietra" corrisponde all'atto di mettere sul Goban una o più pietre per poter analizzare una posizione, una variante di gioco, sistemare le pietre di handicap. Data questa distinzione esistono di conseguenza anche proprietà che sono specifiche delle mosse e proprietà che si riferiscono invece solo al setup. Lo standard FF[4] impone che in ogni nodo non si mescolino tali proprietà e che invece siano ben distinte le une dalle altre.

Concludiamo ora questa parte di descrizione generale mostrando come vengono gestite le varianti di un gioco. Nella figura seguente è possibile vedere come varianti e sottovarianti vengano rappresentate.


varianti

Definizioni Base

Come abbiamo già detto l'SGF è un formato di testo, che per poter descrivere correttamente una partita di gioco reale deve possedere un proprio linguaggio, con una propria grammatica e sintassi. Nello specifico l'SGF utilizza un importante metalinguaggio, ovvero l' EBNF (Extended Backus-Naur Form). Per i più curiosi ecco il link alla pagina di Wikipedia su EBNF, invece di seguito riassumiamo solo le caratteristiche fondamentali che ci servono per trattare l'SGF.

Convenzioni EBNF

"..."  : simboli di inizio/fine
[...] : opzione: si può presentare al più una volta
{...} : ripetizione: si può presentare un numero a piacere di volte
(...) : raggruppamento
| : OR esclusivo
italics: parametri spiegati in qualche altro posto

Definizioni EBNF

 

Collection = GameTree { GameTree }
GameTree = "(" Sequence { GameTree } ")"
Sequence = Node { Node }
Node = ";" { Property }
Property = PropIdent PropValue { PropValue }
PropIdent = UcLetter { UcLetter }
PropValue = "[" CValueType "]"
CValueType = (ValueType | Compose)
ValueType = (None | Number | Real | Double | Color | SimpleText |
Text | Point | Move | Stone
)
Gli spazi biachi (tipo \n, \t, \r, tab orizzontali, tab verticali, spazi e via dicendo)possono apparire ovunque tra PropValues, Properties, Nodes, Sequences e GameTrees.
Esistono inoltre due tipi di liste di proprietà:
'list of':    PropValue { PropValue }
'elist of': ((PropValue { PropValue }) | None)
In other words elist is list or "[]".

Proprietà di un nodo

Gli identificatori di proprietà di un nodo sono costituiti, a tutt'oggi, da due lettere maiuscole e il loro  ordine non è importante. Inoltre in un file SGF è possibile anche definire dei propri identificatori di proprietà a patto che non interferiscano con quelli standard. Ogni nodo deve avere un solo identificatore per ogni proprietà. Infine ad ogni proprietà è associato un tipo che pone delle restrizioni sui nodi a cui si possono applicare, o alle altre proprietà con cui si possono combinare.

I tipi associati ad ogni proprietà sono i seguenti:

  • move: le proprietà di questo tipo si focalizzano sulla mossa fatta e non sulla posizione raggiunta. In uno stesso nodo non è possibile mescolare proprietà di questo tipo con quelle di tipo setup (vedi dopo). Inoltre è sconsigliato assegnare una proprietà di tipo move ai nodi radice (root).
  • setup: le proprietà di questo tipo si focalizzano sulla posizione corrente. Le proprietà di setup, come detto precedentemente, non devono essere mescolate con quelle di move per un dato nodo.
  • root: queste proprietà sono assegnate solo ed esclusivamente ai nodi radice che sono i primi nodi di ogni gametree. Esse definiscono delle proprietà globali come: dimensione del goban, tipo di gioco, formato di file ...
  • game-info: questa proprietà permette di dare informazioni relativamente alla partita (chi, dove, quando, cosa, risultato, regole ...) Queste proprietà di solito sono memorizzate nei nodi radice, e quando più partite vengono fuse a formare un singolo gametree, queste informazioni vengono memorizzate nei primi nodi per cui le diverse partite diventano distinguibili l'una dall'altra all'interno dell'albero. I nodi che contengono informazioni di gioco sono unici all'interno di un percorso dell'albero di gioco.
  • - : si tratta di proprietà di nessun tipo specifico e possono apparire in ogni punto all'interno di una Collection.
Esiste inoltre un attributo associato ad una proprietà:
  • inherit: le proprietà che presentano questo attributo hanno rilevanza non solo per i nodi contenenti esplicitamente tale attributo, ma anche tutti i nodi figli a partire da esso. Questo vale finchè nei nodi figli non viene impostata una nuova proprietà o vengono cancellate le precedenti in modo esplicito.

Calendario GCR

January 2018
S M T W T F S
31 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 1 2 3