« 2009年6月 | トップページ | 2009年8月 »

2009/07/31

JavaScriptで作れってことか

天鳳関連のツールは、ローカルアプリでJavaとかC#使って直接mjlogファイルのxmlを解析するんじゃなくて、

JavaScriptで書いて、そのURLを、有償版についてくる牌譜解析スクリプトアプリのアドレスに入力して動かす方向で作ってほしいってことなんだろうな。

http://tenhou.net/1/script/log_agari.html
のソースをみると、起動したときに
以下のlognama.ayalyze()で解析スクリプトのメインロジックが動き出し、
function start(){
logana.analyze(window);
}

その解析スクリプトのモジュールが
以下のlognama.ayalyze()で解析スクリプトのアナライザが動き出し、
そのアナライザが牌譜を順に解析して、立直や打牌や鳴きや配牌などのアクション発生ごとに
下記のJavaScriptのファンクションを呼び出すので、その中で集計したいデータを処理出来そう。

///////////////////////////////////////////////////////////////////
// EVENT HANDLER
//-----------------------------------------------------------------
//function OnAnalyzeBegin()
//function OnEnumLog(loginfo)
//function OnLogBegin(loginfo,player[4])
//function OnSceneBegin(kyoku,honba,nagare,dice0,dice1,dora[1])
//function OnTsumo(who,hai136,tehai)
//function OnDahai(who,hai136,tehai)
//function OnNaki(who,m,type,kui,hai0,hai1,hai2,hai3)
//function OnDora(hai136)
//function OnReach(who)
//function OnAgari(who,fu,tokuten,mangan,yaku[],yakuman[],doraUra[],sc[8],paoWho)
//function OnRyuukyoku(type,sc[8],show[4])
//function OnSceneEnd()
//function OnLogEnd(sc[8]);
//function OnAnalyzeEnd(pf)
//※ sc=[ten0,diff0,ten1,diff1,ten2,diff2,ten3,diff3]

| | コメント (0) | トラックバック (0)

2009/07/30

天鳳の牌譜コンバータ公開

最近の天鳳の牌譜形式変更で、有償版のWindowsの天鳳アプリで保存できる牌譜を解析できる天鳳牌譜解析ツールが使えなくて、色々不便だったので、天鳳の牌譜コンバータをC#でつくりました。

こんな感じ画面のツール。
Tool

オリジナルの牌譜フォーマットとは、空白の入り方など微妙に違うけど、天鳳牌譜解析ツールで、解析できます。

以下からダウンロードできます。

http://homepage2.nifty.com/kmo2/tenho_convert.zip

実行には.NET Frameworkが必要です。
.NET FrameworkがインストールされてないPCを使ってる人は、Microsoftのサイトからダウンロードしてください。

突貫で作ったのでエラー処理とか端折ってます。
天鳳のアプリ、解析ツール等、牌譜ファイルにアクセスするツールと同時に動かさないほうが無難です。

既存のファイルを壊すことは無いと思いますが、一切保障なしなんで覚悟して使ってください。


デフォルトでは、変換後の牌譜はマイドキュメントの下のFixed_Tenhou_Logフォルダに作成されます。

天鳳の牌譜解析プログラムでログがあるフォルダとして変換後のログの出力先フォルダを指定すれば、解析してくれます。


ソースコードは以下からダウンロードできます。Visutal Studio 2005 Proでビルドしてますが、ほかのエディションでもたぶんコンパイルできると思います。
http://homepage2.nifty.com/kmo2/XMLRead.zip

追記:
ツールを紹介するためのリンクはトップページではなくて、下記の記事固定URLにお願いします。
#トップページだと記事を追加していくと、埋もれて探しににくいので
http://kmo2.cocolog-nifty.com/prog/2009/07/post-ee06.html

| | コメント (2) | トラックバック (0)

2009/07/26

天鳳六段昇段後

微妙に段位ポイントは増えてるけど、この調子だと、鳳凰卓に到達できるまで、まだ1000試合以上かかりそうだ。
もうすこし、打ち方変えないといけないんだろうな。

ところで最近、天鳳の牌譜解析ソフトがうまく解析できなくなってる。牌譜の形式が変わったのが原因らしい。
変換用のWEBアプリも作ってくださった人がいるんだけど、手間がかかって正直面倒。

