Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support PGN notation #63

Open
12 of 73 tasks
lrozenblyum opened this issue Jul 6, 2013 · 0 comments
Open
12 of 73 tasks

Support PGN notation #63

lrozenblyum opened this issue Jul 6, 2013 · 0 comments
Assignees
Labels
core LegalPlayer, Position and related
Milestone

Comments

@lrozenblyum
Copy link
Owner

lrozenblyum commented Jul 6, 2013

It's a world standard and will simplify import/export of games

http://portablegamenotation.com/Specification.html - down at the moment of checking on 2020-12-20
https://www.thechessdrum.net/PGN_Reference.txt
http://www.saremba.de/chessgml/standards/pgn/pgn-complete.htm

  • Acceptance criteria

    • Normal moves
      • Prevent ambiguous moves like in 1. d4 d5 2. Nf3 Nf6 3. Nd2 the 3'd
      • promotion
      • castling
      • captures
    • special moves
    • output ('export') mode only? (is 'import' to be split?)
      • reduced export format?
      • seven tag roster
      • For PGN export format, a single blank line appears after the last of the tag
        pairs to conclude the tag pair section. This helps simple scanning programs to
        quickly determine the end of the tag pair section and the beginning of the
        movetext section.
    • service fields
    • non-standard fields
    • game outcome
    • tool for validation might be useful: https://www.cs.kent.ac.uk/people/staff/djb/pgn-extract/help.html#flag-summary
  • Issue with PGN itself https://zuttobenkyou.wordpress.com/2012/01/27/problems-with-the-portable-game-notation-pgn-standard/

    • Pay attention to encoding...
    • Line separators
    • 4.2. Tab character prohibition
    • Event (the name of the tournament or match event)
      • Simple case
      • Customization
      • colons processing (?)
      • special characers (?)
    • Site (the location of the event)
      • simple case
      • customization
    • Date (the starting date of the game)
      • known date
      • missing parts (?)
      • missing full day
    • Round (the playing round ordinal of the game)
      • number of game played
      • question if unknown
      • hyphen if not appropriate
    • White (the player of the white pieces)
      • human
        • Last name
        • first name/first initial
        • 1/more middle initials
        • More than 1 person playing white pieces
      • computer program
        • name
        • version information
      • Question mark if unknown
    • Black (the player of the black pieces)
    • Result (the result of the game)
      • white wins
      • black wins
      • drawn game
      • game still in progress
      • game abandoned
      • result otherwise unknown
      • same as termination marker in movetext
    • movetext section
      • export format (?): justification + 80
      • export format: space at start/end prohibition
      • The movetext section is composed of chess moves, move number indications,
        optional annotations, and a single concluding game termination marker.
      • move number indication
      • SAN
      • illegal moves not permitted
        • illegal moves permitted in commentary section
      • 8.2: Movetext section
  • Architectural challenge

    • Where to implement: custom player? Game level?
  • Testing ways

    • Engine vs Engine
    • Engine vs Winboard
      • Compare with Winboard-generated?
    • Engine vs UCI (?)
    • Import the output to some chess software, check if it's reasonable
    • extract a new project with PGN support (?)
    • PGNGameRealPlayersTest is running too long
lrozenblyum added a commit that referenced this issue Mar 7, 2017
…d in future will help for example implementing #63.
@lrozenblyum lrozenblyum added this to the 0.5 milestone Jan 5, 2019
@lrozenblyum lrozenblyum modified the milestones: 0.5, 0.6 Feb 14, 2019
This was referenced Feb 19, 2019
@lrozenblyum lrozenblyum added the core LegalPlayer, Position and related label Aug 20, 2019
@lrozenblyum lrozenblyum self-assigned this Sep 24, 2019
@lrozenblyum lrozenblyum pinned this issue Mar 30, 2020
@lrozenblyum lrozenblyum modified the milestones: 0.6, 0.7 Dec 13, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
core LegalPlayer, Position and related
Projects
None yet
Development

No branches or pull requests

1 participant