OpenVPNの接続設定

L2TP/IPsec VPNサーバの構築 - koba::blog で構築したVPNサーバは問題なく動作しているのですが、来年2月までに中国ではVPNが規制されるという情報もあり、対策をとっておきたいところです。VPNの規制には特定のポートを遮断するという方法がとられるのではないかと思っています。実際、半日〜1日程度の期間でsshやWebアクセスはできるのにVPNのみが使用できないということはありました。

OpenVPNであれば使用するポートを変更できるので、規制されにくいのではと思います*1が、L2TPなどと異なりクライアント側にもソフトウェアをインストールする必要があります。中国政府もそれは承知していて、中国からはOpenVPNのクライアントは手に入りにくくなっています*2

今回はTunnelblickを使用してMac(OS X 10.9.5)からOpenVPNサーバに接続してみます。

*1:ただしIPレベルで規制されたらアウトです。これをやられたこともあります

*2:中国のiTunes Storeからは中国政府の要請により排除された模様です。Androidに関しては、そもそも中国のスマホにはGoogleアカウントがなく、ソフトウェアはすべて政府の監視下で流通しています

続きを読む

向聴数を求めるプログラム(修正版)

麻雀の副露判断アルゴリズム(2) - koba::blog で「特定の役への向聴数」を計算する方法を導入したが、バグがあるようである。例えば下記の2つの牌姿の(索子の)混一色への向聴数

  1. m2p9z7s2s3s5s5 z1z1-z1 s8s9s7- 2向聴
  2. m2m8p9s2s3s5s5 z1z1-z1 s8s9s7- 3向聴

であるが、ともに2面子2搭子のため、同一の向聴数と判定してしまう。

続きを読む

CentOSへ最新のNode.jsをインストールする

CentOSにソフトウェアをインストールするのには yum を使うのが一般的です。Node.js も EPEL からインストールできる*1のですが、

$ yum info nodejs

で確認すると安定バージョン(現段階では v6.11.x)がインストールされるようです。開発環境では v8.4.x を使用しているので、以下を参照し、最新版をインストールします。

*1:さくらVPSCentOS 7 はデフォルトで EPEL を参照するのでリポジトリの指定は不要

続きを読む

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

電脳麻将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向聴以降も鳴きを考慮できるよう改良する。

続きを読む