牌譜を変えた原因は乱数シードとまた、普通にどうでも良い部分ってのも困ったもの。

システムだと騒ぐ人たちだって本気でいってるわけでないでしょうから、天鳳サイドも、スルーしておけばいいだろうに。変に対応して帰って多くの人に不便をかけるんでは意味ないと思う。

それと牌譜の形式を変えておいて牌譜内のバージョン番号を変えないってのもどうかと思う。


| | コメント (0) | トラックバック (0)

天鳳のログ獲得スクリプト作成

公開されている天鳳の鳳凰卓の牌譜をローカルにダウンロードするスクリプトを作成。
公開されてから、現在まででまだ4000試合に満たないのか……結構少ないんだな。

| | コメント (2) | トラックバック (0)

直したいところばっかり

当初は、結構考えてプログラム構成決めたつもりだったんだけど、今になってみると色々と不便で、直したい箇所が増えてきた。ほんと、こういった機能構成デザインのセンスないな私。

| | コメント (0) | トラックバック (0)

2009/07/25

最近買ったものとか

Windowsゲームプログラミング 第2版 Game Developer
Windowsゲームプログラミング 第2版 Game Developer赤坂 玲音

ソフトバンククリエイティブ 2008-02-26
売り上げランキング : 55505

おすすめ平均 star
starC言語経験者向き
starWindowsプログラミング

Amazonで詳しく見る
by G-Tools

数多くあるWIN32APIの機能の中から、Windows作成、描画、ビットマップ表示、マウス入力、音楽再生などゲームに利用するものに絞って解説してる本。
とりあえず、C言語は覚えたけど、どうやって絵を動かしたりするのかわからないって人には良い本だと思う。
サンプルプログラムも、背景とキャラクターの描画とか、アニメーション処理とかゲーム向きでいい感じ。

この本で解説していないLISTBOXとコモンコントロールの類は、作者のウェブサイトに解説があるのでそちらで学習するのが良いんじゃないかと思う。

まったり麻雀のVer0.8は、WIN32APIをほとんど使わず、CodeGearのVCL(Visual Compoment Library)を用いて画面回りの機能をプログラムしてた。VCLは直感的に理解できて良いライブラリだと思うんだけど、CodeGearの行く末が不透明でいつまで開発環境をサポートしてもらえるか不安があるので、Ver0.9はVisutal C++で開発するように変えるつもりでいる。そのために、こういった本を一冊手元に置いておきたかった。

やさしいC++ 第3版 [やさしいシリーズ]
やさしいC++ 第3版 [やさしいシリーズ]高橋 麻奈

おすすめ平均
stars今までのC++の本で一番良い本!
stars初心者向け絶対お勧めの一冊
starsはじめてプログラミングを勉強するのなら最適

Amazonで詳しく見る
by G-Tools
いまさらC++の入門書など必要ではないんだけど、手元に一冊もC++の入門書が無かったから購入した。 いい意味でとても無難な本。ロングセラーになるのもよく理解できる。 C++は非常に多機能な言語なので入門書だと結構機能を省いて解説してる本も多いんだけど、この本は文法については一通り網羅して解説している。ただ、STLとかCの標準ライブラリの説明はあまり無いので、それらについて知りたければ別に本を買う必要がありそう。


四角い宇宙で待ってるよ
四角い宇宙で待ってるよ畑亜貴 木下智哉 Tsukasa(Sound Online)


Amazonで詳しく見る
by G-Tools

テレビアニメ「咲 -saki-」の新エンディング曲。前の曲にもまして麻雀用語がバリバリ入った曲になってる。個人的には、前のエンディング曲の歌詞が前向きで好きだったんだけど、この曲も聴きなれれば悪くないかも。
カップリング曲が前のエンディング曲である「熱烈歓迎わんだーらんど」のアレンジ版なのも良い。


| | コメント (0) | トラックバック (0)

点数状況判断を修正したいけど

点数状況判断を修正したいけど、その前に、鳴き判断の再調整が必要。
鳴き判断の再調整をするためには、卓上の情報を扱うクラスの再構成が必要になりそう。
卓上の情報を扱うクラスの再構成をするとプログラムあちこちを直す必要がありそう。

