2014年06月21日

GNU Go ドキュメント和訳 (19章 GTPのみ)

GNU Go Documentation の
19. The Go Text Protocol を
適当に和訳しました。

訳がさすがにちょっと怪しい、と思ったところは
日本語と併せて原文(英語)も併記します。

http://www.gnu.org/software/gnugo/gnugo_19.html

------------------------------------------
19.1 Go Text Protocol
19.2 GNU GoをGTPモードで起動する
19.3 GTPアプリケーション
19.4 メタマシーン
19.5 新しいGTPコマンドの追加
19.6 GTPコマンドリファレンス


------------------------------------------
19.1 Go Text Protocol

GNU Go 3.0から、Go Text Protcol, 略してGTPという新しいインターフェースを導入しました。
ASCIIインターフェースよりコンピュータ間での通信に適し、Go Modem Protocolよりシンプル・パワフル・柔軟なインターフェースを作るためです。

GTPには2つのプロトコルバージョンがあります。
バージョン1は、GNU Go 3.0と3.2で使われていました。
バージョン2は、GNU Go 3.4以降で使っています。
GTP バージョン2の仕様は、http://www.lysator.liu.se/~gunnar/gtp/ で入手できます。
GNU Go 3.4はGTPバージョン2実装のリファレンスとなりますが、
全てしかし多くの共通コマンドはこのプロトコルの独自拡張として扱うべきである。
(but all but the most common commands are to be regarded as private extensions of the protocol.)

