BPGN - Bughouse Portable Game Notation -------------------------------------- ***************************************** Table of Contents 1. Introduction 1.1 Reason for BPGN 1.2 Details of problem 2. BPGN Standard 1.0 (DrZukhar) 2.1 Proposed solution 2.2 Sample game 2.3 Four column display 3. BPGN Standard 1.1 (WhoAmI) 3.1 Addition of commentary information 3.2 BFEN Extension 4. BPGN Standard 1.2 (Jamesbaud) 4.1 Addition of lag and milliseconds ***************************************** 1. Introduction 1.1 Reason for BPGN The PGN standard has been very successful in providing a standard format for regular chess games and positions. There are now hundreds of thousands of games available in the PGN format. It is desirable to have a similar system for bughouse games. This document contains a proposal for a BPGN format (Bughouse Portable Game Notation). This will enable the development of bughouse theory by allowing the recording and analysis of bughouse matches. This standard is intended primarily for games played on the internet chess servers. These games represent the majority of bughouse matches being played as well as the highest quality. Very few OTB bughouse matches are recorded because Bughouse is usually played with short time controls. 1.2 Details of problem There are several aspects of Bughouse that make it unsuitable for the regular PGN standard. 1. A bughouse match is composed of two separate chess games. What happens on one board may not make sense unless the situation on the other board is known. 2. When replaying a match, move order and time used are crucial to the understanding of the match. One important tactic in Bughouse is to get an advantage in time and then sit and wait for a crucial piece. Likewise many bughouse sacrifices seem nonsensical without knowledge of the other game. 2. BPGN Standard 1.0 (DrZukhar) 2.1 Proposed solution BPGN is based on the existing PGN standard. Rather than re-quote the entire PGN document only the differences between the file types will be described here. Relevant sections of the PGN standard will be referenced by number. BPGN is designed to record bughouse *matches*. A match consists of two boards. The boards are designated A and B. Here’s a crude diagram showing the basic configuration: BlackA WhiteB +---------------+ +---------------+ | | | | | | | | | | | | | Board A | | Board B | | | | | | | | | | | | | | | | | +---------------+ +---------------+ WhiteA BlackB WhiteA and BlackB form one team. PGN has a mandatory seven tag roster (see PGN standard section 8.1.1). For BPGN these tags have been changed slightly to support bughouse matches. [Event] - the name of the tournament or match event example: [Event "fics rated bughouse match"] This tag indicates that it’s a bughouse match and whether it’s rated or unrated. See PGN standard section 8.1.1.1 for details. [Site] - the location of the event example: [Site "fics, Oklahoma City, OK USA"] This is the location of the server the game was played on. It’s important information because player names can vary between servers. WhoAmI on FICS isn’t necessarily the same player as WhoAmI on ICC. See PGN standard section 8.1.1.2 for details on the format for Site. [Date] - the starting date of the game example: [Date "1996.08.07"] The date tag is always in the format YYYY.MM.DD. See PGN standard section 8.1.1.3 for details on correct Date formatting. [Round] - the playing round ordinal of the game example: [Round -1-] While this is mandatory for PGN file, Round is not a mandatory BPGN tag. It is optional because most bughouse games are not part of a tournament or match. See PGN section 8.1.1.4. [WhiteA] - the player of the white pieces on the A board [WhiteB] - the player of the white pieces on the B board [BlackA] - the player of the black pieces on the A board [BlackB] - the player of the black pieces on the B board example: [WhiteA "raven"] [BlackA "Gnejs"] [WhiteB "Paaso"] [BlackB "death"] [WhiteAElo] - the rating of the white player on the A board [WhiteBElo] - the rating of the white player on the B board [BlackAElo] - the rating of the black player on the A board [BlackBElo] - the rating of the black player on the B board example: [WhiteAElo "2165"] [BlackAElo "2724"] [WhiteBElo "1925"] [BlackBElo "2307"] The name and rating tags are often combined on one line for readability. example: [WhiteA "raven"][WhiteAElo "2165"] [BlackA "Gnejs"][BlackAElo "2724"] See PGN standard section 9.1.2 for details on formatting ratings. [TimeControl] - the time control of the game, the format is starting time in seconds + increment in seconds example: [TimeControl "300+0"] [Result] - the result of the game example: [Result "0-1"] The [Result] tag is stated in terms of the White player on board A. "1-0" means his team won, "0-1" means his team lost. See PGN standard section 8.1.1.7 for details on how to format Result tags. The biggest difference between the notations is the actual game score. In order to maintain continuity both games are recorded together. This preserves the sequence of the match. In order to distinguish between the two games the move numbers have a letter added to identify which player made the move. In a bughouse match there are 4 first moves which may occur in any order (well, not *any* order, white still moves first). So move numbers on board A have a letter added. Uppercase for White, lowercase for black. 1A. e4 Board A white's first move 1a. Nf6 Board A black's first move 1B. Nf3 Board B white's first move 1b. Nc6 Board B black's first move Also the amount of time remaining in the game is recorded (in seconds as reported by the server). This number is in parenthesis after the move ex: 1A. e4 {178} In a 3 minute game this would indicate that White on Board A took 2 seconds to play e4. The actual movetext follows the PGN standard section 8.2.3 with the exception of drop moves. Drops are indicated using the @ sign. So the text N@g5 means a knight was dropped on the g5 square. P@f7 indicates that a pawn was dropped on f7. 2.2 Sample game A sample game in BPGN format, featuring the redoubtable Gnejs: [Event "fics rated bughouse match"] [Site "fics, Oklahoma City, OK USA"] [Date "1996.08.07"] [Round "-"] [WhiteA "raven"][WhiteAElo "2165"] [BlackA "Gnejs"][BlackAElo "2724"] [WhiteB "Paaso"][WhiteBElo "1925"] [BlackB "death"][BlackBElo "2307"] [TimeControl "300+0"] [Result "0-1"] 1A. d4 {298} 1a. e6 {298} 2A. e4 {296} 2a. Nf6 {297} 3A. Bd3 {294} 1B. e4 {290} 1b. Nc6 {299} 3a. Nc6 {295} 4A. e5 {292} 2B. Nc3 {287} 2b. Nf6 {298} 4a. Nd5 {293} 3B. Nf3 {285} 3b. d5 {297} 4B. exd5 {285} 5A. Nf3 {288} 4b. Nxd5 {295} 5a. d6 {292} 5B. d3 {282} 6A. Bb5 {285} 6a. Bd7 {291} 5b. e5 {290} 7A. Bxc6 {278} 6B. Nxd5 {278} 7a. Bxc6 {289} 6b. Qxd5 {288} 7B. B@e4 {276} 8A. P@e4 {273} 7b. Qd6 {283} 8a. Nb4 {286} 9A. Nc3 {272} 8B. Bxc6+ {274} 8b. bxc6 {282} 9a. P@g4 {279} 9B. Be3 {268} 10A. Ng5 {268} 10a. dxe5 {278} 11A. Nxf7 {266} 9b. P@d4 {272} 11a. Kxf7 {274} 12A. N@g5+ {263} 10B. N@e4 {262} 12a. Qxg5 {272} 13A. Bxg5 {261} 13a. exd4 {270} 14A. Nd5 {253} 14a. exd5 {264} 10b. dxe3 {239} 15A. B@e6+ {238} 15a. Kxe6 {262} 16A. B@f5+ {236} 16a. Kf7 {260} 11B. Qe2 {250} 11b. exf2+ {237} 17A. P@e6+ {229} 17a. Ke8 {259} 18A. exd5 {207} 18a. Nxd5 {257} 19A. Qxg4 {187} 19a. Bb4+ {255} 12B. Qxf2 {188} 20A. Kf1 {176} 20a. Bb5+ {251} 21A. Kg1 {170} 21a. N@e2+ {248} 22A. Qxe2 {168} 22a. Bxe2 {247} 12b. Qxd3 {215} 23A. P@f7+ {159} 23a. Kf8 {245} 24A. h4 {145} 24a. Bb5 {243} 13B. Bxd3 {162} 13b. Bb4+ {211} 25A. Rh3 {136} 25a. P@e2 {240} 26A. h5 {130} 26a. Q@f1+ {237} 14B. P@c3 {139} 14b. Bxc3+ {210} 15B. bxc3 {138} 27A. Kh2 {108} 27a. B@g1+ {232} 28A. Kg3 {107} 28a. Qxf2+ {231} 15b. P@e7 {187} 29A. Kg4 {105} 29a. N@e5+ {229} {death checkmated} 0-1 2.3 Four column display I’ve also invented a four column display format for bughouse matches. This makes the match very easy to play through, but the downside is that one game takes a whole page. raven (2165) Gnejs (2724) Paaso (1925) death (2307) 1. d4 {298} 1. e6 {298} 2. e4 {296} 2. Nf6 {297} 3. Bd3 {294} 1. e4 {290} 1. Nc6 {299} 3. Nc6 {295} 4. e5 {292} 2. Nc3 {287} 2. Nf6 {298} 4. Nd5 {293} 3. Nf3 {285} 3. d5 {297} 4. exd5 {285} 5. Nf3 {288} 4. Nxd5 {295} 5. d6 {292} 5. d3 {282} 6. Bb5 {285} 6. Bd7 {291} 5. e5 {290} 7. Bxc6 {278} 6. Nxd5 {278} 7. Bxc6 {289} 6. Qxd5 {288} 7. B@e4 {276} 8. P@e4 {273} 7. Qd6 {283} 8. Nb4 {286} 9. Nc3 {272} 8. Bxc6+ {274} 8. bxc6 {282} 9. P@g4 {279} 9. Be3 {268} 10. Ng5 {268} 10. dxe5 {278} 11. Nxf7 {266} 9. P@d4 {272} 11. Kxf7 {274} 12. N@g5+ {263} 10. N@e4 {262} 12. Qxg5 {272} 13. Bxg5 {261} 13. exd4 {270} 14. Nd5 {253} 14. exd5 {264} 10. dxe3 {239} 15. B@e6+ {238} 15. Kxe6 {262} 16. B@f5+ {236} 16. Kf7 {260} 11. Qe2 {250} 11. exf2+ {237} 17. P@e6+ {229} 17. Ke8 {259} 18. exd5 {207} 18. Nxd5 {257} 19. Qxg4 {187} 19. Bb4+ {255} 12. Qxf2 {188} 20. Kf1 {176} 20. Bb5+ {251} 21. Kg1 {170} 21. N@e2+ {248} 22. Qxe2 {168} 22. Bxe2 {247} 12. Qxd3 {215} 23. P@f7+ {159} 23. Kf8 {245} 24. h4 {145} 24. Bb5 {243} 13. Bxd3 {162} 13. Bb4+ {211} 25. Rh3 {136} 25. P@e2 {240} 26. h5 {130} 26. Q@f1+ {237} 14. P@c3 {139} 14. Bxc3+ {210} 15. bxc3 {138} 27. Kh2 {108} 27. B@g1+ {232} 28. Kg3 {107} 28. Qxf2+ {231} 15. P@e7 {187} 29. Kg4 {105} 29. N@e5+ {229} {death checkmated} 0-1 Problems The notation is obviously somewhat verbose. This is the price you pay for the interleaved format of the game scores, and the time information. The notation is hard to read. Yes, for humans. I prefer the 4 column display for reading games. Or better yet a BPGN viewer application. Chess servers don’t support the notation. A nice step would be getting the Servers to mail your bughouse matches to you in BPGN format so that we’re not dependant on external Bots to record the games. 3. BPGN Standard 1.1 (WhoAmI) 3.1 Addition of commentary information BugMaster WhoAmI's program 'BPGN viewer' uses the following symbols *inside* parenthesis to mean specific things to his program: {A:...} an annotation, for example 1.e4 {29} {A:!} stands for 1. e4! in the four column display {C:...} a comment {D:} a diagram should be inserted here (used when printing the game in four column mode) This isn't part of the BPGN standard, but it's not illegal since it's inside parenthesis. 3.2 BFEN Extension Thief 1.0 introduced 2 new tags in BPGN. Tag Setup "1" indicates that BPGN starts from position different from normal initial bughouse position. It should be followed by FEN tag that encodes the starting position in BFEN format. BFEN is an extension of the FEN format for describing an arbitrary bughouse position. It is used for logging adjourned games (resuming a game). It can also be used to log Fisher random bughouse games. BFEN example: r2k1r2/pbppNppp/1p2p1nb/1P5N/3N4/4Pn1q/PPP1QP1P/2KR2R1/BrpBBqppN w - - 45 56 | Q~4rk1/8/8/8/8/8/8/R3K2R w KQ - 45 60 Specificiations *************** As you see in the example, bfen has the following structure: board A bfen, followed by separator '|' followed by board B bfen. Board A bfen has the following structure: ----------------------------------------- 1. standard FEN for position Fen consists of 8 parts separated by slash (r2k1r2/pbppNppp/1p2p1nb/1P5N/3N4/4Pn1q/PPP1QP1P/2KR2R1). Each part represents a rank on the chessboard. The first part(r2k1r2) represents 8th rank and the last part (2KR2R1) represents 1st rank. Numbers in fen stand for empty squares, letters in lowercase stand for black pieces and letters in uppercase stand for white pieces. For example, r2k1r2 means black rook (on a-file) followed by 2 empty squares (on files "b" and "c") , followed by black king (on d-file), followed by an empty square (on e-file) followed by black rook (on f-file), followed by 2 empty squares (on g- and h-files). There is one modification from the normal FEN: ~ after piece denotes promoted piece (on board B white queen on a8 is a promoted one) 2. slash(/) 3. holdings BrpBBqppN; pieces in uppercase belong to white, pieces in lowercase belong to black; in the example white holds 3 bishops and a knight, black holds rook, queen and 3 pawns 4. space 5. side to move (w if white's move, b if black's move), 6. space 7. castling possibilities Dash denotes that nobody can castle, K=white can castle kingside, k=black can castle kingside, Q=white can castle queenside, q=black can castle queenside. On board A we have we have dash in the BFEN, so nobody can castle. On board B we have KQ in the bfen, ergo white can castle both kingside and queenside, while black cannot castle at all. 8. space 9. enpassant posibilities Dash=no enpassant possible, otherwise enpassant square,i.e e3 or d6, etc. In our example there are no enpassant possibilities. 10. space 11. white's time in seconds (45) 12. space 13. black's time in seconds (56) Board B bfen ------------ Board B bfen has similar structure. You may notice that pieces in hand are absent, so holdings and slash before holdings are omited. Finally a game example which illustrates the use of the setup and fen tag: [Event "fics unrated bughouse match"] [Site "fics"] [Date "2002.05.25"] [WhiteA "VampireGod"][WhiteAElo "2334"] [BlackA "JohnnyCarwash"][BlackAElo "UNR"] [WhiteB "Fudpucker"][WhiteBElo "2138"] [BlackB "GuestGuest"][BlackBElo "UNR"] [TimeControl "180+0"] [Result "1-0"] [Setup "1"] [FEN "r1b1k1nr/ppp1qpPp/2n5/1B1p1n1N/3P4/2P5/P1P1QPnP/R1BK2NR/PPBpp b kq - 142 164 | 2Nrkb1r/pPpbqppp/2p5/8/3N4/2P1B3/P1P1QPpP/R3K2R/Ppb w KQk - 142 163"] 14B. Nxe7 {140} 11a. Q@e1+ {160} 14b. gxh1=Q+ {162} 15B. Kd2 {138} 15b. Qxa1 {159} 16B. Qd1 {137} 16b. Qxd1+ {154} 17B. Kxd1 {136} 17b. Bxe7 {154} 18B. b8=Q {134} 18b. Bg4+ {150} 19B. P@f3 {132} 19b. Rxb8 {150} {GuestGuest resigns} 1-0 4. BPGN Standard 1.2 (Jamesbaud) 4.1 Addition of lag and milliseconds [Event "FICS rated bughouse match"] [Site "FICS - freechess.org"] [Date "2006-02-05"] [Time "13:26:00"] [WhiteA "Margency"][WhiteAElo "2126"] [BlackA "rln"][BlackAElo "2612"] [WhiteB "Altais"][WhiteBElo "2048"] [BlackB "izicik"][BlackBElo "2215"] [TimeControl "180+0"] [Lag "293 363 226 877 500 443 300 504 363 643 671 444 581 243 749 469 201 506 610 223 568 214 486 688 210 706 1103 246 245 218 218 374 1562 576 491 488 497 273 403 223 271 198 483 569 256 204 219 238 434 232 276 330 244 276 220 308 422 290 201 236 220 236 474 277 235 237 1143 287 368 274 235 210 236 270 251 500 293 229 224 197 222 261 664 388 240 308 274 193 268 268 281 186 1143 274 259 222 211 267 205 276 223 279 236 219 465 229 442 644 338 223 214 235 489 221 265 199 223 273 190 343 183 270 528 306 204 392 201 276 248 239 242 222 300 203 220"] [Result "0-1"] {C:This is game number 365771 at http://www.bughouse-db.org} 1A. e4{178.839} 1a. Nc6{179.900} 1B. d4{178.047} 2A. Nc3{178.628} 2a. Nf6{179.800} 1b. Nf6{178.875} 3A. Nf3{178.398} 2B. Nf3{177.947} 3a. d5{179.534} 2b. e6{178.500} 4A. exd5{178.188} 3B. Nc3{177.847} 4a. Nxd5{179.434} 3b. d5{177.843} 5A. d4{178.018} 4B. Bg5{177.747} 5a. e5{179.091} 6A. Bb5{177.357} 4b. Be7{176.828} 5B. Bxf6{177.436} 5b. Bxf6{176.728} 6a. Bb4{178.075} 6B. e3{177.336} 7A. O-O{177.177} 7a. Bxc3{177.232} 8A. Nxe5{176.666} 6b. Nc6{175.072} 7B. Bd3{176.615} 7b. P@e4{173.259} 8B. Bxe4{176.325} 8a. Bd7{173.841} 8b. dxe4{173.159} 9B. Nxe4{176.225} 9A. Nxd7{175.204} 9b. P@d5{173.059} 10B. Nxf6+{175.644} 9a. Qxd7{172.591} 10b. Qxf6{172.825} 10A. B@h3{174.873} 10a. P@e6{170.481} 11A. Bxc6{172.640} 11a. bxc6{169.215} 12A. N@e5{172.540} 11B. B@g5{168.464} 11b. Qg6{170.966} 12a. B@b5{166.575} 12B. N@f4{167.583} 12b. Qf5{169.638} 13A. B@d3{170.226} 13B. N@h4{164.399} 13a. Bxd3{162.371} 14A. cxd3{169.716} 13b. Qe4{164.341} 14a. Bxd4{158.215} 14B. P@d3{162.036} 15A. Nxd7{167.853} 15a. Kxd7{158.115} 16A. Qg4{165.810} 16a. P@c5{155.662} 14b. B@a5+{157.450} 15B. B@d2{160.264} 15b. Bxd2+{155.810} 16B. Qxd2{160.164} 17A. B@e4{158.620} 16b. B@a5{153.482} 17B. P@c3{158.872} 17a. h5{151.881} 18A. Qf3{157.368} 18a. N@e5{149.053} 19A. Bxd5{153.783} 17b. h6{141.701} 19a. Nxf3+{147.897} 18B. dxe4{156.749} 20A. Bxf3{152.551} 18b. hxg5{140.998} 20a. B@d6{146.038} 21A. B@e3{150.639} 19B. Nhg6{152.854} 19b. fxg6{138.248} 21a. Rad8{140.679} 20B. Nxg6{144.502} 20b. Q@h7{136.545} 22A. Bxd4{110.681} 22a. Bxh2+{140.579} 21B. P@f7+{109.381} 21b. Kd8{136.248} 23A. Kxh2{106.826} 23a. cxd4{139.689} 24A. N@e5+{104.693} 24a. Ke8{139.095} 25A. Bxc6+{103.782} 25a. P@d7{138.017} 22B. Nxh8{102.211} 26A. Nxd7{102.521} 22b. Qxh8{134.905} 23B. N@g8{101.770} 26a. Q@d6+{135.829} 27A. N@e5{100.828} 27a. Qxc6{135.001} 28A. Nxc6{100.057} 28a. Rxd7{133.829} 29A. Ne5{99.196} 23b. Q@f8{126.045} 29a. R@d5{132.204} 30A. Nxd7{96.873} 24B. N@g6{98.706} 30a. Kxd7{132.104} 31A. Bf4{96.171} 24b. Qhxg8{124.452} 25B. fxg8=Q{96.734} 31a. Rb8{129.495} 25b. Qxg8{123.905} 32A. Rac1{94.548} 26B. B@h7{94.481} 26b. Qf7{122.343} 32a. Q@b6{124.074} 27B. Nh8{91.397} 33A. Rxc7+{92.345} 33a. Qxc7{123.167} 34A. Bxc7{92.124} 34a. Kxc7{122.683} 27b. Qe7{118.156} 35A. N@a6+{91.313} 28B. N@g6{89.163} 35a. Kb7{121.323} 36A. Nxb8{90.692} 36a. Kxb8{120.682} 37A. P@e7{89.200} 28b. Bd7{112.671} 29B. N@f7+{87.771} 29b. Kc8{111.593} 30B. Nxe7+{86.649} 30b. Nxe7{111.374} 37a. Q@d6+{112.714} 31B. R@d8#{85.317} {izicik checkmated} 0-1