もうちょっと最初から考えて作ればよかった。どうするかなあ……
最初から作り直してるVer0.9に完全移行するべきか……

| | コメント (0) | トラックバック (0)

ノートPC環境移行

DELL Inspiron Mini 12のUbuntuモデルを購入。

購入サイト
DELLのサイトだとデフォルト色以外は余計に金がかかる(2500円くらいだったかな)のに、なぜか、Amazonだとデフォルト色と同じ値段。なのでAmazonで買った。

OS
サーバ用途として使うので、OSはUbuntuモデルにした。
UbuntuはDesktop用途のLinuxとしてはだいぶ使いやすい部類のようだけど、やっぱ所詮はLinuxだなという印象を受けた。デスクトップ用途として使うならちょっと高いけどXPモデルを選択したほうが良いと思う。

サーバOSとして、Ubuntu(デスクトップ版)はちょっと微妙(サーバパッケージのサポートがないものが多い)だけど、今のところ具体的に、にサポートがなくて困ったパッケージがあるわけでもないので、そのままインストールされていたUbuntuをDebianのようなものとして利用している。

静音性
とにかく静かでよい。サーバはずっと電源入れっぱなしなんで、部屋だとちょっとした音でも気になるのだけれど、まったく無音といってよいほど静かなのがありがたい。ハードディスクのアクセス時もほとんど音がしない。

アクセスランプ
電源ランプはあるけれど、ハードディスクのアクセスランプがない。
とにかく、音が静かなので、ハードディスクのアクセスランプがないと処理の重い作業をやってるときに本当に動作してるのか固まってるのかわからないのが困る。

放熱性
ファンレスなんで24時間稼動させたとき、熱暴走などの放熱性の問題ないか気になったけど、これも今のところ問題無さそう。放熱性というより発熱が少ない。裏面を手で触ってみるとそこそこ温度が上がっているけれど、熱いというほどではなくぬるいって感じ。

デスクトップPCにやらせてるような麻雀1万試合シミュレートのような常に4コア8スレッドの稼働率100%ってな感じの使い方をしたらどうかわからないけれど、個人用のWEBやファイルサーバとして使う分には問題なさそう。

速度
私の用途だと、ほとんど問題なし。ただ、Firefox使った印象だと、デスクトップとして利用しようとすると、もっさり感があるかもしれない。(これはUbuntuだからかもしれない。)

ヒューマンインターフェイス
キーボードはこのクラスの大きさとしては打ちやすい部類。
タッチパットはアームレストの段差が少なくて、誤動作が多い。ここら辺はLet's Noteのほうが私の好みだった。
液晶は最近良く採用されているテカテカ液晶。個人的には、映りこみがあるので好きになれない。
だた、サーバ用途なので、これらの要素は私にとってはマイナスにはならない。


とにかく、安くて、静かなので気に入っている。

DELL Inspiron Mini 12 Ubuntuパッケージ(チェリー・レッド) 12.1インチ/Ubuntu/1GB/40GB/ウェブカメラ/Bluetooth
DELL Inspiron Mini 12 Ubuntuパッケージ(チェリー・レッド) 12.1インチ/Ubuntu/1GB/40GB/ウェブカメラ/Bluetooth
Dell Computers
売り上げランキング : 54543


Amazonで詳しく見る
by G-Tools

| | コメント (0) | トラックバック (0)

2009/07/14

Ver.0.8.21公開します

Ver0.8.21を公開します。

修正内容は、以下の3点です。

- ごくまれに不正な打牌をする(裏返しのパイが捨てパイに表示される)バグの修正。
- 積極的に鳴くように修正
- やや回し打ち気味に打つように修正(攻防の評価点を統合的に評価するように評価関数を修正)

| | コメント (7) | トラックバック (0)

2009/07/13

一万試合結果とバグ発見

回し打ち関連修正(オリ評価値とツッパ評価値の統合)して、デュプリケートで1万試合やってみた。
R20程度新しいほうが強い。放銃率も和了率も新しいほうが良い値が出てる。
やる前はどちらかの数字が悪くなるか、下手すると両方悪くなって弱くなるかもしれないと予想していただけに意外な結果。0.8.17以前のアルゴリズムとも比較してみる予定。