GTPには様々な応用例があります。
GNU Goで初めに退行テスト(セクション"Regression testing"参照)に使用し、
(訳注:退行テスト:GNU Goのソースコードを修正した際に、既存の動作がきちんと変化無く行なえるかをテストすること。)
続いてNNGSサーバに接続して自分自身や別のプログラムと自動対局するテストに使用しました。
(訳注:NNGS:インターネット囲碁サーバを構築するモジュール(http://sourceforge.jp/projects/sfnet_nngs/)。及びそれを使用したサーバ(現在は消滅:http://nngs.cosmic.org/))
現在ではNNGSや他のネット碁サーバのほかに、GTPに対応した多くのグラフィカルユーザーインターフェースが存在します。

------------------------------------------
19.2 GNU GoをGTPモードで起動する

GNU GoをGTPモードで起動するには、gnugoを単に'--mode gtp'オプションを付けて起動してください。
するとプロンプトや他の出力は表示されませんが、GNU Goは静かにGTPコマンドを待っています。

GTPセッションの例は、こんな感じに見えます。


virihaure 462% ./gnugo --mode gtp
1 boardsize 7
=1

2 clear_board
=2

3 play black D5
=3

4 genmove white
=4 C3

5 play black C3
?5 illegal move

6 play black E3
=6

7 showboard
=7
A B C D E F G
7 . . . . . . . 7
6 . . . . . . . 6
5 . . + X + . . 5
4 . . . + . . . 4
3 . . O . X . . 3
2 . . . . . . . 2 WHITE (O) has captured 0 stones
1 . . . . . . . 1 BLACK (X) has captured 0 stones
A B C D E F G

8 quit
=8


コマンドは1行で与えられ、また先頭に任意で識別番号を付け、続いてコマンド名と引数を指定します。
(識別番号はオプション。)

コマンドが正常に実行された場合、イコール記号('=')から始まる応答が返ります。
続いてコマンド識別番号(識別番号が指定された場合のみ)、その次に結果が続きます。
上記例では、識別番号4, 7以外は空文字の結果が返ってきています。
識別番号4のコマンドの結果は、白がC3に着手するという回答です。
識別番号7のコマンドの結果は、現在の盤面配置です。
応答は、2つの連続した改行で終了します。

コマンドが失敗した場合、識別番号5のように、イコール記号の代わりに疑問符('?')で始まる応答が返ります。

このプロトコルの詳細な仕様は http://www.lysator.liu.se/~gunnar/gtp/ にあります。
GNU Goで利用可能なコマンドは list_commands コマンドで一覧できます。
またこのドキュメントのセクション19.6 "GTPコマンドリファレンス"にも記載されています。

------------------------------------------
19.3 GTPアプリケーション
(訳注:この章はとってもざっくりな概要のみでしか訳してません。)

GTPは「コントローラー」と「エンジン」による、非対称のプロトコルだよ。
・コントローラー:GTPコマンドを送信する
・エンジン:GTPコマンドに応答する
GNU Go本体はエンジン側を実装してるよ。

GNU Goソースコードの中にはコントローラー側を実装したいくつかのアプリケーションが入っているよ。
・退行テストを実行するコントローラー (regress.*)
・2つのエンジンを対戦させるコントローラー (twogtp.*)
とか。


------------------------------------------
19.4 メタマシーン
(訳注:この章はとってもざっくりな概要のみでしか訳してません。)

あるプロセスが、GTPの応答を「お告げ」として受け取り、
複数のお告げの内容を元に、最終的な着手を決定する、って感じの試みがあるよ。(メタマシーン)
その実装が、GNU Goと一緒に配布されているらしい。


------------------------------------------
19.5 新しいGTPコマンドの追加
(訳注:この章はとってもざっくりな概要のみでしか訳してません。)

GNU GoでのGTPの実装は、'interface/gtp.h', 'interface/gtp.c', 'interface/play_gtp.c'でやってるよ。
前2つはヘルパー関数の宣言と定義。実際のGTPコマンドは 'play_gtp.c' でやってます。
どんな感じで実装するかは、既に実装されているコマンドのコードを見てね。
(gtp_countlib()を例にした解説がドキュメント原文にあります。)


------------------------------------------
19.6 GTPコマンドリファレンス

このセクションではGNU Goで実装しているコマンドと、コマンドに関する情報を一覧します。
各コマンドに対して、次の項目があります。
・機能:
  コマンドが行なうこと
・引数:
  そのコマンドが必要とする追加情報(必要なら)。
  (訳注:複数の引数はスペースで区切って指定します。)
    ・不要 (none)
    ・座標 (vertex)
    ・整数 (integer)
    ・色 (訳注:"black" or "white")
    ・その他
・エラー:
  このコマンドが失敗する原因となる状況
  (訳注:エラー時の応答文字列を表している訳ではありません。)
・戻値:
  コマンドの応答として何が返されるか。
  (応答のヘッダ('=')とフッタ(2つの改行)の間にある情報の内容)
    ・なし (nothing)
    ・座標 (a move coordinate)
    ・文字列 (some status string)
    ・色 (訳注:"black" or "white")
    ・その他
・ステータス:
  標準のGTPバージョン2コマンドとの対応。
  記載が無いコマンドは、GNU Go独自拡張コマンドです。

(訳注:座標は、横方向を左からA〜T(ただしIを除く)、縦方向を下から1〜19(19路盤の場合)で表した文字列です。
    例:左下隅星: D4 右上隅星: Q16)

(訳注:
  GTP バージョン2の仕様(http://www.lysator.liu.se/~gunnar/gtp/)とコマンド有無の対応比較しました。
  相違は1点のみ。
  GTPで定義されているlist_commandsコマンドがhelpコマンドに置き換わっています。
  (しかしGNU Go 3.8の動作ではhelpだけでなく, list_commandsコマンドも同様に動作する)
  それ以外は一致していました。(GTP v2で定義されたコマンドがGNU Goに実装されている。))


では以下に大きなリストを示します。(順不同です。)
※新しいコマンドを追加した場合は、このリストは不完全になります。
 (訳注:そりゃそうだろう。原文にはその際のドキュメント変更についても少し記載している。)

訳注:
以下はGNU Go 3.8の動作に合わせて補足や強引な意訳などを行なっています。
連について、原文では"string"(直接的な結合を持つ群)と"dragon"(間接的な結合(タケフなど)を持つ群)と区別しています。
日本語ではこの2つを区別する用語は無いですが、一応区別を残したまま訳すため、
便宜的に、string="連"、dragon="漣"と訳します。(無理矢理...大杉さんすみません。)


quit
プログラムを終了する
 引数:
-
 エラー:
-
 戻値:
-
 ステータス:
GTPバージョン2標準コマンド
 訳注:


protocol_version
プロトコルバージョンを取得する

 引数:
-
 エラー:
-
 戻値:
・プロトコルバージョン番号
 ステータス:
GTPバージョン2標準コマンド
 訳注:


name
プログラム名を取得する

 引数:
-
 エラー:
-
 戻値:
・プログラム名
 ステータス:
GTPバージョン2標準コマンド
 訳注:


version
プログラムのバージョン番号の取得

 引数:
-
 エラー:
-
 戻値:
・バージョン番号
 ステータス:
GTPバージョン2標準コマンド
 訳注:


boardsize
使用する盤の路数の設定・盤面をクリアする

 引数:
整数
 エラー:
エンジンが扱えない路数
 戻値:
-
 ステータス:
GTPバージョン2標準コマンド
 訳注:


query_boardsize
現在の路数設定を取得する

 引数:
-
 エラー:
-
 戻値:
・盤面路数
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


clear_board
盤面をクリアする

 引数:
-
 エラー:
-
 戻値:
-
 ステータス:
GTPバージョン2標準コマンド
 訳注:


orientation
orientationの値を設定し、盤面をクリアする
(Set the orienation to N and clear the board)

 引数:
整数
 エラー:
orientationが不正
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
実行しても効果がよく分かりません。
盤面座標軸方向が回転するわけでもないよう。


query_orientation
現在のorientation設定を取得する

 引数:
-
 エラー:
-
 戻値:
・orientation
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


komi
コミを設定する

 引数:
小数
 エラー:
引数が正しくない
 戻値:
-
 ステータス:
GTPバージョン2標準コマンド
 訳注:


get_komi
コミを取得する

 引数:
-
 エラー:
-
 戻値:
・コミ
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


black
黒石を指定した座標に着手する

 引数:
座標
 エラー:
不正な座標指定
不正な着手
 戻値:
-
 ステータス:
廃止されたGTPバージョン1コマンド
 訳注:


playwhite
白石を指定した座標に着手する

 引数:
座標
 エラー:
不正な座標指定
不正な着手
 戻値:
-
 ステータス:
廃止されたGTPバージョン1コマンド
 訳注:


play
指定した色を指定した座標に着手する

 引数:

座標
 エラー:
不正な座標指定
不正な着手
 戻値:
-
 ステータス:
GTPバージョン2標準コマンド
 訳注:


fixed_handicap
固定位置に置石を配置する

 引数:
置石数
 エラー:
現在の路数に対して不正な置石数
 戻値:
・置石を置いた座標リスト
 ステータス:
GTPバージョン2標準コマンド
 訳注:
星・天元への置石配置。
GNU Go 3.8では9子を超える置石(星目風鈴など)には対応していないようである。


place_free_handicap
置石を置く場所を考慮して置石を配置する

 引数:
置石数
 エラー:
不正な置石数
 戻値:
・置石を置いた座標リスト
 ステータス:
GTPバージョン2標準コマンド
 訳注:
対局開始前にN手分先に打つ、というイメージ。
置石を置く場所はGNU Goが考える。
実行する度その場所は変わる。


set_free_handicap
指定した自由位置に置石を配置する

 引数:
置石を置く座標リスト
 エラー:
盤面が空でない
不正な座標リスト
 戻値:
-
 ステータス:
GTPバージョン2標準コマンド
 訳注:


get_handicap
置石数を取得する

 引数:
-
 エラー:
-
 戻値:
・置石数
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


loadsgf
SGFファイルを読み込み、石を配置する
(オプションで、指定した[手数/座標(への初めの着手)]の直前までの着手を配置する)

 引数:
ファイル名
[手数]
[座標]
 エラー:
ファイルが存在しない
SGFファイルの解析失敗
 戻値:
・次に着手すべき色
 ステータス:
GTPバージョン2標準コマンド
 訳注:


color
指定した座標にある石の色を取得する

 引数:
座標
 エラー:
不正な座標
 戻値:
・色 or 空("empty")
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


list_stones
指定した色が配置されている座標リストを取得する

 引数:
 エラー:
不正な色
 戻値:
・座標リスト
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
リストは着手順ではないよう


countlib
指定した座標にある連の呼吸点の数を取得する

 引数:
連の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
・呼吸点数
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


findlib
指定した座標にある連の呼吸点の座標リストを取得する

 引数:
連の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
・呼吸点の座標リスト
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


accuratelib
指定した色を指定した座標に着手した場合の、連の呼吸点の数を取得する

 引数:

座標
 エラー:
不正な色
不正な座標
 戻値:
・呼吸点の座標リスト
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
accurate_approxlibと同一の動作


accurate_approxlib
指定した色を指定した座標に着手した場合の、連の呼吸点の数を取得する

 引数:

座標
 エラー:
不正な色
不正な座標
 戻値:
・呼吸点の座標リスト
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
accuratelibと同一の動作


is_legal
指定した色の指定した座標への着手が合法かを判定する

 引数:

座標
 エラー:
不正な色
不正な座標
 戻値:
着手が合法なら 1
非合法なら 0
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


all_legal
指定した色の全ての合法手の座標リストを取得する

 引数:
 エラー:
不正な色
 戻値:
・座標リスト
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


captures
指定した色が捕獲したアゲハマの数を取得する

 引数:
 エラー:
不正な色
 戻値:
・アゲハマの数
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


last_move
最後の着手を取得する

 引数:
-
 エラー:
直前の着手が分からない
 戻値:
・直前に着手した色
・直前に着手した座標
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


move_history
着手履歴を逆順(初手が最後)で出力する

 引数:
-
 エラー:
-
 戻値:
・着手履歴リスト
(1手を1行で表し、1手分は色 座標。)
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


invariant_hash
回転・左右対称を考慮した不変の盤面ハッシュ値を取得する

 引数:
-
 エラー:
-
 戻値:
・盤面の不変ハッシュ値(16進数)
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


invariant_hash_for_moves
指定した色が可能な全ての合法手によって得られる、回転・左右対称を考慮した不変の盤面ハッシュ値を取得する

 引数:
 エラー:
不正な色
 戻値:
・合法手座標と不変ハッシュ値のリスト
(1行に1つの合法手座標とハッシュ値)
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


trymove
指定した色を指定した座標に試しに着手する

 引数:
色,
座標
 エラー:
不正な色
不正な座標
不正な着手
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
popgoで元に戻せる


tryko
不正なコウ取りを許容して、指定した色を指定した座標に試しに着手する

 引数:
色,
座標
 エラー:
不正な色
不正な座標
不正な着手
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
popgoで元に戻せる


popgo
trymove, trykoコマンドによる試し着手を1手分元に戻す

 引数:
-
 エラー:
直前のtrymove,tryko着手無し
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


clear_cache
キャッシュをクリアする

 引数:
-
 エラー:
-
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
何のキャッシュ?


attack
指定した座標にある連に攻撃を試みる

 引数:
連の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
攻撃手無し: 0
攻撃手有り:
・攻撃コード(1〜)
・攻撃手の座標
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
攻撃コードが2以上になるのはどのような時?


attack_either
指定した2つの連に攻撃を試みる

 引数:
連1の座標
連2の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
・連に対する攻撃コード
(攻撃コードが0でなければ、指定した連のどちらかへの攻撃手があることを保証するが、攻撃手の座標は返さない。)
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


defend
指定した座標にある連の防御を試みる

 引数:
連の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
防御手無し: 0
防御手有り:
・防御コード(1〜)
・防御手の座標
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
防御コードが2以上になるのはどのような時?


does_attack
指定した座標への着手が指定した連への攻撃かどうか判断する

 引数:
着手の座標
漣の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
・攻撃コード
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


does_defend
指定した座標への着手が指定した連の防御かどうか判断する

 引数:
着手の座標
漣の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
・防御コード
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
原文ではReturns:attack codeとなっているが誤記か?


ladder_attack
指定した座標にある連に厳格なシチョウでの攻撃を試みる

 引数:
連の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
攻撃手無し: 0
攻撃手有り:
・攻撃コード(1〜)
・攻撃手の座標
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
厳格なシチョウ(strictly in a ladder)とは、緩みシチョウではないということと推測される。


increase_depths
思考ルーチンの読みの深さを1レベル増やす

 引数:
-
 エラー:
-
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
depth = 読みの深さ?


decrease_depths
思考ルーチンの読みの深さを1レベル減らす

 引数:
-
 エラー:
-
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
depth = 読みの深さ?


owl_attack
OWLを使用して、指定した座標にある漣に攻撃を試みる

 引数:
漣の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
攻撃手無し: 0
攻撃手有り:
・攻撃コード(1〜)
・攻撃手の座標
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
OWL:Optics With Limit-negotiation 眼形データベースを用いた生死判定のロジック。(12.1 The Owl Code参照)


owl_defend
OWLを使用して、指定した座標にある漣の防御を試みる

 引数:
漣の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
防御手無し: 0
防御手有り:
・防御コード(1〜)
・防御手の座標
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


owl_threaten_attack
OWLを使用して、指定した座標にある漣に2手での攻撃を試みる

 引数:
漣の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
攻撃手無し: 0
攻撃手有り:
・攻撃コード(1〜)
・攻撃手の座標1
・攻撃手の座標2
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


owl_threaten_defense
OWLを使用して、指定した座標にある漣の2手での防御を試みる

 引数:
漣の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
防御手無し: 0
防御手有り:
・防御コード(1〜)
・防御手の座標1
・防御手の座標2
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


owl_does_attack
OWLを使用して、指定した座標への着手が指定した漣への攻撃かどうか判断する

 引数:
着手の座標
漣の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
・攻撃コード
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


owl_does_defend
OWLを使用して、指定した座標への着手が指定した漣の防御かどうか判断する

 引数:
着手の座標
漣の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
・防御コード
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


owl_connection_defends
OWLを使用して、指定した座標への着手が指定した2つの漣を接続しての防御かどうか判断する

 引数:
着手の座標
漣1の座標
漣2の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
・防御コード
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


defend_both
指定した2つの連の防御を試みる

 引数:
連1の座標
連2の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
・連に対する防御コード
(防御コードが0でなければ、指定した連の両方の防御手があることを保証するが、防御手の座標は返さない。)
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


owl_substantial
OWLを使用して、指定した連を除去した場合に、漣が活きられるかどうか判定する
(Determine whether capturing a string gives a living dragon)

 引数:
(連の)座標
 エラー:
不正な座標
座標に石が無い
 戻値:
漣が活き: 1
それ以外: 0
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
訳の動作だと、連・漣両方の座標指定が必要に思える。


analyze_semeai
攻め合いを分析する
(指定した2つの漣の攻撃・防御を試みる)

 引数:
漣1の座標
漣2の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
防御コード
攻撃コード
攻撃・防御手の座標
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


analyze_semeai_after_move
指定した座標への着手の後の攻め合いを分析する

 引数:
着手の色
着手の座標
漣1の座標
漣2の座標
 エラー:
不正な座標
 戻値:
・防御コード
・攻撃コード
・攻撃・防御手の座標
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


tactical_analyze_semeai
OWLを使用せずに、攻め合いを分析する

 引数:
漣1の座標
漣2の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
・防御コード
・攻撃コード
・攻撃・防御手の座標
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
原文ではReturns:status of dragona, dragonb assuming dragona moves firstだが、GnuGo3.8の動作ではanalyze_semeaiと同形式の結果を返す。


connect
指定した2つの連の接続を試みる

 引数:
連1の座標
連2の座標
 エラー:
不正な座標
座標に石が無い
2つの連の色が違う
 戻値:
接続手無し: 0
接続手有り:
・接続コード
・接続手の座標
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


disconnect
指定した2つの連の切断を試みる

 引数:
連1の座標
連2の座標
 エラー:
不正な座標
座標に石が無い
2つの連の色が違う
 戻値:
切断手無し: 0
切断手有り:
・切断コード
・切断手の座標
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


break_in
指定した連から、指定した領域への侵入を試みる

 引数:
連の座標
領域の座標
 エラー:
不正な座標
連の座標に石が無い
 戻値:
侵入手無し: 0
侵入手有り:
・侵入コード
・侵入手の座標
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


block_off
指定した連から、指定した領域への侵入のブロックを試みる

 引数:
連の座標
領域の座標
 エラー:
不正な座標
連の座標に石が無い
 戻値:
防御手無し: 0
防御手有り:
・防御コード
・防御手の座標
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


eval_eye
指定した領域の眼形スペースを評価する

 引数:
領域の座標
 エラー:
不正な座標
 戻値:
眼を形成する場合:
・最小の眼の数
・最大の眼の数
・(最小≠最大の場合)[眼の数を減らす攻撃手の座標]
・(最小≠最大の場合)[眼の数を減らさない防御手の座標]
眼を形成しない場合・どちらかの色に属さない: -1
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


dragon_status
漣の状態を判定する

 引数:
[漣の座標]
 エラー:
[不正な座標]
[座標に石が無い]
 戻値:
・漣の状態
(活き:"alive"
 瀕死:"critical"
 死に:"dead"
 不明:"unknown")
・(瀕死の場合)[攻撃手の座標]
・(瀕死の場合)[防御手の座標]
※座標指定が無い場合、全ての漣の状態が1行1連の"A4: alive"のような形式で返される
(FIXME:セキ活きと単独活きを区別すべき。コウを識別すべき。)
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


same_dragon
指定した2つの石が同じ漣に属するか判定する

 引数:
石1の座標
石2の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
同じ漣: 1
それ以外: 0
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


unconditional_status
指定した座標の無条件の状態を判定する

 引数:
座標
 エラー:
不正な座標
 戻値:
・座標の状態
(未定:"undecided"
 活き:"alive"
 死に:"dead"
 白の確定地:"white_territory"
 黒の確定地:"black_territory"
(石のある座標:未定,活き,死にのいずれか
 石のない座標:未定,白の確定地,黒の確定地のいずれか))
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
無条件とは、どんなに手を抜いても死なないこと。


combination_attack
指定した色が連携攻撃によって石を取れる着手を取得する

 引数:
 エラー:
不正な色
 戻値:
連携攻撃手有り:
・座標
連携攻撃手無し: PASS
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
連携攻撃手がどのように返されるか不明


combination_defend
色が連携攻撃によって石を取れる場合、他方の色がその連携攻撃を防御する着手を取得する

 引数:
 エラー:
不正な色
 戻値:
連携防御手有り:
・座標
連携防御手無し: PASS
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
説明からだと攻撃側・防御側どちらの色を指定するのか不明


aa_confirm_safety
atari_atari_confirm_safety()関数を実行する

 引数:
座標
[整数]
 エラー:
不正な着手
 戻値:
success code, if failure also defending move
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
OWLを使用した、連携攻撃に関する関数らしい。(12.2 Combination reading 参照)


genmove_black
黒の最良手を生成し着手する

 引数:
-
 エラー:
-
 戻値:
最良手有り:
・座標
最良手無し: PASS
 ステータス:
廃止されたGTPバージョン1コマンド
 訳注:


genmove_white
白の最良手を生成し着手する

 引数:
-
 エラー:
-
 戻値:
最良手有り:
・座標
最良手無し: PASS
 ステータス:
廃止されたGTPバージョン1コマンド
 訳注:


genmove
指定した色の最良手を生成し着手する

 引数:
 エラー:
不正な色
 戻値:
最良手有り:
・座標
最良手無し: PASS
投了: resign (resignation_allowedが指定されている場合)
 ステータス:
GTPバージョン2標準コマンド
 訳注:


reg_genmove
指定した色の最良手を生成する

 引数:
 エラー:
不正な色
 戻値:
最良手有り:
・座標
最良手無し: PASS
 ステータス:
GTPバージョン2標準コマンド
 訳注:


gg_genmove
指定した色の最良手を生成する

 引数:

[乱数シード]
 エラー:
不正な色
 戻値:
最良手有り:
・座標
最良手無し: PASS
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


restricted_genmove
指定した色の最良手を、指定した許可座標から選択して生成する

 引数:

許可座標リスト
 エラー:
不正な色
不正な座標
座標リスト無し
 戻値:
最良手有り:
・座標
最良手無し: PASS
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


kgs-genmove_cleanup
指定した色の最良手を生成し着手する
(敵の全ての死石が無くなるまでパスしない)

 引数:
 エラー:
不正な色
 戻値:
最良手有り:
・座標
最良手無し: PASS
 ステータス:
KGS独自コマンド
(類似のコマンドがGTPバージョン3で追加されるかも知れない)
 訳注:
KGS: インターネット碁サイトの一つ(http://www.gokgs.com/)


level
着手レベルを設定する

 引数:
整数
 エラー:
引数が正しくない
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


undo
着手を1手戻す

 引数:
-
 エラー:
着手履歴が短すぎる
 戻値:
-
 ステータス:
GTPバージョン2標準コマンド
 訳注:


gg-undo
指定した手数分着手を戻す

 引数:
[整数]
 エラー:
着手履歴が短すぎる
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


time_settings
持ち時間を設定する

 引数:
整数(持ち時間)
整数(秒読時間)
整数(秒読回数)
 エラー:
構文エラー
 戻値:
-
 ステータス:
GTPバージョン2標準コマンド
 訳注:


time_left
残り時間を報告する

 引数:

残り時間
残り秒読回数
 エラー:
構文エラー
 戻値:
-
 ステータス:
GTPバージョン2標準コマンド
 訳注:
残り時間の報告なのに戻り値がnothingなのが意味不明。引数で秒数を指定してるし。
(ネット碁サーバとの通信用コマンド?)


final_score
終局した対局のスコアを計算する

 引数:
[乱数シード]
 エラー:
-
 戻値:
スコア (SGFフォーマットで)(RE property)
 ステータス:
GTPバージョン2標準コマンド
 訳注:
戻り値はB+0.5(黒0.5目勝ち)などの形式
乱数シードがどう使われるか不明


final_status
終局した対局の指定した座標の最終状態を取得する

 引数:
座標
[乱数シード]
 エラー:
不正な座標
 戻値:
・座標の状態
(活き:"alive"
 死に:"dead"
 セキ:"seki"
 白の確定地:"white_territory"
 黒の確定地:"black_territory"
 ダメ:"dame")
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


final_status_list
終局した対局で特定の最終状態の座標リストを取得する

 引数:
状態
(活き:"alive"
 死に:"dead"
 セキ:"seki"
 白の確定地:"white_territory"
 黒の確定地:"black_territory"
 ダメ:"dame")
[乱数シード]
 エラー:
状態文字列なし
不正な状態文字列
 戻値:
・指定された状態を持つ座標リスト
("alive","dead","seki"の場合、空でない座標が連ごとに改行される)
 ステータス:
GTPバージョン2標準コマンド
(ただし"dame", "white_territory", "black_territory"の指定はGNU Go 独自拡張)
 訳注:


estimate_score
スコアを推定する

 引数:
-
 エラー:
-
 戻値:
・スコアとその上限下限
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
戻値は
B+23.8 (upper bound: -11.9, lower: -35.7)
のような形式で返される


experimental_score
次がどちらの手番かを考慮して、スコアを推定する
(次の手番の着手を生成して、その手の価値を加えるので、瀕死の漣の価値が考慮される)

 引数:
次手番の色
 エラー:
不正な色
 戻値:
・スコア
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
戻値は -11.8 などの形式で返されるが、これがどちらの色から見たスコアなのか不明。


reset_life_node_counter
life nodeの数をリセットする
(このコマンドは廃止され、後方互換のためだけに残されている。)

 引数:
-
 エラー:
-
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
life nodeが何か不明


get_life_node_counter
life nodeの数を取得する
(このコマンドは廃止され、後方互換のためだけに残されている。)

 引数:
-
 エラー:
-
 戻値:
・life nodeの数
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


reset_owl_node_counter
owl nodeの数をリセットする

 引数:
-
 エラー:
-
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
owl nodeが何を表すか不明


get_owl_node_counter
owl nodeの数を取得する

 引数:
-
 エラー:
-
 戻値:
・owl nodeの数
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


reset_reading_node_counter
reading nodeの数をリセットする

 引数:
-
 エラー:
-
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
reading nodeが何を表すか不明。読みと関係する?


get_reading_node_counter
reading nodeの数を取得する

 引数:
-
 エラー:
-
 戻値:
・reading nodeの数
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


reset_trymove_counter
trymoves / tryko の数をリセットする

 引数:
-
 エラー:
-
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
リセットされるのは数のみで、trymove/trykoのスタックはリセットされない。(このコマンド実行後も、popgoで元に戻せる。)


get_trymove_counter
trymoves / tryko の数を取得する

 引数:
-
 エラー:
-
 戻値:
・trymoves / trykoの数
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


reset_connection_node_counter
connection nodeの数をリセットする

 引数:
-
 エラー:
-
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
connection nodeが何を表すか不明。接続と関係する?


get_connection_node_counter
connection nodeの数を取得する

 引数:
-
 エラー:
-
 戻値:
・connection nodeの数
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


test_eyeshape
矛盾評価のために眼形をテストする
(Test an eyeshape for inconsistent evaluations)

 引数:
眼形の座標
 エラー:
不正な座標
 戻値:
・失敗レポート(stderrに出力)
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
指定する座標の状況によって、例えば以下のような結果が返ってくる。
D2 alive, but almost filled with nakade:
しかし多くの座標で結果が何も返ってこないことが多い。
しかも自分のwin7コマンドプロンプト環境ではレポート出力後、'cygwin': unknown terminal type. などと出力されそのままgnugoが終了する。


analyze_eyegraph
眼形(eye graph)の眼値(eyevalue)と急所を計算する

 引数:
文字列エンコードされた眼形
 エラー:
不正な眼形
解析失敗
 戻値:
・眼値(eyevalue)
・急所
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
引数の与え方が不明。
引数なしでも、座標値を与えても、"0000"が帰ってくるのみ。(test_eyeshapeでレポートが返ってくる座標を与えても同様。)
このコマンド実行後、盤面が破壊される(盤面の一部を除いて、同色の石が配置される)


cputime
CPU経過時間を秒で取得する

 引数:
-
 エラー:
-
 戻値:
・合計CPU経過時間(ユーザー+システム)[秒]
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


showboard
現在の盤面配置を標準出力(stdout)に出力する

 引数:
-
 エラー:
-
 戻値:
-
 ステータス:
GTPバージョン2標準コマンド
 訳注:


dump_stack
スタックダンプを標準エラー出力(stderror)に出力する

 引数:
-
 エラー:
-
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


initial_influence
勢力等の情報を取得する

 引数:
手番の色
情報種別
(白の勢力:"white_influence" (小数)
 黒の勢力:"black_influence" (小数)
 白の強さ:"white_strength" (小数)
 黒の強さ:"black_strength" (小数)
 白の減衰:"white_attenuation" (小数)
 黒の減衰:"black_attenuation" (小数)
 白の透過性:"white_permeability" (小数)
 黒の透過性:"black_permeability" (小数)
 領域の値:"territory_value" (小数)
 勢力範囲:"influence_regions" (整数)
 非領域:"non_territory" (整数))
 エラー:
-
 戻値:
・下記のようなフォーマットの勢力データ

0.51 1.34 3.20 6.60 9.09 8.06 1.96 0.00 0.00
0.45 1.65 4.92 12.19 17.47 15.92 4.03 0.00 0.00
.
.
.
0.00 0.00 0.00 0.00 0.00 100.00 75.53 41.47 23.41

勢力範囲情報(influence_regions)のコードの意味は以下。
4 白石
3 白の領域
2 白の模様
1 白の範囲
0 中立
-1 黒の範囲
-2 黒の模様
-3 黒の領域
-4 黒石
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
原文の説明は"initial influence function"を返す、とあるが、"initial"と"function"はつながりが分からないので省略した。
influence:勢力
attenuation:減衰
non_territory情報の戻り値のコード(0〜3)の意味が不明。それ以外の情報も値の意味付けが不明なものが多い。


move_influence
指定した座標に着手した後の、勢力等の情報を取得する

 引数:

座標
情報種別(※initial_influenceコマンドと同様)
 エラー:
-
 戻値:
※initial_influenceコマンドと同様
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
実行結果に、指定した着手が加味されていないように思える。


move_probabilities
着手可能性一覧を取得する(可能性0でないもの)
(この前にgenmoveコマンドが発行されていない場合、このコマンドの結果は意味の無いものである。)

 引数:
-
 エラー:
-
 戻値:
・着手座標
・可能性
(着手ごとに1行)
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
以下のような結果が返る。
C17 0.2501
D17 0.2500
C4 0.2500
C3 0.2499


move_uncertainty
着手の不確定性のビット数を取得する
(この前にgenmoveコマンドが発行されていない場合、このコマンドの結果は意味の無いものである。)

 引数:
-
 エラー:
-
 戻値:
・不確定性のビット数
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
着手可能性のある座標(move_probabilities)の数が1つ(2^0)の場合0.0000が、4つ(2^2)の場合2.0000が返る。


followup_influence
フォローアップする勢力等の情報を取得する

 引数:

座標
情報種別(※initial_influenceコマンドと同様)
 エラー:
-
 戻値:
※initial_influenceコマンドと同様
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
followupが何を意味するか不明。着手に伴う勢力の増減を返すのかと思っていたが、結果はそうではなさそうだった。


worm_data
連の情報を取得する

 引数:
[座標]
 エラー:
-
 戻値:
・下記のようなフォーマットの連データ

A19:
color black
size 10
effective_size 17.83
origin A19
liberties 8
liberties2 15
liberties3 10
liberties4 8
attack PASS
attack_code 0
lunch B19
defend PASS
defend_code 0
cutstone 2
cutstone2 0
genus 0
inessential 0
B19:
color white
.
.
.
inessential 0
C19:
...

座標が指定された場合は、1つの連の情報のみが返される。
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
worm=string=連


worm_stones
指定した連の石リストを取得する

 引数:
座標
 エラー:
不正な座標
座標に石が無い
 戻値:
・座標リスト
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


worm_cutstone
指定した連のcutstoneの数を取得する

 引数:
座標
 エラー:
不正な座標
座標に石が無い
 戻値:
・cutstoneの数
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
cutstoneが何を表すか不明。
他の連との断点の数ではなさそう。


dragon_data
漣の情報を取得する

 引数:
[座標]
 エラー:
-
 戻値:
※worm_dataコマンドと同様
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


dragon_stones
指定した漣の石リストを取得する

 引数:
座標
 エラー:
不正な座標
座標に石が無い
 戻値:
・座標リスト
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


eye_data
指定した座標の眼情報を取得する

 引数:

座標
 エラー:
-
 戻値:
・眼情報と値
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
眼情報は下記のようなフォーマット

origin E4
color white
esize 20
msize 0
value 2222
marginal 0
neighbors 3
marginal_neighbors 0


half_eye_data
指定した座標の半眼情報を取得する

 引数:
座標
 エラー:
-
 戻値:
・半眼情報と値
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
眼情報は下記のようなフォーマット

value 5.00
type FALSE_EYE
num_attacks 3
attack_point[0] G5
attack_point[1] G7
attack_point[2] J5
num_defenses 3
defense_point[0] G5
defense_point[1] G7
defense_point[2] J5

半眼で無い場合、

value 10.00
type 0
num_attacks 0
num_defenses

などとなる。(項目数可変。)


start_sgftrace
読みで実行した着手のSGFツリーのメモリへの格納を開始する
(警告:このコマンドを使おうとする場合、何をしようとしているか理解したほうがよい。)

 引数:
-
 エラー:
-
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
意味深な警告の真意は、このコマンドはgenmoveなどでCPUが考慮する際に読んだ着手の全てとその思考過程の全てがSGFツリーになるということ。
実際、互先から5手だけgenmoveした結果は膨大な着手とコメントが記載された5.8MBのSGFファイルとなった。


finish_sgftrace
着手のSGFツリーのメモリへの格納を終了し、ファイルに書き出す
(警告:このコマンドを使おうとする場合、何をしようとしているか理解したほうがよい。)

 引数:
SGFファイル名
 エラー:
-
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
start_sgftrace同様


printsgf
現在の盤面配置を指定したファイル名の静的なSGFファイルに書き出す
(ファイル名指定無し or "-"の場合は標準出力に出力する)

 引数:
[SGFファイル名]
 エラー:
-
 戻値:
ファイル名指定有 : -
ファイル名指定無
・SGFデータ
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
静的なSGFとは、全ての黒石・白石の座標をAB[],AW[]で配置だけ表現したもの。(着手順は表現されない。)


tune_move_ordering
攻め合いの読みにおける着手の順序に関するパラメータ(MOVE_ORDERING_PARAMETERS)を調整する

 引数:
整数
 エラー:
不正な引数
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


echo
指定された文字列を出力する

 引数:
文字列
 エラー:
-
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


echo_err
指定された文字列を標準出力(stdout)と標準エラー出力(stderr)に出力する

 引数:
文字列
 エラー:
-
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


help
利用可能な全てのコマンドのリストを取得する

 引数:
-
 エラー:
-
 戻値:
・コマンド
(コマンドごとに1行)
 ステータス:
GTPバージョン2標準コマンド
 訳注:
GTP2標準とあるが、GTPではhelpコマンドは定義されておらず、"list_commands"コマンドとして定義されている。(動作定義は一致)
ドキュメントに記載は無いが、GNUGo3.8ではlist_commandsコマンドも動作するようである。


known_command
指定したコマンドが利用可能か調査する

 引数:
コマンド名
 エラー:
-
 戻値:
コマンドが存在する : "true"
コマンドが存在しない : "false"
 ステータス:
GTPバージョン2標準コマンド
 訳注:


report_uncertainty
owl_attack・owl_defendからの不確定性レポートのon/offを切り替える

 引数:
"on"もしくは"off"
 エラー:
不正な引数
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


get_random_seed
乱数シードを取得する

 引数:
-
 エラー:
-
 戻値:
乱数シード
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


set_random_seed
乱数シードを指定する

 引数:
乱数シード
 エラー:
-
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


advance_random_seed
指定したゲーム数分、乱数シードを進める

 引数:
ゲーム数
 エラー:
不正な引数
 戻値:
新しい乱数シード
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


is_surrounded
指定した漣が包囲されているか判定する

 引数:
漣の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
包囲されている : 1
弱く包囲されている : 2
包囲されていない : 0
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


does_surround
指定した座標への着手が指定した漣を包囲するか判定する

 引数:
着手の座標
漣の座標
 エラー:
不正な座標
漣の座標に石が無い
着手の座標が空でない
 戻値:
包囲する着手である : 1
包囲する着手でない : 0
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


surround_map
指定した漣の包囲マップの値を取得する

 引数:
漣の座標
マップ値を取得する座標
 エラー:
不正な座標
漣の座標に石が無い
 戻値:
漣が包囲されている
・指定した座標の包囲マップの値
漣が包囲されていない : -1
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


set_search_diamond
探索を制限し、探索ダイヤモンドを設立する
(limit search, and establish a search diamond)

 引数:
座標
 エラー:
不正な座標
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


reset_search_mask
盤面上の全ての探索制限を解除する

 引数:
-
 エラー:
-
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


limit_search
グローバル変数 limit_searchの値をセットする

 引数:
整数
 エラー:
不正な引数
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
limit_search変数が何を表すかは不明


set_search_limit
指定した座標を探索制限の対象とする

 引数:
座標
 エラー:
不正な座標
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


draw_search_area
探索領域を取得する(標準エラー出力(stderr)に出力する)

 引数:
-
 エラー:
-
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
結果が何も返ってこない上、自分のwin7コマンドプロンプト環境では、'cygwin': unknown terminal type. などと出力されそのままgnugoが終了する。




訳注:ここにExcelファイル置いておきますね。
-----------------------
てかGTPとか大分前からあるのに、和訳が無いのが不思議だ。
みんな普通に英文ですらっと理解できるからってことなのか?
将棋の次はコンピュータ囲碁が来るで。
こんな怪しいブログの和訳でよろしければど〜ぞ。

Special thanks to
マツナガ's 囲碁コーナー 記事:囲碁の英語
英単語が対応する囲碁用語を確認させていただきました。
(ladder = シチョウ とか)
http://homepage1.nifty.com/maznaga/IGO/mag/mag060123.htm

posted by curren at 10:24| Comment(0) | TrackBack(0) | 日記 - 一般 | このブログの読者になる | 更新情報をチェックする

2013年07月19日

更新

いちお保守のため更新。

このブログや囲碁のこと、忘れてないです。
半年に一度くらい、思い出して近況をチェックしたりするんですが、
具体的なアクションが起こせないんです。

囲碁のほうは、情報をチェックするたびに井山氏が強くなっているんですが、
それくらいの変化しかないので特に記事書けないですし。
(一方、将棋はコンピュータ将棋のこととか、ニコニコで盛り上がってたりとかで話題豊富ですよね。)
唯一、2年前くらいに囲碁ガールがYahooトップページニュースに載ったときは書こうかと思ったけど、
あれ如何にYahooトップに載せたか気になります。

囲碁アプリは、正統派アプリとしてcosmiは気になっていて、
いろいろ参考にしたいなあと思うんですが
(特に、CPUプレイヤー(bot)をレン鯖上で動作させて採算はどんなもんなんだろうかと気になります。
 以前はとんでもなく赤なんじゃないかと想定していたのですが、
 cosmiの開発ブログ見るとそこまで大食いするようじゃなさそうな。)、
ふざけ系のアプリは全く見かけず、
自分のふざけ囲碁アプリもまだ公開する意味は残っているのかなあと思います。

ただ、アプリ実行環境の情勢は確実に変わっており、
うちの囲碁アプリが使っているJava Appletは、
(元々公開時点で既に時代遅れ気味だったですが、)
Javaの脆弱性・および脆弱性が修正されない問題により
多くのブラウザで危険なものとして扱われ、利用非推奨とされてしまっている。
また、インターネットアクセスに使用する端末も、
70〜80%はスマホ・タブレットからの閲覧(=JavaApplet動作不可)となっており
(個人的には、コンテンツを消費するだけでなく、コンテンツを創造もできる端末を使いたいですが、
 大多数の感じる「スマート」は、そうではないようです。)
現在のアプリも老い先長くないのかな、と考えています。

リビルドできるのはいつになるか分かりませんが、
将棋がコンピュータに敗れた今、うまくすれば、少しだけ時代が囲碁に流れる感じもしなくもないので、
ちょいちょい、囲碁、気に留めながら生活しようと思います。
posted by curren at 00:04| Comment(0) | TrackBack(0) | 日記 - 一般 | このブログの読者になる | 更新情報をチェックする

2011年11月23日

無題

まさかの更新です。
囲碁にはその後ほとんど触れていないのですが、興味だけは未だあまり変わらず残存しています。
囲碁BlogNetは更新だけはできるようになったと思います。
脱衣囲碁やキフワンもアプリ死んじゃってると思います。
このあたりから入れば生きているかも知れません。
(キフワンランキング以外は未確認。)
http://igo.s268.xrea.com/curren.cute.bz/iframe.html
http://igo.s268.xrea.com/curren.cute.bz/iframe_kifu.html
http://igo.s268.xrea.com/curren.cute.bz/kifuone_time_ranking.php
いろいろとすみません。
まあいろいろと書きたいことはありますが、またの機会に...。
posted by curren at 00:43| Comment(0) | TrackBack(0) | 日記 - 一般 | このブログの読者になる | 更新情報をチェックする

2011年02月13日

個人メモ:能力指標のパラダイムシフトと抑鬱状態

└─覚書
  ├─パラダイムシフト
  │ └─自分には能力が無い
  │   ├─能力とは
  │   │ ├─誤解
  │   │ │ └─勉強が出来る
  │   │ │   ├─例
  │   │ │   │ ├─テストで点が取れる
  │   │ │   │ ├─資格試験に受かる
  │   │ │   │ └─技術知識がある
  │   │ │   │   └─単純に期間的アドバンテージがあっただけ
  │   │ │   └─答えが用意されているものの答えを言うことができる
  │   │ │     └─レールの上
  │   │ └─真実
  │   │   └─頭が良い
  │   │     ├─応用が利く
  │   │     ├─臨機応変に対応できる
  │   │     ├─コミュニケーション能力がある
  │   │     │ ├─人との交渉・折衝
  │   │     │ ├─人間関係の構築
  │   │     │ │ └─雑談
  │   │     │ ├─結局人の世の中故、人への能力がどこでも必要
  │   │     │ ├─頭が良い≒コミュ力 に近いほど重要そう
  │   │     │ └─人を動かすことが出来る
  │   │     │   ├─独力で出来る仕事量は、自分の能力×1[人]
  │   │     │   │ └─他人より3倍優れていても、3
  │   │     │   └─人を使う仕事量は、他人の能力×使う人数
  │   │     │     └─凡人を10人使えば、10
  │   │     │       └─伝達ロスはあるにしろ
  │   │     ├─リアルタイムの情報処理能力
  │   │     │ ├─言葉の理解能力
  │   │     │ │ └─特に会話
  │   │     │ └─inputを受けての反応速度、反応精度
  │   │     │   ├─その場では手拍子で適当に受け答えてしまう
  │   │     │   └─自分の考えは一人でじっくり考えないと出てこない
  │   │     │     └─性格だと思ってたけど能力だった
  │   │     └─答えの無い領域でも答えを作り出すことが出来る
  │   ├─能力が無いことを受け入れるのに半年掛かった
  │   │ ├─断片的には分かっていた
  │   │ ├─勉強が出来る/頭が良い が根本的に別要素だと整理できたのが最近
  │   │ └─参考ページ
  │   │   └─http://blog.oowarai.com/?p=549
  │   └─無能力に気付かなかった理由
  │     ├─学校
  │     │ └─一番の能力指標が通信簿
  │     │   ├─学業成績の軸が重要視された
  │     │   ├─他の要素は重要視されなかった
  │     │   │ └─成績が良いことにあぐらがかけた
  │     │   └─どの学校でも大して努力せずとも上位
  │     │     ├─努力することを学べなかった
  │     │     ├─自分は特別という意識が多分芽生えた
  │     │     └─子供はいい学校に入れるべき
  │     │       ├─より上を目指すと言う理由ではなく
  │     │       └─変な特別意識を芽生えさせないため
  │     └─会社
  │       ├─期間的アドバンテージ
  │       │ └─学生時代からプログラムやってたリードを保ち続けただけ
  │       ├─モノを作ることが仕事の主体
  │       │ └─答え的なものがある
  │       └─人と対等に比較されることがなかった
  │         ├─初めからリーダー
  │         │ ├─というか一人仕事
  │         │ ├─何となく回ってさえいれば高評価
  │         │ └─仕事の難易度を評価者は把握していない
  │         │   └─元々大したこと無い仕事を、効率悪く大変そうにやっていただけなのかも
  │         └─その後もリーダー
  │           └─後輩との差を詰めさせなかった
  │             ├─下を育てていなかった
  │             │ └─仕事の囲い込み
  │             └─チームとして成長していない
  ├─領域
  │ └─ソフトウェア開発
  │   ├─下流工程
  │   │ └─モノづくり
  │   │   ├─答えがある
  │   │   │ └─実装が仕様を満たしていればOK
  │   │   ├─技術の領域
  │   │   └─モノができれば一人でもよい
  │   └─上流工程
  │     └─ルールづくり
  │       ├─答えが無い
  │       │ ├─仕様が要求を満たしているか?
  │       │ │ └─最適に満たしているか?
  │       │ └─要求自体がそもそも正しいか?
  │       ├─自分の考えが正しいと言い張る必要がある
  │       │ └─理由の説明
  │       └─他の人の主張と協調・対抗・説得する必要がある
  ├─鬱の目線
  │ ├─自信喪失
  │ │ ├─自分の考えていることが何一つ正しいと思えない
  │ │ │ ├─発言回数の低下
  │ │ │ ├─意見の撤回
  │ │ │ │ └─数時間検討の後の意見を、一言の否定で撤回する
  │ │ │ └─特に答えの無いもの
  │ │ │   ├─文章表現(言い回し)の指摘に抗せない
  │ │ │   │ ├─文章の分かりやすさとかある程度は人それぞれと思うが
  │ │ │   │ └─どうでもいいってのもある
  │ │ │   └─答えがある指摘はできる
  │ │ │     └─誤字脱字など
  │ │ └─否定への恐怖
  │ │   └─一概にそうは言えないけど、などの前置きを置きがちになる
  │ ├─想像力・創造力の破綻
  │ │ └─新しいアイデアが出ない
  │ ├─危機感・責任感・問題意識の欠如
  │ │ └─自分が出来ないのが当然と思ってくる
  │ │   ├─出来なくても何とも思わない
  │ │   ├─人にフォローしてもらっても当然と思ってしまう
  │ │   └─能力が無い自分がやるべきことではないと思う
  │ ├─言語能力の低下
  │ │ ├─上手く説明できない
  │ │ │ └─一度上手く説明できない
  │ │ │   └─自分の言葉で理解されないので、余計な言葉を付加する
  │ │ │     └─余計に理解されない、の悪循環
  │ │ └─言葉が纏まらない
  │ │   └─何か話そうと思って、纏まらないうちに話し出す
  │ ├─優先順位の錯誤
  │ │ ├─優先順位を決めるのに時間が掛かる
  │ │ │ └─決められない
  │ │ ├─重要でないことをじっくり考えたり
  │ │ ├─人と関わる必要のあるタスクを自然と後回しにする
  │ │ │ └─回避性人格障害
  │ │ └─視野が狭小になる
  │ │   ├─全体最適を考えられない
  │ │   └─囲碁など強くなるはずが無い
  │ ├─尻が重くなる
  │ │ ├─分かっていても出来ない
  │ │ │ ├─人と話すべきだと分かっているのに出来ない
  │ │ │ ├─人の目を見て話すべきだと分かっているのに出来ない
  │ │ │ └─このマインドマップを作成するのにも半年くらい掛かった
  │ │ │   └─更に問題の枝に「改善案」を記入できていない
  │ │ └─選択肢が出ない
  │ │   └─問題の発生した場面で、人と相談するという解決法があることが思い浮かばない
  │ └─無気力
  ├─評価の低下
  │ └─発言無視
  │   ├─有効な発言をしないので、頭のいい人(効率化する人)は自分の発言を無視する
  │   │ ├─頭のいい人でも無視しない人もいる
  │   │ │ └─無視することが全局で見て良くないと分かっているのかも
  │   │ └─発言の仕方や声の大きさの問題かも知れないが
  │   │   ├─発言の仕方
  │   │   │ ├─断定しない
  │   │   │ ├─結論を求めない
  │   │   │ ├─次のアクションに繋がらない
  │   │   │ ├─既出事項の表現を変えただけ
  │   │   │ └─そもそも分かっていない
  │   │   └─板書も無視される
  │   ├─悪循環
  │   └─発言しても評価を下げるだけ
  │     └─対外的な場での発言は会社の評価すら下げるだけ
  ├─性格
  │ ├─上記鬱の目線は、単に元来の性格傾向が顕著になっただけなのかも知れない
  │ │ ├─元々上記傾向はあった
  │ │ └─性格なのか能力なのか
  │ │   ├─能力
  │ │   └─上記が上手く出来る人は、単純作業が出来ない訳ではない
  │ ├─人との繋がりを重視しない性格
  │ │ ├─Human-Orientedな考えを持っていない
  │ │ │ └─持っている人は意識せずとも人と話す
  │ │ └─今までそれで何とかなってきたから
  │ ├─受動的な性格
  │ │ └─ファミコン買ってもほとんど見てるだけだった
  │ └─人格形成の理由
  │   ├─記憶力だかのお陰で、それで何とか良いと言われる道を歩いてこれたから
  │   ├─親の背中
  │   │ └─工夫とかしてきた感じを受けない
  │   ├─主体性を持つ場面が少ない
  │   │ └─他の人が喋りすぎる
  │   ├─自分の意見を通す苦労より自分の意見を飲み込む苦労の方が少ないので飲み込んでいた
  │   └─一人暮らしでネットしすぎて会話の機会が無い
  │     └─テレビなら若干マシなのか?
  └─改善案
    ├─この歳から改善できるものなのか?
    ├─今まで面倒くさいと思っていることを敢えてやると良くなるらしいが
    │ └─分かっていても出来ない
    └─まずは書くことで現状整理
      └─追い詰めた状況の貴重な記録にもなる
posted by curren at 18:57| Comment(2) | TrackBack(0) | 日記 - 一般 | このブログの読者になる | 更新情報をチェックする

2010年03月18日

日本棋院が囲碁普及のアイディアを問うアンケートを実施

日本棋院の会員制度および免状制度についてアンケート

KGS7連敗凹み中の最中、
こちらで存在を知り、
早速回答してきました。

基本的には会員(金を落とすファン)向けのアンケートながら、
「どうしたらもっと囲碁ファンを増やすことができると思いますか?」と言う設問があり、
我々囲碁ブロガーにとって興味深い、かつ意見を言う絶好の場でもあると思います。

詳しい回答内容は、また身元が割れて刺客に消されるのが怖くて晒せませんが、
以前より記事にしてきたこと()の一部を酔いに任せて書きなぐって送信しました。
もちろん全然言い足りてませんが、これを元に何かが変わると良いと思っています。

ちなみにプレゼント送付のための住所記入欄は、
身元が割れて(以下略)、もありますが、
井山名人の扇子に興味が無いので記入しませんでした。
そもそもプレゼントが扇子というセンス古いわ。(オマエモナー(古))
(でもそれが逆に新しく、夏の仕事場で揮毫扇子愛用してますが。)

歩様(C)Go!さん)もしくは花ちゃん(囲碁ドル)サイン入りブロマイドとかだったら記入せざるを得なかったかも知れません。
もしくは、ヨーダ「宇宙がよろこぶ」(鳥山明的世界観)とか「生きてるだけでまるもうけ」画像あり)の扇子だったら
棋院に金落として買うよ。
posted by curren at 23:55| Comment(0) | TrackBack(0) | 日記 - 囲碁 | このブログの読者になる | 更新情報をチェックする

2010年03月10日

対局もアプリも上手く進まず

最近毎晩できるだけ1局は打っているんですが、
ビックリするほど強くならない。

◆KGS敗局集(めんどいんで手順は貼りません)

地を多く取る目的意識の欠如(白が自分)
20100310-2.png
気持ち良く石を取ったつもりが、地合は大差。

見事な死活誤り(白が自分)
20100310-1.png
小ヨセ後右辺の打ち込みを殺せず。仕返しの左上で活きられず。
いずれも最後は基本的っぽい死活ミス。
ちなみに相手は恐らくハードエスケーパー。


とても、数年前から囲碁ブログやっている者とは思えない棋力。
せめてリアルで「趣味は囲碁です」と言って恥ずかしくないレベルになりたい。


「非実在青少年」な少女のアバター
例のうちのアプリのキャラ流用)
KGS_abater.png
規制は勘弁してください。

対上手と対下手の勝率が偏りすぎ
(KGS Analyticsより)
20100310-3.png
普通逆だと思うんだけど...


◆試作Webアプリ(KGS Analsecs(仮称))
自分がKGSで打つモチベーションを高めるために作成着手したもの。
⇒実験域。まだ全然途中というか、技術調査段階。)
・自分のKGSアカウント名を入力
・KGSでの対局結果をKGS Archiveより収集する(KGS Analyticsのように)
・KGSでの戦績に応じたご褒美画像へのリンク一覧(サムネイル)を表示する
  ・対局数
  ・勝利数
  ・段級位
  ・総対局時間
  ・隠し条件(特定プレイヤーへの勝利など)

