Wyjaśnienie
PGN, skrót od Portable Game Notation, to tekstowy format zaprojektowany do zapisywania i wymiany partii szachowych. Można go otworzyć jako zwykły tekst, ale jego struktura pozwala programom, stronom i bazom danych odtworzyć partię.
Dwie części partii PGN
- Sekcja znaczników zawiera dane w nawiasach kwadratowych, takie jak Event, Site, Date, Round, White, Black i Result. Te siedem znaczników tworzy podstawowy zestaw archiwalny.
- Sekcja ruchów zawiera numery ruchów, ruchy w , opcjonalne komentarze, warianty i końcowy znacznik wyniku.
Komentarze zwykle umieszcza się w nawiasach klamrowych. Warianty alternatywne zapisuje się w nawiasach i mogą zawierać kolejne warianty. Krótkie oceny można przechowywać jako NAG, kody złożone ze znaku $ i liczby. Jeden plik .pgn może zawierać jedną lub wiele rozdzielonych partii.
PGN zapisuje pełną partię albo drzewo wariantów, a nie tylko obraz szachownicy. Gdy partia zaczyna się z pozycji innej niż początkowa, znaczniki SetUp i mogą wskazać pozycję początkową partii. FEN samo opisuje pozycję, a nie historię ruchów, które do niej doprowadziły.
Czym PGN nie jest
PGN nie jest protokołem, dzięki któremu silnik myśli lub komunikuje się z interfejsem. Protokoły takie jak wymieniają polecenia między programami, a PGN wymienia zapisy partii. Nie gwarantuje też, że wszystkie programy akceptują dokładnie te same rozszerzenia, dlatego najbardziej przenośne pliki zachowują standardową strukturę i używają legalnych ruchów.
Znacznik końcowy musi być 1-0, 0-1, 1/2-1/2 albo *. Musi też odpowiadać znacznikowi Result w nagłówku. Gwiazdki używa się, gdy partia trwa lub nie ma ostatecznego wyniku.
Częste nieporozumienia
PGN a FEN
PGN zapisuje partię i jej metadane, a FEN opisuje jedną pozycję początkową lub pośrednią.
PGN a UCI
PGN jest formatem zapisu, a UCI protokołem komunikacji z silnikami.
Źródła
- 1.Portable Game Notation Specification and Implementation Guide, Steven J. Edwards
- 2.PGN parsing and writing, python-chess