それと、バグ発見。数万試合に1度程度しか起こらないようだけど、裏返しの牌が河に捨てられるというあまりにもひどいバグ。まだ、こんなバグ残してるなんて……
今日中に直すのは無理っぽいけど、早いうちに対処したい。

| | コメント (2) | トラックバック (0)

2009/07/11

回し打ちを実装してみる

ほんのちょっと評価関数をいじってみて、回し打ち気味に打つように実装を変えてみた。
現在デュプリケート1800試合だけど、びっくりするほど差が出ている。R35程度も回し打ちしたほうが強い。
たった一行プログラム変えただけでこのR差。最近の打ち方修正では一番大きな差になってる。
まだ一万試合くらいは、CPU回してみる予定だけどちょっと驚き。

追記:
3000試合でR30弱の差。これでも最近のアルゴリズム修正では結構大きな変化。

| | コメント (2) | トラックバック (0)

2009/07/08

勝負のアヤ

いままで手がばらばらのときは、役牌をポンしなかったが、その制限をはずし、ばらばらからもポンするように変えてテストしてみた。
16000試合程度比較したが若干だがばらばらからでもポンした方が強くなっている。
順位に差がでた試合数は1204試合。そのうちポンしたほうが順位が良かった試合が650試合


どんなときに新アルゴリズムが負けているのか調べるために、
牌譜再生させてみて観察しているけれど、すごく微妙な差で勝負のアヤが生まれてる。
たとえばこんな感じ(「新:」は新アルゴリズムのゲーム展開、「旧:」は旧アルゴリズムのゲーム展開)


新:自分が白を鳴いた(旧:鳴かなかった)
下家から立直がかかった
新:苦し紛れのオリでしのぐ(旧:白の対子落としで降りる)
新:自分が捨てたパイがヒントになって上家が突っ張れると判断し追っかけ立直(旧:上家も苦しくなってオリ)
新:流局。供託立直棒が2本(旧:流局。供託立直は1本)

この供託立直棒の差が結果的に順位差になったりしている。
まったく同じ配牌、まったく同じ自摸で、4人中3人が同じアルゴリズムで打牌していても残り一人の打牌で展開が変わってくる。
麻雀ってやつは本当にわからないゲームだなと言う印象。


もう少しつぶさに牌譜を見てみるつもりだけど、結構面倒くさい。
もっと機械的に調べる良い方法があればいいんだけどな。

できすぎ君データはこんな感じ。
新アルゴリズム
1
2

旧アルゴリズム
Photo

Photo_2

| | コメント (0) | トラックバック (0)

2009/07/07

鳴き条件変更中

先日のアイディアはもう少し練りこみが必要そう。もうちょっと考えてみる。

鳴きがらみの条件を変更。手牌が整っていない状態で役牌を鳴く条件を緩和しより鳴くように修正した。
若干良くなってるみたいだけど、逆効果になるケースも結構ある。今のところ順位で0.01程度良くなってるみたい。
もう少しデータを取ってみる。

| | コメント (0) | トラックバック (0)

2009/07/05

おぼろげに新しいアイディアが浮かんだ

ちょっと試してみたい評価関数のアイディアが浮かんでいる。
2005年頃に一度ためしてあまりうまくいかなかった多牌型の評価関数の欠点を緩和できるかもしれない。

まずは一人麻雀で試してみるかな。

しかし、やりたいことが多くてなかなか大変だな。ネト麻やる回数減らして時間ひねり出すしかないか。

| | コメント (5) | トラックバック (0)

天鳳六段に昇段

天鳳でようやく六段に到達。

Photo

長かった。天鳳を始める前は、東風荘時代の成績から考えて、6段程度までは割とあっさり到達できるんじゃないかと思ってたけど考えが甘かった。特上で長らく負け越していて5段から4段に降格しそうだったので、2ヶ月くらい前から、かなり大幅に打ち方を変えた。

主な変更点は、
19孤立牌より役牌を残す
後づけ鳴きを増やす
対立直の押し引き判断を大きく守備側に変更
鳴きの警戒強化
点数状況判断の意識の強化

成績はこんな感じ。
62009
まだまだぜんぜん放銃率が高い。もっと打ち方を修正していかないと鳳凰卓には到底届きそうにないな。

| | コメント (0) | トラックバック (0)

« 2009年6月 | トップページ | 2009年8月 »