これにより、先日の記事で書いた、
対局機能は極力作らずに(KGSに任せる)、
マトモな囲碁にご褒美要素を付加することが可能となる。

ただし、これができたとしても、
表示させるご褒美画像が無い!
(著作権上問題の無い、求めるテーマとクオリティに合致した画像の無償での容易な入手法がほぼ無い)
ということが判明し、座礁。

音声合成や3Dモデリングなどの技術が発展した現代ではあっても、
絵画の領域についてはやはり人なんですねぇ。
囲碁に理解のある絵描きさん、無償で提供してくれませんでしょうか?
原画っていうか構図アイデアくらいなら私でも出せるかも知れません。
posted by curren at 23:58| Comment(0) | TrackBack(0) | 日記 - 囲碁 | このブログの読者になる | 更新情報をチェックする

2010年03月01日

棋譜ワン ランキング機能追加 - 開発状況(2010/3/01)

棋譜並べ競争ゲーム、棋譜ワングランプリに、
タイム登録&ランキング機能を追加しました。
(プレイはこちらから。)

前回記事の後、無性にKGSで打ちたい熱が更に上がり、
当初考えていた手段での囲碁対局機能付与方法よりも簡便な、
自分が囲碁をKGSで打つ励みになるようなモノをとっとと作りたい、
と思ってちょっと技術調査をしよう、と思っていたら、
気付いたらDB登録機能作ってました。

