PGN в шахматах: что хранит файл партии и что теряется при переносе
Когда шахматную партию скачивают с сайта, переносят в базу или открывают в программе анализа, одним из основных форматов обмена становится PGN. Снаружи это обычный текстовый файл, но внутри он может содержать не только ходы, но и сведения о партии, комментарии, варианты и дополнительные данные.
Разберемся, что относится к ядру PGN, чем он отличается от FEN и почему после переноса между сервисами часть информации иногда исчезает.
PGN хранит не позицию, а историю партии
PGN расшифровывается как Portable Game Notation - переносимая запись шахматной партии. Формат задуман так, чтобы один и тот же текст могли читать и человек, и шахматная программа.
В одном PGN-файле может находиться одна партия или сразу последовательность многих партий. Каждая из них состоит из двух основных частей: сведений о партии и записи ходов.
Первая часть: сведения о партии
В начале записи находятся теги - строки в квадратных скобках. Для архивной записи стандарт определяет семь основных полей: событие, место, дату, номер тура, имя игрока белыми, имя игрока черными и результат.
[Event "Example"]
[Site "?"]
[Date "2026.??.??"]
[Round "1"]
[White "Player A"]
[Black "Player B"]
[Result "*"]
1. e4 e5 2. Nf3 Nc6 3. Bb5 *
Это условный пример незавершенной партии: звездочка вместо результата означает, что окончательный результат не указан. Для законченной партии используются значения 1-0, 0-1 или 1/2-1/2.
Семью базовыми полями возможности PGN не ограничиваются. Дополнительные теги могут хранить рейтинги игроков, контроль времени, код дебюта ECO, имя комментатора и другие сведения. Поэтому две записи одной и той же партии могут иметь одинаковые ходы, но разный объем сопутствующей информации.
Вторая часть: ходы и аннотации
После заголовка идет сама партия. Ходы записываются в стандартной алгебраической нотации SAN. В простейшем PGN на этом почти все и заканчивается, но формат позволяет хранить значительно больше.
1. e4 e5 2. Nf3 Nc6 3. Bb5 a6
(3... Nf6) 4. Ba4 {Комментарий к позиции} Nf6 *
Круглые скобки позволяют записывать альтернативные варианты, а фигурные - текстовые комментарии. Для шахматных оценок используются также NAG-коды, например $1 или $14. Их смысл и связь с привычными обозначениями !, ? и оценками позиции подробнее разобраны в материале об обозначениях в шахматных комментариях.
Почему два PGN одной партии могут выглядеть по-разному
PGN задает общий язык обмена, но не требует от каждой программы сохранять абсолютно все данные, которые когда-либо были добавлены к партии.
Один сервис может экспортировать только основную последовательность ходов. Другой добавит комментарии и варианты. Третий включит рейтинги, время на часах, оценки движка или собственные служебные данные.
Например, в современных PGN встречаются конструкции вроде [%clk 0:12:34] для времени на часах или [%eval 0.35] для машинной оценки. Такие данные обычно помещаются внутрь комментариев как структурированные команды. Они полезны, но относятся к расширениям и соглашениям между программами, а не к самому минимальному ядру PGN.
Поэтому принимающая программа может корректно импортировать ходы, но не понять дополнительную команду. Иногда она сохранит ее как обычный текст, иногда проигнорирует, а при следующем экспорте дополнительная информация может исчезнуть.
Что переносится надежнее всего
Самая устойчивая часть PGN - основные сведения о партии, последовательность легальных ходов и результат. Стандартные комментарии, варианты и NAG-коды тоже предназначены для обмена, но их фактическое отображение зависит от возможностей конкретной программы.
Менее переносимы данные, привязанные к интерфейсу определенного сервиса: цветные стрелки и выделенные поля, графики времени, машинные оценки, внутренние идентификаторы, ссылки и другие специальные элементы. Они могут находиться внутри PGN, но наличие записи еще не означает, что другой сервис сможет воспроизвести ее так же.
PGN и FEN решают разные задачи
PGN легко спутать с FEN, потому что оба формата используются для передачи шахматных данных. Но их смысл принципиально различается.
FEN описывает состояние одной позиции: где стоят фигуры, чей ход, какие права на рокировку сохранились и другие необходимые параметры. Он похож на снимок шахматной доски вместе с ее скрытым состоянием.
PGN, напротив, хранит развитие партии во времени: кто играл, какие ходы были сделаны, чем закончилась партия и какие комментарии или варианты с ней связаны.
При этом два формата могут работать вместе. Если партия начинается не из обычной начальной позиции, PGN предусматривает тег SetUp и тег FEN, который задает исходное положение. После этого запись партии продолжается обычными PGN-ходами.
Как PGN связывает шахматные сервисы
Практическая ценность формата становится понятна при переносе партии между разными инструментами. Партию можно сыграть на одном сайте, сохранить как PGN, добавить в личную базу, открыть в другой программе и отправить тренеру или партнеру.
В очных турнирах сначала должен появиться цифровой поток ходов - этот процесс отдельно разобран в материале о том, как шахматная партия с турнирной доски попадает в интернет. Уже полученная партия может сохраняться и распространяться в PGN.
При открытии PGN в программе анализа движок не обязан получать из файла готовую оценку каждого хода. Он может просто восстановить последовательность позиций и выполнить анализ заново. Поэтому сам PGN и анализ шахматного движка - связанные, но разные слои данных.
Что проверить перед экспортом партии
- Если нужны только ходы и результат, достаточно обычного PGN.
- Если важны комментарии и варианты, нужно выбирать экспорт с аннотациями и после импорта проверить, что они сохранились.
- Если нужны часы, оценки движка или графические пометки, следует убедиться, что оба используемых сервиса понимают соответствующие расширения.
- Если партия начинается с нестандартной позиции, нужно проверить наличие
SetUpиFEN.
Главное
PGN - это не просто список шахматных ходов и не фотография позиции. Это переносимый контейнер партии: он соединяет метаданные, последовательность ходов, результат и при необходимости аннотации.
Именно поэтому PGN удобно использовать как общий язык между шахматными сайтами, базами и программами. Но чем дальше данные отходят от стандартного ядра формата и зависят от возможностей конкретного сервиса, тем выше вероятность, что при переносе часть информации изменится или исчезнет.