围棋棋谱格式SGF文件解读

sgf是Smart Game Format的简拼,大致翻译是“灵活的游戏格式”;所谓“灵活”,应该是说它最初的目的是为了可以记录所有棋类游戏(Board Game)的棋谱,包括国际象棋、跳棋等。

了解每个标签的含义,方便编程。

官方文档:
https://senseis.xmp.net/?SGF

sgf文件是Smart Game Format的简写,绝大多数棋谱文件都是用sgf格式的文件还现在几乎是个中对弈软件和大谱程序都支持sgf格式!可以说是棋谱文件事实上的标准,清晰 小巧易用方便,深受棋友的喜欢,不少汽油对sgf文件中标志不是很明白,最近翻译了一篇关于sgf文件文章,与大家分享,由于本人英文水平有限,有些专业术语很难翻译准确,附上原文,看不明白的地方自己还是直接看原文。 

AB: Add Black: locations of Black stones to be placed on the board prior to the first move
AB:添加黑子:在下子之前放在棋盘上的黑子 
AW: Add White: locations of White stones to be placed on the board prior to the first move. 
AW:添加白子: 在下子之前放在棋盘上的白子 
AN: Annotations: name of the person commenting the game 
AN:注解:评论棋局的人的名字 
B: a move by Black at the location specified by the property value. 
B 一个移动的黑子,由一个指定的属性值定位(用横纵坐标表示) 
W: a move by White at the location specified by the property value. 
W: 一个移动的白子,由一个指定的属性值定位(用横纵坐标表示) 
C: Comment: a comment. 
C:注解,评论(一般针对) 
FF: File format: version of SGF specification governing this SGF file. 
FF:文件格式:sgf规范的版本管理操纵这个sgf文件 
GM: Game: type of game represented by this SGF file. A property value of 1 refers to Go 
GM:游戏: 游戏类型表示这个sgf文件(如属性值为1表示19路盘) 
OT: Overtime: overtime system. 
OT: 超时:系统超时 
PB: Black Name: name of the black player. 
PB:黑方的名字 
WR: White Rank: rank of the White player 
WR:白方的等级(若1k,1d,9p等) 
PC: Place: place where the game was played (e.g.: Tokyo). 
PC:地方:比赛所在的位置(如:东京) 
HA: Handicap: the number of handicap stones given to Black. Placment of the handicap stones are set using the AB property 
HA:障碍: 预先放置在棋盘上的黑子,放置的位置使用AB属性进行标示(即让子棋中事先放在盘上的棋子) 
KM: Komi: komi. 
KM:目数 
RE: Result: result, usually in the format “B+R” (Black wins by resign) or “B+3.5” (black wins by 3.5 moku). 
RE:结果:通常使用格式”B+R”(黑中盘胜)或者 “B+3.5′(黑胜3.5目) 
RU: Rules: ruleset (e.g.: Japanese) 
RU:规则:规则集(如日本规则) 
SZ: Size: size of the board, non square boards are supported 
SZ:尺寸:棋盘尺寸,非正方型板支持 
US: User: name of the person who created the SGF file. 
US:用户:该sgf文件的创建者 

一、概况

目前最通用的围棋棋谱格式是sgf格式,绝大多数围棋软件在使用它。如果有棋友发给你棋谱,多半是xxx.sgf这样的文件名。当然还有很多私有格式,例如弈城(Tygem)是gib,天顶(Zenith)是zgf(这2种棋谱通过围棋宝典《棋力提高》内的《本地棋谱》均可直接打开),弈典(Stonebase)的sdb格式(貌似只能在弈典内打开,但可以转为sgf),等等。

sgf是Smart Game Format的简拼,大致翻译是“灵活的游戏格式”;所谓“灵活”,应该是说它最初的目的是为了可以记录所有棋类游戏(Board Game)的棋谱,包括国际象棋、跳棋等。

它存储的内容是文本,因而便于移植到不同的平台,同时还意味着短小精悍。

二、例子

