フロントエンド開発の環境構築

電脳麻将HTML5 + CSS3 + JavaScript で動作するフロントエンドのWebアプリです。サーバ側にコードはありません。ですので今までは Node.js を使わずに開発していました。思考アルゴリズムの検証でAI同士に自動対戦をさせる場合もブラウザ上で実行していたのですが、1000半荘の対戦に8時間以上かかるようになり、さすがにブラウザ上での実行は厳しくなってきました*1

そこで Node.js を導入することにします。せっかく導入するのですから以下の方針とします。

*1:ブラウザ上で実行する場合、ブラウザが画面の前面に出ていないと実行がスリープしてしまうので長時間の試験がやりにくい。と思っていたのですが、実はヘッドレスChromeで解決できそうです。ですが今後のことを考え、この機会にNode.js化します

続きを読む

電脳麻将 ver.0.9 公開

f:id:xlc:20170827203246p:plain:w240:right

電脳麻将 を ver.0.9 にバージョンアップしました。

  • AIが打点を意識した手作りをするようにした
  • ゲーム進行速度調整の方式を変更
  • 牌画入力ツールが \ で次の1文字をエスケープできるようにした
  • 牌譜ビューアが三家和を正しく表示できるようにした
  • 天鳳牌譜変換ツールを提供

このところ、麻雀AIが打点を意識した手作りができるように改良を続けていましたが、その成果を取り入れました。

続きを読む

麻雀の打牌選択アルゴリズム(9)

麻雀の打牌選択アルゴリズム(4) - koba::blog から 麻雀の副露判断アルゴリズム(5) - koba::blog まで打牌選択と副露判断に打点を考慮するよう改良してきたが、今回で最終回。一色手を狙わせてみる。

前回のアルゴリズムで1000半荘対局させると一色手(混一色清一色)の出現率が 1.5% なのであるが、天鳳鳳凰卓の一色手出現率は 4.8% であり、かなり差がある。一色手を狙う場合は序盤に孤立字牌を残す打ち方をするべきなので、麻雀の打牌選択アルゴリズム(3) - koba::blog で導入した孤立牌の評価値に手を加えてみる。

続きを読む

麻雀の副露判断アルゴリズム(5)

麻雀の打牌選択アルゴリズム(8) - koba::blog までのアルゴリズムで打牌の選択に打点を考慮した評価値*1を使用するよう修正したが、今回はその評価値を副露判断にも使用するよう改良する。

副露判断に評価値を使用することで以下の効果が期待できる。

  • シャンテン戻しや向聴数の変わらない鳴きが可能になる
  • 打点が極端に下がる鳴きをしなくなる

*1:期待値のような物であるが確率を使用していないので「評価値」としている

続きを読む

麻雀の打牌選択アルゴリズム(8)

ドラ __m1____
m6m6m6m7m8p3p4s3s0s7s7z7z7 m9

から何を切るか?*1

候補となるのは、打 s3 (待ち p2 p5 s6 s7 z7 16枚)、打 s7 (待ち p2 p5 s4 s6 16枚)。麻雀の副露判断アルゴリズム(4) - koba::blog までのアルゴリズムでは z7 がポンできることを重視し s3 だが、麻雀の打牌選択アルゴリズム(7) - koba::blogアルゴリズムは2向聴以降は鳴きを考慮しないため s7 を選択してしまう。

今回は2向聴以降も鳴きを考慮できるよう改良する。

続きを読む

麻雀の打牌選択アルゴリズム(6)

麻雀 傑作「何切る」300選 からの出題。*1

ドラ __s3____
m1m2m3p1p2p3p4p7p8p9s3s3s8 s8

から何を切るか?

p1p4 でテンパイだが、三色、一通の可能性を残し、打 s3 でテンパイとらずが正解のようだ。今回はこのシャンテン戻しについて検討する。

*1:すでに続編の 麻雀 定石「何切る」301選 が出ているが、中国では手に入らぬ😢

続きを読む

L2TP/IPsec VPNサーバの構築

VPNサーバの構築 - koba::blog で構築した PPTP VPN サーバを長いこと使っていたのだが、最近のOSでは PPTP VPN がサポートされなくなってきている*1ので、L2TP/IPsec VPN サーバを構築することにした。

PPTP VPNCentOS 5 上に構築していたのだが、すでに yum のサポートも停止しているのでまず CentOS 7 にアップグレードした。

CentOS 7 の場合、

に完全なスクリプトがあるが、人の書いたスクリプトを信用してroot権限で実行するのもよろしくないので、1つ1つ理解しながら手作業で実行する。

*1:iOS 10 とか macOS Sierraとか

続きを読む

麻雀の打牌選択アルゴリズム(4)

麻雀の打牌選択アルゴリズム(3) - koba::blog麻雀の副露判断アルゴリズム(4) - koba::blog までである程度の手作りはできるようになったが、和了打点を意識した手作りができていない。例えば

ドラ __s9____
m1m2m3m7m8p1p2p3s1s3s4s8s8 m6

でテンパイした場合、

  • s1 : s2 s5 待ち(両面8枚)の平和 (30符1翻)
  • s4 : s2 待ち(嵌張4枚)の三色、ドラ1 (40符3翻)

となり、打 s4 が有利だが、現在のアルゴリズムは待ちの多さで評価するため s1 を打ってしまう。

続きを読む