Magyarázat
A PGN, vagyis Portable Game Notation, sakkjátszmák tárolására és cseréjére szolgáló szöveges formátum. Közönséges szövegként is megnyitható, szerkezete pedig lehetővé teszi, hogy programok, webhelyek és adatbázisok újrajátsszák a játszmát.
Egy PGN-játszma két része
- A címkepár-szakasz szögletes zárójelek között tárol adatokat, például Event, Site, Date, Round, White, Black és Result. Ez a hét címke alkotja az alapvető archiválási készletet.
- A lépésszöveg lépésszámokat, lépéseket, választható megjegyzéseket, változatokat és egy végső eredményjelet tartalmaz.
A megjegyzések rendszerint kapcsos zárójelek között állnak. Az alternatív változatok kerek zárójelbe kerülnek, és további beágyazott változatokat is tartalmazhatnak. A rövid értékelések NAG-ként, vagyis $ jelből és számból álló kódként tárolhatók. Egyetlen .pgn fájl egy vagy több különálló játszmát tartalmazhat.
A PGN egy játszmát vagy változatfát rögzít, nem csupán a tábla pillanatképét. Ha a játszma nem a szokásos kezdőállásból indul, a SetUp és fejlécek adhatják meg a kezdőállást. A FEN önmagában egy állást ír le, nem az ahhoz vezető lépések történetét.
Mi nem a PGN
A PGN nem arra szolgáló protokoll, hogy egy motor gondolkodjon vagy grafikus felülettel kommunikáljon. Az olyan protokollok, mint a , programok között cserélnek parancsokat, a PGN pedig játszmajegyzékeket cserél. A programok az elfogadott kiterjesztésekben is eltérhetnek, ezért a leghordozhatóbb fájlok a szabványos szerkezetet követik és szabályos lépéseket tartalmaznak.
A végső jelnek 1-0, 0-1, 1/2-1/2 vagy * értékűnek kell lennie, és egyeznie kell a Result fejléccel. A csillagot folyamatban lévő vagy végleges eredménnyel még nem rendelkező játszmánál használják.
Gyakori félreértések
PGN és FEN
A PGN játszmát és metaadatait tárolja, a FEN egyetlen kezdő- vagy köztes állást ír le.
PGN és UCI
A PGN játszmarögzítési formátum, az UCI motorok kommunikációs protokollja.
Források
- 1.Portable Game Notation Specification and Implementation Guide, Steven J. Edwards
- 2.PGN parsing and writing, python-chess