(;GM[1]SZ[19]HA[0]KM[3又3/4子]AP[MultiGo:4.4.4]DT[2018-02-06]PB[柯洁]BR[9P]PW[朴廷桓]WR[9P]GN[柯朴十番棋第1局]PC[北京]RE[B+R];B[pd];W[dd])

声明:棋谱内容都是即兴打的,柯朴十番棋并不存在,更不会在今天举行。

上述这个仅100多个字符的文本就是一张棋谱,为了演示,它只有2手(即使几百步的棋谱,也不过几K大小),它在围棋宝典里显示如下:

三、解析

接下来解析那段文本,为方便起见,把例子再复制到这里:

(;GM[1]SZ[19]HA[0]KM[3又3/4子]AP[MultiGo:4.4.4]DT[2018-02-06]PB[柯洁]BR[9P]PW[朴廷桓]WR[9P]GN[柯朴十番棋第1局]PC[北京]RE[B+R];B[pd];W[dd])

首先,整张棋谱以左括号 开始,以右括号 结束。这对()内可能还有成对的(),会在后边解释。

然后,前边一段算是文件头,记录了该谱的一些基本信息(棋友有兴趣可以看一下,没兴趣跳到后边看),下边列出了一些常用的标记:

GM(即game)表示游戏种类,1代表围棋;

SZ(即size)表示棋盘尺寸,本谱是19路棋盘;如果是13路、9路,修改这里就好;

HA(Handicap)表示让子数,0表示分先;

KM(komi)表示贴目(帖子),本谱为黑贴3又3/4子;

AP(application)表示形成棋谱的应用,本谱电脑软件猫踢狗(MultiGo);

DT(date)表示比赛日期,本谱是2018年2月6日;

PB(player black)表示黑方姓名;BR(black rank)表示黑方段位;

PW(player white)表示白方姓名;WR(white rank)表示白方段位;

GN(game name)表示比赛名称,有的棋谱则喜欢用EV(event)来记录比赛名称;

PC(place)表示比赛地点,本谱是北京;

RE(result)表示比赛结果,本谱是黑中盘胜(B+R代表,具体规则不在本文展开);

等等;以上信息很多可以不录入,例如不录入HA(让子)就可以认为是分先,不录入SZ(棋盘尺寸)就可以认为是19路棋盘,这里是为了作介绍。

以上信息的重要部分一般显示在棋盘周围。例如宝典会在棋谱最初、最末的注解里打印:(黑)柯洁 VS 朴廷桓 黑中盘胜。如果要看全部的详细信息,可以找到相关按钮,就会列出全部。

最后,算是正文了,按先后次序记录了棋步序列(以分号;开始每一步,B即Black表示黑子,W即White表示白子)

;B[]表示黑方某步落子,坐标为pd(右上角星位);

;W[]表示白方某步落子,坐标在dd(左上角星位)。

关于这种诸如pd, dd这样的奇怪坐标,反正是程序内部的,棋友不太需要了解。

以上信息是棋步,需要直接显示在棋盘上。

至于棋子上是否显示手数是可在软件里设置的。

对于爱好者来说,有解说、有变化图的棋谱比一张只有棋步序列的棋谱帮助要大些;所以对于棋谱来说,解说、变化图是很重要的。

四、注解

注解在sgf里是怎样记录的呢?很简单,就是在相应棋步后跟上C[注解的内容],这样的东东(C即comment,注解的意思)。

让我们暂时忽略本文开始那张棋谱的有些繁杂的文件头,只关注棋步序列,把前边的棋谱改为这样:

(;B[pd]C[柯洁第一手就下了必胜的右上角星位;如果他下在×位则白棋有利。]MA[nf]

;W[dd]C[朴廷桓第2手则下在了必败的左上角星位;于是他主动认输了。如果他下在○位则劣势不大。]CR[cc])

上边这一段,就是一张带有注解的棋谱啦。

声明:注解内容随便写的,仅为作介绍。

在宝典里它这样显示:

上图:第1步的解说在第1步显示在棋盘上时,在棋盘下方显示(显示位置由软件决定)。

这里,棋盘上的×是根据此步对应的标记MA[](MA=mark)来显示其位置的;这种标记有助于对解说一目了然(不用在注解里指出坐标)。

上图:第2步的解说在第2步显示在棋盘上时,在棋盘下方显示(显示位置由软件决定)。

这里,棋盘上的○是根据此步对应的标记CR[](CR=circle)来显示其位置的;这种标记有助于对解说一目了然(不用在注解里指出坐标)。

类似的标记还有方块SQ(squre)、三角TR(triangle),甚至还有把文字(包括汉字)直接打印在棋盘上的标记LB(label)。

可以想象一下,一张200步的棋谱,若有30步有注解,一步步按前进按钮,很难找全这些注解;而且你将不得不一直盯着棋盘下的文字区以免错过注解文字,注意力不能集中于棋盘上的棋局进程。

针对这个问题,宝典在屏幕最下方(便于手指够到)设计了《注》《解》两个按钮,意思很明显:按《解》就表示直接跳到下一个有注解的棋步,按《注》就表示直接蹦到上一个有注解的棋步。当然,有的棋谱没有注解,按它们就直接跑到棋谱尾部或开头了。

顺便提一句:棋盘周围粗现了坐标,这个并非在棋谱里的信息,是由软件自行计算出来。坐标系有好几种,有带英文大写字母I的,有不带的,这个就不在本文展开了。

五、变化

有注解很好,若有变化图对棋友学棋就更好了。

变化图是怎么形成的呢?

很简单:以最常见的电脑围棋软件猫踢狗制作棋谱为例:

1、录谱人把需要添加变化的棋步(例如第2步)退一步(点一下工具栏里的后退按钮,红圈所标)

2、此时白2消失,录谱人把棋子摆在变化的位置就好(假设变化图从小目开始,就在左上小目落子)。

此时,此谱若在宝典里看,就会在显示第1步时,自动在左上出现A, B两个字母(即白2有2个变化,若须摆更多变化也可),可以点击它们分别进入对应的变化图,进一步学习。

可以想象一下,200步的棋谱,有30步有变化图,如果一步步按前进,很难找全变化图,你可能会错过不少围棋专家为你辛辛苦苦做的变化图。

针对这个问题,宝典在屏幕最下方(便于手指够到的)设计了《变》《化》两个按钮,意思很明显:按《化》就表示直接跳到下一个有变化图的棋步,按《变》就表示直接蹦到上一个有变化图的棋步。当然,有的棋谱是没有变化图,按它们就直接跑到棋谱尾部或开头了。

希望大家擅用这些按钮,提高学习效率。向大家推荐一个“练习场所”:《棋力提高》的《名人名局》的《吴清源名局细解》里,例如第1局,里边有大量注解和变化图,大家用这些按钮体验一下。

顺便提一句,宝典还可以跳步(设置为5、10、15等步长),在棋盘下的齿轮里即可设置。设置后,《注》和《解》将变成跳步按钮。这个设置适合那些没有注解、变化的棋谱

在sgf文件里,变化图是这样存储的:

在sgf最外边总的()内,每个变化图就是一对()内的一段内容,同一层级的变化图就是并列的()排在一起;变化图内可能还有变化图,一级级嵌套就是了。

六、结语

关于sgf格式简介就写到这里。非常钦佩制定sgf标准的人,他对围棋做出的贡献是建设性的,相当于围棋届仓颉。另外,电脑围棋软件猫踢狗的开发者也很厉害,目前是电脑上最常用的棋谱编辑软件。

作者:

喜欢围棋和编程。

 
发布于 分类 围棋标签

《围棋棋谱格式SGF文件解读》有3个想法

  1. 首先,整张棋谱以左括号 ( 开始,以右括号 ) 结束。这对()内可能还有成对的(),会在后边解释。——解释在哪里?

发表评论

电子邮件地址不会被公开。