プレイ後にタイムの結果が表示され、
名前とURL(任意。ご自分のブログなりホームページがあれば入力)
コメント(某twitterに倣って140文字までの登録です)を入力し、
送信ボタンでプレイヤー情報として登録されます。
登録を行なわなかった場合は、無名の棋士としてタイムだけ登録されます。
登録後のランキングでは、登録した記録のタイム部分が太字で表示されます。
プレイしなくても、こちらから現在のランキングを見ることができます。


前ちょっと書いたように、
ページ転送機能があるので、ほぼ単純に、
登録機能のあるもの(今回はPHP)にそっちの仕事は任せちゃえばよいので、
カンタンでした。
(PHPはちょっとかじっただけなので、
 調査しながらの作業となり手間は掛かったが。)


しかしまだいろいろやっつけ感があるままですが、
(レイアウトだとか、ゴミデータが登録される可能性とか、
 同時登録時の排他制御が未確認とか、描画が遅くてクリック受け付けない時があるとか、
 SecretBonusただ声が出るだけとか。)

とりあえず公開に踏み切っちゃいます。

実際には細部を詰める必要がありますが、
これでグランプリが開催できそうな感じになってきました。
その暁には、是非グランドスラムを達成した張栩四冠もご参加ください。(すいませんまた調子に乗りました。)
とは言え、大枠ができちゃったので、このまままたしばらく放置しそうですが...。
posted by curren at 20:33| Comment(0) | TrackBack(0) | 日記 - 囲碁アプリ開発 | このブログの読者になる | 更新情報をチェックする

