Введение
Портативная игровая нотация (PGN) — это стандартный текстовый формат для записи шахматных партий (включая ходы и сопутствующие данные), который легко читается человеком и поддерживается большинством шахматного программного обеспечения.
Portable Game Notation (PGN) is a standard plain text format for recording chess games (both the moves and related data), which can be read by humans and is also supported by most chess software.
История
PGN был разработан примерно в 1993 году Стивеном Дж. Эдвардсом и впервые получил широкое распространение и был специфицирован в новостной группе Usenet rec.games.chess.
Использование
PGN структурирована "для удобного чтения и записи человеком, а также для простого разбора и генерации компьютерными программами". Сами шахматные ходы представлены в алгебраической шахматной нотации с использованием английских букв для обозначения фигур. Расширение файла – pgn. В спецификации PGN предусмотрено два формата: "импорт" и "экспорт". Формат импорта описывает данные, которые могли быть подготовлены вручную, и намеренно допускает неточности; программа, способная читать данные PGN, должна уметь обрабатывать этот менее строгий формат импорта. Формат экспорта, напротив, весьма строг и описывает данные, подготовленные под управлением программы, подобно отформатированному исходному коду программы, переформатированному компилятором. Представления в формате экспорта, созданные разными программами на одном компьютере, должны быть абсолютно идентичными, вплоть до байта. Текст PGN начинается с набора "пар тегов" (имя тега и его значение), за которым следует "текст ходов" (шахматные ходы с необязательными комментариями).
Пара тегов
Пара тегов начинается с открывающей левой скобки, за которой следует имя тега в обычном текстовом формате ASCII. Значение тега заключается в двойные кавычки, после чего следует закрывающая правая скобка. Кавычка внутри значения тега обозначается обратной косой чертой, за которой немедленно следует кавычка. Обратная косая черта внутри значения тега обозначается двумя соседними обратными косыми чертами. Специальные управляющие коды, включающие escape-символы, переводы строки или подачи строки для разделения полей, отсутствуют, и избыточные встроенные пробелы обычно игнорируются при разборе.
Семизначный список
Для архивного хранения необходимы данные PGN, включающие семь пар тегов, известных как "Seven Tag Roster". В формате экспорта эти пары тегов должны располагаться перед всеми остальными парами тегов в следующем порядке:
Пара тегов по желанию
Стандарт допускает использование других необязательных пар тегов. Наиболее часто встречающиеся из них:
Текст перемещения
Текст движений описывает фактические ходы игры. Это включает в себя индикаторы номера хода (числа, за которыми следует один или три периода; один, если следующий ход белых, три – если следующий ход чёрных) и текст движений в стандартной алгебраической нотации (SAN). Для большинства ходов SAN состоит из буквенного обозначения фигуры, «x», если есть взятие, и двухсимвольного алгебраического названия конечного поля, на которое переместилась фигура. Буквенные обозначения: К (король), Ф (ферзь), Л (ладья), С (слон) и К (конь). Пешка в SAN movetext обозначается без буквы, но в других контекстах используется обозначение П. Алгебраическое название любого поля соответствует стандартной алгебраической шахматной нотации: с точки зрения белых, крайнее левое поле, ближайшее к белым, – a1, крайнее правое поле, ближайшее к белым, – h1, а крайнее правое (с точки зрения белых) поле, ближайшее к чёрным, – h8. В некоторых случаях для устранения неоднозначности требуется более подробное описание; в этом случае после названия фигуры указывается буква вертикали, число горизонтали или точное название поля (в порядке предпочтения). Например, Кge2 означает, что конь, изначально стоявший на вертикали g, перемещается на e2. Рокировка на королевском фланге в SAN обозначается последовательностью O-O; рокировка на ферзевом фланге – последовательностью O-O-O (обратите внимание, что это заглавные буквы «О», а не нули, вопреки стандарту FIDE для записи). Превращение пешки обозначается добавлением знака «=» к полю назначения, за которым следует фигура, в которую превращена пешка. Например: e8=Ф. Если ход – шах, к нему добавляется знак «+»; если ход – мат, добавляется знак «#». Например: e8=Ф#. Комментатор, желающий предложить альтернативные ходы, сделанные в игре, может вставить варианты в скобках. Они также могут комментировать игру, вставляя в текст движений числовые аннотационные символы (NAG). Каждый NAG отражает субъективное впечатление о ходе, предшествующем NAG, или о полученной позиции. Если результат игры отличается от «*», результат повторяется в конце текста движений.
+ is also appended; if the move is a checkmating move, # is appended instead. For example: e8=Q#. An annotator who wishes to suggest alternative moves to those actually played in the game may insert variations enclosed in parentheses. They may also comment on the game by inserting Numeric Annotation Glyphs (NAGs) into the movetext. Each NAG reflects a subjective impression of the move preceding the NAG or of the resultant position. If the game result is anything other than *, the result is repeated at the end of the movetext.
Комментарии
Комментарии вставляются либо с помощью символа ; (комментарий, продолжающийся до конца строки), либо с помощью символа { (который продолжается до соответствующего }). Комментарии не могут быть вложенными.
Управление шахматными вариантами
Многие шахматные варианты можно записать с помощью PGN, при условии, что названия фигур можно ограничить одним символом, как правило, буквой, а не цифрой. Обычно они обозначаются тегом с именем "Variant", в котором указывается название правил. Следует избегать термина "Variation", поскольку он относится к названию варианта дебюта. Следует отметить, что традиционные шахматные программы могут обрабатывать лишь небольшое количество вариантов. Нотация Форсайта-Эдвардса используется для записи начальной позиции вариантов (например, Chess960), имеющих начальные позиции, отличные от стандартной начальной позиции шахмат.