[SGF FF[4] - Smart Game 最后更新: 2003-10-9(原文last updated: 1998-07-27)


SGF 用户指南

版本号: 1.2

 
作者: Arno Hollosi mailto:ahollosi@xmp.net
翻译: 方元 mailto:taozuolin@hotmail.com
基础篇
  1. 什么是 SGF?
  2. 基本概念
  3. “走子”和“放置棋子”
  4. 风格
     
提高篇
  1. 分支
  2. 棋盘标记
  3. 评论和注释
  4. 比赛信息
     
疑难解答
  1. 待续

1. 什么是 SGF?

SGF 是智能游戏格式(Smart Game Format)的缩写。

SGF 是为了存储双人棋类对局记录而设计的一种文件格式。它是纯文本格式,就是它不能包含二进制数据,所以可以方便地使用电子邮件发送或发送到新闻组。基于树形结构的意思是从根节点开始沿着主枝进行或转到 分支(或分支的分支)。

版本

SGF Anders Kierulf 1987 发明,并逐渐流行开来。此后 SGF 有两个主要的修订版。

SGF 文件看上去是怎样的?

这是一个简短的例子:
(;FF[4]GM[1]SZ[19]AP[SGFC:1.13b]

PB[troy]BR[12k*]
PW[john]WR[11k*]
KM[0.5]RE[W+12.5]
DT[1998-06-15]
TM[600]

;B[pd];W[dp];B[pq];W[dd];B[qk];W[jd];B[fq];W[dj];B[jp];W[jj]
;B[cn]LB[dn:A][po:B]C[dada: other ideas are 'A' (d6) or 'B' (q5)]
;W[eo](;B[dl]C[dada: hm - looks troublesome.
Usually B plays the 3,3 invasion - see variation];W[qo];B[qp]
...
;W[sr];B[sk];W[sg];B[pa];W[gc];B[pi];W[ph];B[de];W[ed];B[kn]
;W[dh];B[eh];W[se];B[sd];W[af];B[ie];W[id];B[hf];W[hd];B[if]
;W[fp];B[gq];W[qj];B[sj];W[rh];B[sn];W[so];B[sm];W[ep];B[mn])
...
(;W[dq]N[wrong direction];B[qo];W[qp]))

SGF 应用软件

SGF 应用软件可运行于任何平台。它们大多数是免费软件,也有一些是共享软件。

没有一个程序是完美无缺的。随着 SGF 的发展,强烈推荐至少每年更新一次你使用的应用软件。现在很多人仍然使用五年以上的软件会带来很多麻烦。

请定期更新你的应用软件!
 

返回顶部


2. 基本概念

SGF 由节点组成并构造成对局树,就是一个节点有且只有一个父节点,但可以有一个或多个子节点。这样 SGF 就可以存储对局记录(一系列着子)和实战的变化图。

节点是最小可见单元。 就是用户可以沿着对局树一步步地查看节点(向前或向后)。

节点由属性组成。 属性包含一定地信息,例如属性 B[] 描述黑子着子,属性 C[] 包含评论文本 (不用担心: 你不必这些属性名字)。

举例说明:  你向后查看一个新着子,可以看到评论窗口内显示评论,同时棋盘上对应位置被标记,所有这些信息通过位于同一节点内的不同的属性表现出来。

这样,编辑棋谱有两种层次: 增加/删除节点和增加/删除属性。
请明白这一点:  一个着子是一个节点的一部分,而非节点是着子的一部分。着子通过属性来描述而且节点可以包含不只一个属性。

返回顶部


3. “走子”和“放置棋子”

SGF 提供两种在棋盘上增加棋子的方法:  走子 是象真正对局时那样移动,就是你可以走子到空白处,你每次只可以走动一个棋子(这里是每节点),你可以通过走子来捕获对方棋子。在很多应用软件中当前的走子被高亮显示。

放置棋子 是把棋子放置在棋盘上来设置棋形, 例如让子、设置题形或分析形势。这种情况下,可以放置多个棋子及不同色的棋子,移走棋子和改变子色等都在一个节点中。
注意: 不能捕获棋子,因为这不是按比赛规则进行!

约定

区分走子和使棋盘某处有子是良好的风格(从 FF[4] 开始被要求)。

因此把设置属性和走子属性放在一个节点中是 非法的

走子属性 是一个黑子或白子的着子,可以对一个走子给予注释(例如恶手、有趣手等)或指示该手后还剩多少时间。
设置属性 是用来设置棋形就是在棋盘上放置黑白子或指示轮哪方走棋。

参看: 设置属性和走子属性的 详细列表

令人遗憾的是许多应用软件允许混合设置属性和走子属性,导致用户创建不良风格的 SGF 文件。

返回顶部


4. 风格

返回顶部


5. 分支

SGF 在记录主干(实战进行)的同时记录分支,由此可以分析不同的进行。见右图。分支通常用字母 A 表示,这是为什么有的应用软件用 “A” 表示进入变化图。

应用软件演示分支进行有两种方式: 兄弟节点方式和子节点方式。

子节点方式演示分支是 从父节点可以向任一子节点进行。

兄弟节点方式演示分支是 从父节点下的某一子节点可以向该父节点的另一子节点进行。

这两种不同方式的分支进行方式可能会引起混淆。例如,如果有评论是这样的: 这手棋不好,请看变化图B。如果作者使用子节点演示方式的应用软件,该评注则处于父节点上。如果读者使用兄弟节点演示方式的应用软件,将会看到评注在父节点上,但没有变化图,变化图在下一手才出现。反之(作者用兄弟节点方式,读者用子节点方式)也出现类似问题,读者在子节点上看到评注,但不得不退到上一手才能进入变化图。

许多人更喜欢兄弟节点方式因为它比较自然。他们甚至在子节点方式的应用软件中使用模仿的兄弟节点方式。他们的做法是在分支节点上取走前一个着子并增加一个新着子。这是不好的风格,而且自 FF[4] 起这也是非法的句法。它将导致你无法一览某一手的所有变化图,而且,转换成其它文件格式时也会带来麻烦。如果你喜欢兄弟节点方式那么就使用兄弟节点方式的应用软件。

返回顶部


6. 棋盘标记

SGF 为标记棋盘提供了广泛的选择。你在杂志或书本上见过的几乎所有标记都可以使用 SGF 来标记。不过,有些应用软件不能处理某种标记,下面是可使用的标记列表:
 

标记 属性 备注
MA[] 很常见
( FF[3] 起被引入)
TR[] 很常见
( FF[3] 起被引入)
simple markup M[] 过时的 ( FF[1] 使用), 很常见
此标记被 MA[] TR[] 继承。不过,老的应用软件无法识别 MA[] 和 TR[] ,仍然使用 M[]
CR[] 常见
( FF[3] 起被引入)
 
SQ[] 常见
( FF[4] 起被引入)
LB[] 常见( FF[3] 起被引入)
老的应用软件不能显示(例如: MGT DOS版)。注意由多个字符组成的长文字标记是被允许的。不过,许多应用软件只能显示前2-3个字符。请谨慎使用长文件标记。
letters L[] 过时的 (FF[1] 使用), 很常见
此标记被 LB[] 继承。不过,老的应用软件无法识别 LB[] ,仍然使用 L[]
SL[] 过时的,不常见
DD[] 新的 ( FF[4] 起被引入), 很不常见
(也许将来会更常见)
AR[] 新的 ( FF[4] 起被引入), 很不常见
(也许将来会更常见)
LN[] 新的 ( FF[4] 起被引入), 很不常见
(也许将来会更常见)
 

返回顶部


7. 评论和注释

SGF 允许在每个节点存储文本来评论一个走子或位置,评论通常显示在你的SGF应用软件的评论窗口。文本容易被编辑,但也有不利的方面: 因此 SGF 提供一系列注释属性。这些属性被编成不同的编码。它们存储的不是可读文本,而是具有特别意义的代号。应用软件阅读这样的 SGF 文件就可以提供以下的功能:   有三种类型的注释: 基本注释,走子注释和位置注释。请看一览表:

注释 属性 类型 程度 意义
黑好 GB 基本注释 黑棋形势占优
白好 GW 基本注释 棋形势占优
两分 DM 基本注释 黑白双方形势相当
形势不明 UC 基本注释 黑白双方形势不明
热点 HO 基本注释 重要的节点,令人关注的着子
手筋 TE 走子注释 局部的好的着手
恶手 BM 走子注释 不好的着手
疑问手 DO 走子注释 值得推敲的着手
有趣手 IT 走子注释 有趣的着手
轮谁走 PL 位置注释 轮某方走

令人遗憾的是许多应用软件不能支持这些属性,希望将来能有所改观。尽可能使用注释属性,尽管它们很简单,却有很大的优势。

返回顶部


8. 比赛信息

SGF 为比赛信息提供了广泛的属性,通常,应用软件提供一个对话框或者另外的窗口用于输入比赛信息。

注意,某些条目属性使用强制的格式。为什么?
因为符合标准的条目可以方便地被应用软件解析,并且可以被从多个对局文件中搜索或者用读者喜爱(定制)的方式显示。令人遗憾的是许多应用软件允许用户输入不合法的信息,所以能否输入正确的信息取决于用户,请谨慎使用。

例如,你有一个含有大约5000局的棋谱集,你需要从中寻找赵治勋在1996年3月的对局,如果日期被写为如“DTT[5th March 1996]”,“ DT[11/3/96]”,“DT[1996/3/7]”,“DT[1996 6 8]”,你如何知道这些是你需要寻找的对局呢?

 

我们为什么使用比赛信息?

有时你看到一个 SGF 文件把所有的信息都存储在第一个评论中,这是非常不好的风格。
如果信息被存储在评论中,那么它几乎不可能被计算机程序搜索到。因此需要把比赛信息存放在合适的位置,这将在将来节约你很多时间并且使你的数据库更加方便使用,使转换和交换更方便。

比赛信息属性列表

这里是附有简短描述的全部列表,如果此列表不能解答你的疑问,请看
详细规格说明
注意: 被推荐的不是被强制的。但你应尽可能使用被推荐的格式。

Name Property Notes
执黑者姓名/执白者姓名PB[]/PW[] 执黑者或执白者的姓名
尽量保持姓名的一致,职业棋手推荐使用官方公布的姓名。
执黑者级别/执白者级别BR[]/WR[] 执黑者或执白者的棋力
推荐使用下列格式:
具有“级别”的棋手,使用“10k  10 kyu
具有“段位”的棋手使用“3d”或“3 dan
围棋服务器通常在被确定的段位后加“*”,在不被确定的段位后加“?”,例如“10k*”、“3d?
由于围棋服务器段位和被围棋机构正式授予的段位都用“d”表示容易混淆,一些应用软件使用“p”作为被围棋机构正式授予的段位,以示区别。
执黑者队名/执白者队名BT[]/WT[] 执黑者或执白者所在的队名
比赛结果RE[] 比赛结果
强制使用以下格式:
"0" 表示和局
"B+score" 表示黑胜
"W+score" 表示白胜, 例如 "B+2.5", "W+64" or "B+0.5"
"B+R"/"B+Resign"  "W+R"/"W+Resign" 表示中盘胜
你不能写作“黑中盘胜”
请看更多的 详情描述 
贴还KM[] 贴还(指贴还后手方的数目)
强制使用以下格式:
使用实数,例如: "5.5", "0", "0.5" or "-10," 
不要使用: "5点", "半目", "五又二分之一子", 
让子 HA[] 让子的数目
强制使用以下格式:
使用大于零的整数,例如: "1", "5" or "9"
不要使用:  "二子", ""
时间限制TM[] 每方规定的使用时间
强制使用以下格式:
时间使用以秒为单位的实数,例如 "4600", "300"
不要使用: "1 小时"
如果你的应用软件不能把实数转换成易读的格式,是一件尴尬的事情,尽管如此,还是请坚持使用实数值。
比赛日期DT[] 比赛时间
强制使用以下格式:
使用 ISO 标准格式 "YYYY-MM-DD"
不要使用其它的分隔符诸如 "/"  " "  ".".
例如: 一场在一九九七年三月五日进行的比赛记为:  1997-03-05
请看更多的 详情描述
赛事名称EV[] 赛事的名称(例如: 应氏杯)
回合数RO[] 比赛的回合数,用于番棋
比赛地点PC[] 比赛发生的地点(例如城市、国家),也可以是围棋网络服务器
比赛规则RU[] 比赛规则 (例如: 中国规则、日本规则、韩国规则、应氏规则等)
比赛名称GN[] 比赛的名称
开局ON[] 描述开局 (例如: 三连星)
比赛评论GC[] 对比赛的一般的评论
棋谱来源 SO[] 棋谱来源 (例如: 书、杂志等)
棋谱录入 US[] 录入棋谱的人或程序
棋谱评论 AN[] 评注者姓名
版权信息CP[] 棋谱的版权信息

返回顶部