2010年02月26日

中間報告 - 開発状況(2010/2/25)

開発停滞中。
対局後・棋譜並べ完了時のページ転送機能は実は実装済でしたが、
帰ると疲れて、エロクイックス囲碁かまけてしまいました。
hidewさんのアプリやったり、nipparatさんのコメント見たら打ちたくなって、KGSのアカウント復活させた)

本来はこのページ転送機能によりかなりの道が開ける
(対局結果(勝利・敗北・持碁)に応じたご褒美や、ストーリー付け・次ステージに進む処理の実現、
 棋譜並べタイムのDB登録(ハイスコアランキング、PHP併用)など)
のだが、
転送先ページを作る作業が進んでません。

ここで停滞したらその先も無いと思い、
とりあえず対局Appletに敗北時のページ転送を付けました。
(ただし非常にショボい。非常に悪い例である。
 本当はせめて各対局結果ページにアクセス解析貼り付けて、
 人々がどれくらプレイしているのかを計ろうと思ったのだが、
 上手く機能しないようである。)


エロクイックスやりながら思ったのだが、
極端な話、ページ転送機能さえ付ければ、
モチベーションを高めるための本質と思われる
「ご褒美」「やり込み」を実現できるのかも。
(着手時の派手な演出なども重要な事項だが、あくまでサブである。)
単純にページ転送機能のある汎用囲碁アプリがあれば、
後は転送先のページ内容や転送ルートで何とでも工夫ができるのかも知れない。
しかしそのような囲碁アプリは現在存在しないのである(多分)。

