天鳳の牌譜(mjlog)
鳳凰卓の牌譜ダウンロードについて
天鳳の牌譜を手に入れるためには、牌譜IDを知らなければならない。天鳳-ログ/一覧から、鳳凰卓のチェックボックスを選択して、日毎のログが一覧表示される。fileの"表示"を選択すると、その日の対戦成績一覧が表示され、4カラム目に"牌譜"が見つかる。クリックするとビューワーに移動するが、このときのアドレス、例えば
http://tenhou.net/0/?log=2022050401gm-00a9-0000-ffc804eb
であれば、"?log="のあとの"2022050401gm-00a9-0000-ffc804eb"が牌譜IDである。この牌譜IDを用いて、
"http://tenhou.net/0/log/?" + "牌譜ID"
(上記例でいえば、http://tenhou.net/0/log/?2022050401gm-00a9-0000-ffc804eb)
にアクセスすれば、牌譜を取得することができる。
同ページにある過去ログから2006年以降のログファイルを取得することができるので(鳳凰卓は2009年以降)、そこから鳳凰卓の牌譜IDを取得し牌譜をダウンロードする。ログファイルのようにまとめて圧縮されているものもないため(見つけられてないだけであるんだろうか?)、一つ一つダウンロードする必要があり、スクリプトを組まないとやってられない作業である。としても、なんせファイル数が多く時間がかかる。全部の牌譜をダウンロードするのに4〜5日かかった。まとめてダウンロードできるようにしてもらえるとAI開発者は助かるし、サーバーの負荷も軽減できると思うので、win-winと思うのだが(そんなにAI開発者がいないか?)。
(ちなみに、お気づきかもしれないが自分自身の牌譜も牌譜IDがわかれば上記の手法でダウンロード可能である。有料会員しかダウンロードできないことになっているので、大きな声で言ってはいけないのだろうか?)
ダウンロードした牌譜の数/容量
ダウンロードした牌譜のファイル数(戦数)とその容量を示す。 計測方法は下記コマンド
# ファイル数
ls -d * | xargs -I{} sh -c 'echo -n {}: && find {} -type f ! -name ".*"| wc -l'
# 容量
du -hs *
- ログファイルに記載されている戦数とファイル数が同じであることを確認済み。
- 2009/02/01 のファイルはサンプルのようなので除外している。
三麻
| 年 | ファイル数(戦数) | 容量 |
|---|---|---|
| 2009 | 21994 | 242 MB |
| 2010 | 38209 | 510 MB |
| 2011 | 51150 | 708 MB |
| 2012 | 60854 | 839 MB |
| 2013 | 48664 | 667 MB |
| 2014 | 54540 | 749 MB |
| 2015 | 51310 | 708 MB |
| 2016 | 47769 | 660 MB |
| 2017 | 51958 | 716 MB |
| 2018 | 57734 | 795 MB |
| 2019 | 62392 | 859 MB |
| 2020 | 74320 | 1.1 GB |
| 2021 | 71829 | 992 MB |
| 合計 | 692723 | 9.3 GB |
四麻
| 年 | ファイル数(戦数) | 容量 |
|---|---|---|
| 2009 | 58160 | 551 MB |
| 2010 | 111397 | 1.6 GB |
| 2011 | 165861 | 2.5 GB |
| 2012 | 202735 | 3.0 GB |
| 2013 | 202126 | 3.1 GB |
| 2014 | 189614 | 3.0 GB |
| 2015 | 198606 | 3.1 GB |
| 2016 | 204295 | 3.2 GB |
| 2017 | 200008 | 3.2 GB |
| 2018 | 210067 | 3.3 GB |
| 2019 | 216880 | 3.4 GB |
| 2020 | 254104 | 4.1 GB |
| 2021 | 229583 | 3.6 GB |
| 合計 | 2443436 | 38 GB |
mjlog
下記サイトを参考にさせてもらった。消えると困るので、ここにも記載しておく。
- https://m77.hatenablog.com/entry/2017/05/21/214529
- https://blog.kobalab.net/entry/20170228/1488294993#f-7d0ed8e6
ファイル形式
mjlogファイルはXML形式で記述されている。
<mjloggm ver="2.3">
<GO type="185"/>
<UN n0="%E3%82%B8%E3%83%A5%E3%83%B3" n1="%E6%88%91%E3%80%85%E3%82%AF%E3%83%A9%E3%82%B9" n2="%E6%A5%A0%E4%B8%8B%E5%B9%BE%E5%A4%AA%E9%83%8E" n3="" dan="16,16,16,0" rate="2108,2102,2097,1500" sx="M,F,M,C"/>
<TAIKYOKU oya="0"/>
<INIT seed="0,0,0,2,2,93" ten="350,350,350,0" oya="0" hai0="50,128,76,124,118,49,42,99,131,41,35,121,0" hai1="46,68,73,58,62,108,60,110,82,119,135,75,133" hai2="134,89,113,56,43,71,85,109,65,39,32,57,101" hai3="" shuffle="mt19937ar,208DE6A5,C95C7BDB,13F94561,85B5EC9B,F3928945,EBCB4B30,4C67B3D4,E47B7F53"/>
<T63/>
<N who="0" m="31008" />
<T66/>
<D0/>
<U129/>
<E119/>
<V53/>
<F32/>
(中略)
<T84/>
<N who="0" m="49745" />
<T87/>
<DORA hai="51" />
<D49/>
<U107/>
<E107/>
<V83/>
<REACH who="2" step="1"/>
<F57/>
<REACH who="2" step="2"/>
<T36/>
<D42/>
(中略)
<F86/>
<AGARI ba="0,1" hai="54,58,60,73,75,77,82,86,108,110,111" m="51209" machi="86" ten="40,5200,0" yaku="14,1,20,1,52,1" doraHai="93,51" who="1" fromWho="2" sc="350,0,350,62,340,-52,0,0" />
<INIT seed="1,0,0,4,0,119" ten="350,412,288,0" oya="1" hai0="48,110,82,85,97,86,133,43,106,36,125,92,41" hai1="122,129,124,98,123,91,32,128,108,45,54,109,68" hai2="1,96,58,105,64,37,104,120,70,40,75,71,72" hai3="" shuffle="mt19937ar,CD54F2E9,42B68B7A,F80329E0,F2742C7C,B9B5ED3E,17F61B88,E52E5200,BFE93A84"/>
<U69/>
<N who="1" m="31264" />
<U63/>
<N who="1" m="31520" />
<U112/>
<E32/>
<V118/>
(以下略)
<mjloggm ver="2.3">から<TAIKYOKU oya="0"/>までを対局情報、<INIT seed=…から<AGARI ba=…までを一局情報と呼ぶことにする。
対局情報
mjloggm
rootタグ。mjlogファイルのバージョン。
SHUFFLE
<SHUFFLE seed="mt19937ar-sha512-n288-base64,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" ref=""/>
2009年7月22日以降はこのseedを使って牌山を生成。
Go
対局形式(対戦予約時に選ぶ"四般南喰赤"というやつ)を表す。2進数に変換して、下記と比較すればOK。
| BIT | マスク | FLAG=1 | FLAG=0 |
|---|---|---|---|
| 0 | 0x001 | 対人戦 | 対コンピュータ戦 |
| 1 | 0x002 | 赤ナシ | 赤アリ |
| 2 | 0x004 | 喰ナシ | 喰アリ |
| 3 | 0x008 | 東南 | 東風 |
| 4 | 0x010 | 三麻 | 四麻 |
| 5 | 0x020 | 特上 | (5bitと7bitが両方1のときは鳳凰、両方0のときは一般。) |
| 6 | 0x040 | 速 | 5+10秒 |
| 7 | 0x080 | 上級 | (5bitと7bitが両方1のときは鳳凰、両方0のときは一般。) |
| 8 | 0x100 | 暗 | |
| 9 | 0x200 | 祝 | |
| 10 | 0x400 | 雀荘 | |
| 11 | 0x800 | 技能 |
例えば、type="185"だと、2進数に変換すると、
ビットは右から数えるので、上の表から
- 対人戦
- 赤アリ
- 喰アリ
- 東南
- 三麻
- 鳳凰(6bit,8bitが共に1なので鳳凰)
となり、"三鳳南喰赤"となる。
UN
<UN n0="%E3%82%B8%E3%83%A5%E3%83%B3" n1="%E6%88%91%E3%80%85%E3%82%AF%E3%83%A9%E3%82%B9" n2="%E6%A5%A0%E4%B8%8B%E5%B9%BE%E5%A4%AA%E9%83%8E" n3="" dan="16,16,16,0" rate="2108,2102,2097,1500" sx="M,F,M,C"/>
ユーザー情報が記載されている。
n[0-3]
ユーザー名。URLエンコードされているのでデコードすればよい。
dan
段級位。
| 数字 | 段級位 |
|---|---|
| 0 | 新人 |
| 1 | 9級 |
| 2 | 8級 |
| 3 | 7級 |
| 4 | 6級 |
| 5 | 5級 |
| 6 | 4級 |
| 7 | 3級 |
| 8 | 2級 |
| 9 | 1級 |
| 10 | 初段 |
| 11 | 二段 |
| 12 | 三段 |
| 13 | 四段 |
| 14 | 五段 |
| 15 | 六段 |
| 16 | 七段 |
| 17 | 八段 |
| 18 | 九段 |
| 19 | 十段 |
| 20 | 天鳳 |
| 21 | RESERVED... |
var DAN=[
"新人","9級","8級","7級","6級","5級","4級","3級","2級","1級",
"初段","二段","三段","四段","五段","六段","七段","八段","九段","十段",
"天鳳","RESERVED..."
];
rate
レート。
sx
性別。M:男性、F:女性、C:コンピュータ
TAIKYOKU
対局開始。
oya
親が誰かを表す。0はUNで示されたn0が親であることを示す。(oya="0"以外あるのだろうか?)
一局情報
<INIT />で始まり<AGARI />もしくは<RYUUKYOKU />で終わる。これの繰り返し。
INIT
<INIT seed="0,0,0,2,2,93" ten="350,350,350,0" oya="0" hai0="50,128,76,124,118,49,42,99,131,41,35,121,0" hai1="46,68,73,58,62,108,60,110,82,119,135,75,133" hai2="134,89,113,56,43,71,85,109,65,39,32,57,101" hai3="" shuffle="mt19937ar,208DE6A5,C95C7BDB,13F94561,85B5EC9B,F3928945,EBCB4B30,4C67B3D4,E47B7F53"/>
局情報
seed
この局についての情報。以下の通り。
| i | seed[i] |
|---|---|
| 0 | 東一局~北四局 0-3が東一-東四、4-7が南場、8-11が西場 |
| 1 | 本場 |
| 2 | リーチ棒の本数 |
| 3 | 一つ目のサイコロの目-1 |
| 4 | 二つ目のサイコロの目-1 |
| 5 | ドラ表示牌 |
ten
点数。×100する。
oya
親を表す
hai[0-3]
配牌。
shuffle
2009年7月22日以前はこの値を使って山を生成していた。
[T-W][0-9]*
ツモ。アルファベットはユーザーを表し、数字は牌を表す。
T: n0, U: n1, V: n2, W: n3
牌については、牌について参照
[D-G][0-9]*
打牌を表す。アルファベットはユーザーを表し、数字は牌を表す。
REACH
立直を表す。
who
リーチした人を表す。
step
1のときリーチ宣言。その後打牌をして、ロンされなければ2が呼ばれる。
ten
リーチ棒を除いた後の点数を表す。
N
鳴きを表す。
who
鳴いた人。
m
鳴きの種類と形を表す。
詳細はhttp://tenhou.net/img/tehai.js
16bitの整数値(216 = 65,536)で表される。場合分けが発生するのでややこしい。
順子の場合
2bit目が1なら順子となる。
| BIT | マスク | Value |
|---|---|---|
| 0-1 | 0x0003 | 誰から鳴いたか。0: 鳴きなし、1: 下家、2: 対面、3: 上家。 |
| 2 | 0x0004 | 1 (必ず1。順子であることを表す。) |
| 3-4 | 0x0018 | 牌添字1 |
| 5-6 | 0x0060 | 牌添字2 |
| 7-8 | 0x0180 | 牌添字3 |
| 9 | (未使用) | |
| 10-15 | 0xFC00 | 順子のパターン |
順子のパターンは123, 234, 345, … , 789と7パターンある。これが萬子、索子、筒子の3種類あるので、7x3=21パターン。鳴いた牌を考慮すると、7x3x3=63パターンとなり、64bitで表すことができる。
赤牌を考慮する場合、3-4bit, 4-5bit, 6-7bitの情報が必要となる。面子を構成する牌が何番目の牌かを示している(これを牌添字と呼ぶ)。例えば5mのIDは16~19であるが、牌添字が0の場合はIDが16となり、赤5萬を表す。
ToDo: パターンについては要検討。
刻子あるいは加槓の場合
2bit目が0 且つ 3bit目もしくは4bit目が1の場合、これにあたる。
| BIT | マスク | Value |
|---|---|---|
| 0-1 | 0x0003 | 誰から鳴いたか。0: 鳴きなし、1: 下家、2: 対面、3: 上家。 |
| 2 | 0x0004 | 0 (必ず0。1の場合は順子になる。) |
| 3 | 0x0008 | 刻子のとき1。加槓のとき0。 |
| 4 | 0x0010 | 加槓のとき1 |
| 5-6 | 0x0060 | 牌添字 |
| 7-8 | (未使用) | |
| 9-15 | 0xFE00 | 刻子のパターン |
9-15bit目で刻子のパターンを表す。赤牌を考慮しなければ、刻子は全て同一の牌から構成されるので、3x9+7=34パターンとなるが、天鳳の牌譜では牌IDを使用しているためどの牌を鳴いたかの情報も必要で、34x3=102パターンとなる。
5-6ビット目には刻子に含まれない牌添字が設定されている。赤牌ありの場合、ここが0であれば、赤牌以外の3枚で副露したことがわかる。
加槓の場合、刻子に含まれない牌はすなわちカンの時に加えた牌である。
ToDo: パターンについては要検討。
北抜きの場合
2, 3, 4bit目がすべて0で、5bit目が1の場合。
| BIT | マスク | Value |
|---|---|---|
| 0-1 | (未使用) | |
| 2 | 0x0004 | 0 (必ず0。) |
| 3 | 0x0008 | 0 (必ず0。) |
| 4 | 0x0010 | 0 (必ず0。) |
| 5 | 0x0020 | 1 (必ず1。) |
| 6-7 | (未使用) | |
| 8-15 | 0xFF00 | 抜いた牌のID |
暗槓あるいは大明槓の場合
2, 3, 4, 5bit目がすべて0の場合である。
| BIT | マスク | Value |
|---|---|---|
| 0-1 | 0x0003 | 誰から鳴いたか。0: 鳴きなし、1: 下家、2: 対面、3: 上家。 |
| 2 | 0x0004 | 0 (必ず0。) |
| 3 | 0x0008 | 0 (必ず0。) |
| 4 | 0x0010 | 0 (必ず0。) |
| 5 | 0x0020 | 0 (必ず0。) |
| 6-7 | (未使用) | |
| 8-15 | 0xFF00 | 槓子のパターン |
槓子のパターンは、すべて同一の牌から構成され、どの牌を鳴いたかの情報を加えると、(3x9+7)x4=136パターンとなる。
ToDo: パターンについては要検討。
DORA
槓ドラ。明槓・加槓はツモの後、暗槓の場合は鳴きの後。
BYE
接続切れで退室。whoは退室したユーザーを表す。
UN
接続切れから復活した場合。
AGARI
<AGARI ba="0,1" hai="57,58,59,63,64,69,77,82,86,88,95,97,125,127" machi="69" ten="30,5900,0" yaku="1,1,0,1,52,1,54,1,53,0" doraHai="91" doraHaiUra="99" who="1" fromWho="1" sc="350,-39,340,69,350,-20,0,0" />
誰かが和了したことを示す。ダブロンなど、2つ発生することもある。
ba
場に出ている点棒を表す カンマ区切りの整数で、ba[0]が百点棒(本場)、ba[1]がリーチ棒を表す。
hai
和了した時の手牌。和了牌も含まれている。 カンマ区切りの整数で牌IDを表す。
m
副露があるときのID カンマ区切りの整数でNのmに同じ
machi
和了牌
ten
点数に関する情報 カンマ区切りの整数で、ten[0]が符、ten[1]が和了点を表す。 ten[2]は和了ランクを表し、以下
| ten[2] | 内容 |
|---|---|
| 0 | なし |
| 1 | 満貫 |
| 2 | 跳満 |
| 3 | 倍満 |
| 4 | 三倍満 |
| 5 | 役満 |
yaku
役について。[役A,役Aの翻数,役B,役Bの翻数,役C,役Cの翻数]。 役満はyakuman属性に記述される。
var YAKU=[
//// 一飜
"門前清自摸和","立直","一発","槍槓","嶺上開花",
"海底摸月","河底撈魚","平和","断幺九","一盃口",
"自風 東","自風 南","自風 西","自風 北",
"場風 東","場風 南","場風 西","場風 北",
"役牌 白","役牌 發","役牌 中",
//// 二飜
"両立直","七対子","混全帯幺九","一気通貫","三色同順",
"三色同刻","三槓子","対々和","三暗刻","小三元","混老頭",
//// 三飜
"二盃口","純全帯幺九","混一色",
//// 六飜
"清一色",
//// 満貫
"人和",
//// 役満
"天和","地和","大三元","四暗刻","四暗刻単騎","字一色",
"緑一色","清老頭","九蓮宝燈","純正九蓮宝燈","国士無双",
"国士無双13面","大四喜","小四喜","四槓子",
//// 懸賞役
"ドラ","裏ドラ","赤ドラ"
];
yakuman
役満の種類。複合役満の場合、カンマ区切りの整数 役満のときのみ存在。
doraHai
ドラ牌。複数ある場合はカンマ区切りの整数
doraHaiUra
裏ドラ牌。複数ある場合はカンマ区切りの整数。存在しないときは省略される。
who
誰が和了したか。
fromWho
誰が放銃したか。ツモ和了の場合whoと一致する。
sc
点数。カンマ区切りの符号付き整数。
[Aさんの点数, Aさんの変動,Bさんの点数,Bさんの変動,……,Dさんの変動]。
この点数は変動が反映される前の点数となっている
owari
終局を示す。
点数。カンマ区切りの符号付き整数。
[Aさんの点数, Aさんのスコア,Bさんの点数,Bさんのスコア,……,Dさんのスコア]
スコアにはウマが含まれている。
RYUUKYOKU
<RYUUKYOKU ba="1,1" sc="71,-10,409,-10,560,20,0,0" hai2="45,50,54,64,69,72,78,83,91,92,97,105,107" />
ba
場に出ている点棒を表す。
カンマ区切りの整数で、ba[0]が百点棒(n本場)、ba[1]がリーチ棒を表す。
sc
点数。カンマ区切りの符号付き整数。
[Aさんの点数, Aさんの変動,Bさんの点数,Bさんの変動,……,Dさんの変動]。
この点数は変動が反映される前の点数となっている
hai[0-3]
流局によって手牌が公開される場合の牌。カンマ区切りの整数。
副露したものは示されない。
聴牌したプレイヤーもしくは九種九牌のプレイヤーのみ表示。
type
流局の種類 通常の流局以外の場合存在
| type | 流局 |
|---|---|
| yao9 | 九種九牌 |
| reach4 | 四家立直 |
| ron3 | 三家和了 |
| kan4 | 四槓散了 |
| kaze4 | 四風連打 |
| nm | 流し満貫 |
owari
終局を示す。
点数。カンマ区切りの符号付き整数。
[Aさんの点数, Aさんのスコア,Bさんの点数,Bさんのスコア,……,Dさんのスコア]
スコアにはウマが含まれている。
牌ID
それぞれの牌は0 - 135のIDが割り当てられている。
0-3は1m、4-7は2mといった具合。順序は萬子→筒子→索子→東南西北白發中。
赤ありの場合、赤はmod4で0となる牌(16,52,88)に割り当てられている。