توضیح
PGN ، مخفف Portable Game Notation یا نمادگذاری قابلحمل بازی، قالبی متنی برای ذخیره و تبادل بازیهای شطرنج است. انسان میتواند آن را مانند متن عادی باز کند و برنامهها، وبسایتها و پایگاههای داده با ساختارش بازی را بازسازی میکنند.
دو بخش یک بازی PGN
- بخش جفتبرچسب اطلاعاتی مانند Event، Site، Date، Round، White، Black و Result را در کروشه نگه میدارد. این هفت برچسب مجموعه پایه بایگانیاند.
- بخش متن حرکت شامل شماره حرکتها، حرکتها به ، توضیحات اختیاری، شاخهها و یک نشانه نهایی نتیجه است.
توضیحات معمولاً میان آکولاد قرار میگیرند. شاخههای جایگزین در پرانتز میآیند و میتوانند شاخههای تودرتو داشته باشند. ارزیابیهای کوتاه به صورت NAG، یعنی کدهای ساختهشده از $ و عدد، ذخیره میشوند. یک فایل .pgn میتواند یک یا چند بازی جداگانه داشته باشد.
PGN یک بازی یا درخت شاخهها را ثبت میکند، نه فقط تصویر صفحه. اگر بازی از وضعیتی غیراستاندارد شروع شود، برچسبهای SetUp و آن وضعیت آغازین را مشخص میکنند. FEN به تنهایی وضعیت را توصیف میکند، نه تاریخچه حرکتهای منتهی به آن.
PGN چه چیزی نیست
PGN پروتکلی برای فکر کردن موتور یا ارتباط آن با رابط گرافیکی نیست. پروتکلهایی مانند فرمانها را میان برنامهها ردوبدل میکنند؛ PGN سوابق بازی را مبادله میکند. برنامهها در افزونههای پذیرفتهشده نیز تفاوت دارند، پس قابلحملترین فایلها ساختار استاندارد و حرکتهای قانونی دارند.
نشانه پایانی باید 1-0، 0-1، 1/2-1/2 یا * باشد و با سرآیند Result نیز تطابق داشته باشد. ستاره برای بازی در جریان یا بدون نتیجه نهایی موجود به کار میرود.
اشتباههای رایج
PGN در برابر FEN
PGN بازی و فرادادهاش را ذخیره میکند؛ FEN یک وضعیت آغازین یا میانی را توصیف میکند.
PGN در برابر UCI
PGN قالب ثبت بازی است؛ UCI پروتکل ارتباط با موتور است.
منابع
- 1.Portable Game Notation Specification and Implementation Guide, Steven J. Edwards
- 2.PGN parsing and writing, python-chess