そして、今のウチのアプリに足らないものは、
マトモな囲碁対局機能である。
純碁は敷居としては良いのかも知れないが、
やはりその先の囲碁を知るためには物足りない。
KGS 29Kのボットと対局するような、のれんに腕押し感しか残らず、
囲碁やったな〜、という感じにはなれないのである。

その辺りについても、早めに対処したいなぁと思う。
そもそもこのアプリを開発し始めた理由は、
自分が楽しく囲碁を打ち続けられる環境が欲しかったからなのだから。
(かと言って、時間も無いんで正攻法で作ろうとするつもりも無いのだが。)
posted by curren at 00:39| Comment(0) | TrackBack(0) | 日記 - 囲碁アプリ開発 | このブログの読者になる | 更新情報をチェックする

2010年02月12日

棋譜ワンも復活 - 開発状況(2010/2/12)

hidewさんのリク?を受け、以前の棋譜並べのスピードを競うアプリ(キフワンGP)のサイズを大きくしてみました。



■遊び方
黒の次の一手の場所をマウスでクリックしてください。
 (白番は自動的に着手されます。)
・誤った場所をクリックしても着手できません。
・始めはノーヒントですが、しばらくすると次の一手の場所に
 赤色の幻影が現れます。
・幻影が現れる前でも着手可能です。
 その場合「Secret bonus!」と言うことで拍手が起こります。
・終局まで並び終えると、棋譜並べ開始からの時間が表示され、記録として登録されます。
 その際、終局後画面からお名前、コメントなどを入力できます。
・現在の世界ランキングこちらから確認可能です。

■棋譜の元対局:
 1997/5/1 第22期 名人戦リーグ
 黒:林海峰 九段  白:依田紀基 九段
 (棋譜はこちらからいただきました。)

■ヒント
・初手は完全に勘でお願いします。
・誤った場所をクリックしてもペナルティはないので、
 それっぽいところをガンガンクリック!
・一線のハネツギとか、コウ争いとかがSecret Bonusのチャンス!
・終局後の再プレイは、IEの場合[Ctrl]+[F5]もしくはアドレスバーで[Enter]です。



史上最年少プロ棋士誕生!ということで話題の藤沢里菜ちゃん
(私が囲碁ボケに参加した頃に一緒に参加していたのですね。
 これは「俺も昔、あの里菜ちゃんと競い合ってたんだ」と言っていいのだろうか?)

(ちなみに才能に限界を感じ引退した囲碁ボケですが、
 久し振りにおもむろに一つ辻ボケかましてみよかと思って今回のお題を見に行ってみたのですが、
 当時一件だけ投稿されていた初手のボケが、
 深い読みを要しそれでいて的確な一手(血の絆、師弟の絆の両方を馬で両アタリにする)で、
 約3年の間で皆様遥かなる高みに上られてしまったと思い、すごすごと逃げ帰って来ました。)

「とくダネ!」での特集を見た一般視聴者は、
1ヶ月前の対局の盤面を再現する記憶力に驚愕したようです。

そんな棋譜暗記能力を計るアプリ(棋譜並べ支援アプリ)は最近でもなかなかに需要があるようで
こちらの方棋譜ViewerWillcom版は私も微妙に関係していますが、作ってもらった割に使っていなくて申し訳無い...)こちらの方)、
もう少し手を入れたいところなのですが、
どうしてもブログタイトル通り下方に走ってしまいます。

今回のサイズ変更も、元々Applet paramで指定できるようにしてあったので一瞬だったのですが、
上段画像をサイズに見合うもの探す段階でうっかり検索で迷い込んだアプリ関係を見入ってしまい
腹筋(未成年回避推奨)、ブロック崩し(未成年回避推奨)、麻雀(未成年禁止)、クイックス(未成年禁止)
掲載に時間が掛かってしまいました。
(そこにはWebゲームアプリ開発者として、
 ・なんだかんだで絵の質が最重要だな
 ・時代はやっぱりFlashなんだな
 ・Javaでも能力的にそれほど劣っている訳ではない
 ・Web絵師のCG公開ツールとしても使ってもらえたら(一応仕様は前から公開してるけど)
 ・史上初のxx囲碁ゲームだぜとか調子に乗っているけど、世間一般のゲームからしたらレベルが低すぎる
 などいろいろ思うところもある訳ですが。)


画面を大きくしたことにより、PCのスペックによっては動作が遅いようです。
(うちのショボPCがやや唸る。描画プログラムのロジックが悪い部分もある。)
また、上段画像も無駄に大きくなってしまうので、
多くのPCの解像度ではプレイ中時間やSecret Bonusの文字が見えないと思います。
(このあたりはプログラム修正したいなぁ。)

今回の棋譜は、昨年のクリスマスイブに突如として現れ、
瞬く間に囲碁ブログ界の中心に君臨したヨダログでお馴染みの
依田紀基 九段 と 林海峰 名誉天元 との一局です。
sai 対 塔矢行洋 と言ったほうが分かりが良いかも知れません。

最速は誰か?
ルールなどはこちら。
棋譜並べ終了タイムをコメントに残してもらうと嬉しいです。
ちなみに私(2年位前のKGS 12K、今は知らん)6分39秒610でした。
是非里菜ちゃんもご参加ください。(すいません調子に乗りました。)

本来はスコアシステムなど整えて(着手タイミングやシークレット、コンボを考慮したもの)、
システム的にランキング登録もずっとやりたいんですがね。


【Special Thanks to...】
こちらのページこちらのページのSpecial Thanksの方々と、
 画像:
  http://www.yunphoto.net/
   (上段画像。)
posted by curren at 00:27| Comment(5) | TrackBack(0) | 日記 - 囲碁アプリ開発 | このブログの読者になる | 更新情報をチェックする

2010年02月06日

隠し要素追加 & キャラクター生成ツール Lum - 開発日誌(2010/02/06)

コンセプトと言う割には既存の囲碁ゲームの問題の一つ、
「ゲーム的な隠し特典(やりこみ要素)が無い」ということを何ら改善していませんでした。
と言うことで、
持碁で隠し画像表示を実装しました。

2016/2/22 追記
http://go-up.online/
上記サイトのドレスアップ囲碁モードが、このコンセプトアプリの後継になります。



secret_piece.png特典オープンの為には、
達成が困難な条件を設定するのが定石で、
通常のゲームでは「強い相手に勝利」などが条件でしょうが、
このアプリではそんな強い相手になれるCPUルーチンなど作れないので、
逆に弱すぎるCPU相手に「持碁」という条件とすることで、
難しさとしています。

ちなみに私は3回に1回くらい持碁にできます。
デバッグ時にイライラします。

←こんな感じの隠し画像ですので、興味のある方はトライくださいな。





今回の隠し要素画像、及び前回からのアプリで使用している女の子の画像は、
light社(※エロゲー製作会社)キャラクター(立ち絵)生成フリーソフトである
Lum(freeLum)を使用しました。

これはあたしが中途半端なエロゲ有識者だからではなく、
ただ純粋に、フリーゲームの素材として使用できる、
質の高い立ち絵素材を広くWeb上で探した結果が、
このLumというツールから生成される画像だった訳です。

ツールの機能としては、
目や口、髪型、服装、アクセサリー、そして表情などのパターンを指定すると、
その指定に即したキャラクター画像を生成してくれます。
生成された画像はαチャネル(透過設定)付きのPNGで、背景画像との重ね合わせも容易です。
(今回は背景との合成などの最終処理にMicrosoft Excelを使用しました。
 拡大縮小、回転、グルーピングなど、
 これくらいの用途であればペイントソフトより操作が簡単で楽。
 あとはピクセル値指定で操作ができれば言うこと無しだが。)


いくつかあるキャラクター生成ツール(一番極端な例はこれ)の中でも
その設定項目の合目的性(他のツールはゲーム素材作成用途としては項目の過不足がある)と、
デフォルトで用意されている素材の質が高く、趣向も私の思い描いているものに近かったため、
ほぼ迷うことなくこちらを採用しました。

ただまぁ一つやや気になるところがあって、
デフォルトの目のパーツの瞼の線が太くてやや古めかしい感じがしてしまうという点。
これも、気になるって言えば気になる、というレベルで実用上問題は無かったのですが、
でも気になったので、デフォルトの目パーツを無理矢理修正してみました。
(画像編集ツールでフリーハンドで瞼周辺を選択して、
これまたフリーハンドで1〜2ドット程度移動したのみ。)


このツール、これだけの実力があればさぞかしネットで人気だろう、
と思ったら昔やや流行った程度で今はもうあんまり...のようですね。
確かに、特にゲーム製作用途でなければ最近は3D系のツールなどで
視点なども変えて自由に色々楽しめますからねぇ。

ただ単に、もう少し拡張パーツ・素材がいろいろ充実すれさえすれば、
出来るキャラクタに幅が出て、神ツールに化けそうなんですがねぇ。
同社のDies irae(※エロゲ)がいろいろ紆余曲折の末、
発売後2年を経て高い評価を得たように、
(個人的にはImitation Loverの方がお勧め。
 自分が知っているWindowsエロゲで唯一年齢制限あってこそのストーリーを表現してそうなのと、
 まるで浜崎あ○み調の主題歌が秀逸。)

このツールも遅咲きのブレイクを果たせばよいなぁと思います。


そんなこんなで、軽微かつ大雑把な改変のみで、
かつ通常(sumashi)と驚き(odoroki)のみの修正ですが、
もし必要な方は下記をどうぞ。

Lum拡張パーツ(デフォルトの普通目の瞼薄くしたもの)
(※ダウンロード及び使用、公開については、
  もう適当にお使いください。)


改変前後での比較
sumashi_before.pngsumashi_after.png
posted by curren at 00:26| Comment(2) | TrackBack(0) | 日記 - 囲碁アプリ開発 | このブログの読者になる | 更新情報をチェックする