JP2019083997A - 情報処理システム、情報処理装置、情報処理方法、プログラム、および情報記憶媒体 - Google Patents

情報処理システム、情報処理装置、情報処理方法、プログラム、および情報記憶媒体 Download PDF

Info

Publication number
JP2019083997A
JP2019083997A JP2017213819A JP2017213819A JP2019083997A JP 2019083997 A JP2019083997 A JP 2019083997A JP 2017213819 A JP2017213819 A JP 2017213819A JP 2017213819 A JP2017213819 A JP 2017213819A JP 2019083997 A JP2019083997 A JP 2019083997A
Authority
JP
Japan
Prior art keywords
game
player
play
strategy
mahjong
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2017213819A
Other languages
English (en)
Inventor
萌 栗田
Moe Kurita
萌 栗田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Heroz Inc
Original Assignee
Heroz Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Heroz Inc filed Critical Heroz Inc
Priority to JP2017213819A priority Critical patent/JP2019083997A/ja
Publication of JP2019083997A publication Critical patent/JP2019083997A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

【課題】複数の局面を有するゲームにおいて、短期的な1局面毎の勝利だけではなく、複数局面を通した長期的で総合的な勝利を得ることができるプレイヤとして強い仮想プレイヤを構築する。【解決手段】少なくとも一時点において1以上の仮想プレイヤを含む3人以上のプレイヤが、いずれかの勝利が決定されるまでの進行において複数の局面を有するゲームを実行する情報処理システム等であって、その仮想プレイヤが、複数の局面の中で進行中の局面がいかなる局面であるかを判定し、判定した局面に対応し、ゲームのルールに従ったプレイ方策に基づいて、他のプレイヤに対応してプレイを実行することを含む情報処理システム等を提供する。【選択図】図5

Description

本発明は、情報処理システム、情報処理装置、情報処理方法、プログラム、および情報記憶媒体に関する。
ゲームは勝敗が明確に定まるため、古くから人工知能(Artificial Intelligence、以下AIと言う)の研究の対象とされてきた。中でも多くの完全情報ゲームにおいて、AIは人間のトッププレイヤと互角以上に戦う強さを持つ。偶然の要素がゲームの進行に本質的な影響を与えない二人ゼロ和確定ゲームについては、チェスにおいて1990年代にディープ・ブルーが世界チャンピオンを破り、よりゲーム木の大きい将棋についても2015年に情報処理学会はトッププロ棋士にAIが勝ち越す可能性が高いとして、コンピュータ将棋プロジェクトの終了を宣言した。これらの背景にはα−β法によるゲーム木の探索や、駒の位置関係から評価関数を算出するための機械学習手法などの発展があった。また、これよりさらにゲーム木が大きくゲームの性質も大きく異なる囲碁においても、モンテカルロ木探索や深層学習を用いて2016年にAlpha Goが人間のトッププロに勝ち越すに至った。
不確定ゲームも二人ゼロ和であれば、偶然の要素を含むゲームにおいてもバックギャモンでは2000年代に人間のトッププレイヤと互角以上に戦う強さになったと考えられていて、強化学習の成功例として知られている。
一方で不完全情報ゲームは、完全情報ゲームほど研究が進んでいない。例えば、状態数が比較的少ない2人テキサス・ホールデムは2014年にCFR+によって近似解が得られたが、情報集合数がより多い3人以上のテキサス・ホールデムには適用が困難であると考えられている。このようなゲームにおいては、プレイヤの行動や情報を抽象化することでゲームの大きさを削減する手法が提案されている。この手法は、はじめにゲームの抽象化を行い、抽象化されたゲーム木における最適行動を求め、それを何らかの手法で抽象化する前の行動へ写像する手法であり、ポーカー等で一定の成功を収めている。
麻雀も、通常4人で行う多人数不完全情報ゲームであり、1回のゲームが終わった際に各プレイヤは点数と順位に応じた利得を得る。通常1回のゲームは複数の局からなり、1局はプレイヤの誰かがアガリをするか、牌山が無くなるなどの理由で流局するかで終了する。1局の終わり方に応じて、プレイヤ間の点数状況が変化し、最終局終了時点で点数が多い順に1回のゲームの順位が決定する。1つの局でアガリを行うことができるのは基本的に1人のプレイヤに限られることから、他プレイヤ(他家)よりも早くアガリの手牌を作る技術は麻雀の実力を決める重要な要素である。また、点数の高いアガリ形ほど一般的には作りにくく、プレイヤは現在の点数の状況や、他家の手牌の進行を考慮に入れたうえで、どのようなアガリを目指すか考える必要がある。確定完全情報ゲームの場合と異なり、プレイヤは他プレイヤがアガリをすることができるかどうか知ることができないため、打牌やフーロの選択を行う際に、その選択を行った後のアガリ確率や利得期待値を高い精度で推定することは麻雀のAIを作る上で重要な課題である。
他家の行動をほとんど無視して自分のアガリだけを考える1人麻雀では、終端節点の利得を設定することで、その期待値を最大化する定式化が比較的容易になる。また、終端節点の利得を局終了時の順位点期待値とすることで、点数状況に応じたアガリを目指すことが可能になる。その一方で、1人麻雀はゲーム木のサイズが非常に大きいという難点を持つ。
発明者は、先行研究において、この問題を解決するため、ゲーム木を有向非巡回グラフ(DAG:Directed Acyclic Graph)を用いて近似的に表現するモデルを提案した(非特許文献1)。このモデルでは、ゲーム木の1つ以上の節点を、手牌qと打牌回数tとゲーム進行のフェーズにもとづいて1つのDAGの節点にまとめる。ゲーム木の簡略化は麻雀のルールに基づいて行い、終端節点の利得の設定も点数のみを特徴量とした機械学習を用いて行うことができるため、麻雀の高い専門知識を直接コーディングすることなしに強い人工知能(AI)を開発することが可能になる。
現状トッププレイヤ以上の強さを持つAIが開発されたとは言い難い状況で、強化学習のようにAIに大量の自己対局を行わせてその結果を学習する方法も確立されていない。実際、麻雀には強いコンピュータのプレイヤの構築を困難にする複数の性質があると考えられる。1つめは非常に大きなゲーム木を持つという性質である。麻雀ではプレイヤが行動を選択する前に、常にツモや他家(自分以外のプレイヤ)の打牌などに偶然の要素が影響を与え、牌種も30種類以上存在するためゲーム木のサイズが膨大になってしまう。
2つめは、複数の局からなる半荘で勝つという長期的な目的を達するためには、各局で短期的な目的を適切に設定しなければならないという性質である。麻雀では一局の中でアガリを行うことを目指すべきか、放銃しないことを目指すべきかの選択を適切に行うことが要求され、これらの各局の状況を統一的なゲーム木として抽象化することは困難である。
3つめは局を終了させるアガリに関するルールが複雑であるという性質である。麻雀には数十種類の役が存在し、それぞれで異なるアガリ点数が定められている。そのため、探索を行わない静的評価関数を麻雀で実現することを試みる場合、各役に対応した特徴量を設計する必要があり、これはAI開発者に麻雀の技術を要求するだけでなく、前述の困難も合わさって特徴量の次元が大きくなる。
4つめはプレイヤの実力評価が難しいという性質である。麻雀では正しい選択をしたかによらず運が良いプレイヤが勝ってしまうことが珍しくない。結果的に2つの異なるAIの強さを比較する段階で、多くの数の対局を行う必要性が生じる。実際、あるプレイヤがN回の対局を行った場合の平均順位の標準誤差はおよそ√(1.25/N)程度であり、N=1000として0.035である。天鳳の鳳凰卓では、最上位プレイヤの平均順位が2.40程度であり、このようなレベルに達した2プレイヤ間で実力を比較するためには多くの試行が必要である。このような困難は、対局結果にもとづいてパラメータ一式の更新や調整を行う強化学習において特に顕著にあらわれるであろう。前述のとおり、麻雀の評価関数の次元は大きくなりやすく、各パラメータを適切に収束させるために必要なデータの量は、パラメータの数だけでなく、麻雀そのものが持つ運の要素の寄与で大きくなる。これらの困難があるためか、評価関数のパラメータを対局の結果から学習する手法は、強いAIを作る目的では現在成功していない。
栗田萌、保木邦仁 「1人麻雀の有向非巡回グラフを用いた近似表現」 情報処理学会研究報告 GI、Vol.2017−GI−37、No.14、pp.1−8、2017
そこで、本発明では、複数の局面を有するゲームにおいて、短期的な1局面毎の勝利だけではなく、複数局面を通した長期的で総合的な勝利を得ることができるプレイヤとして強い仮想プレイヤを構築することを目的とする。
上記課題を解決するために、少なくとも一時点において1以上の仮想プレイヤを含む3人以上のプレイヤがゲームを実行する情報処理システムにおいて、そのゲームは、プレイヤのいずれかの勝利が決定されるまでの進行において複数の局面を有し、そのゲームのルールを記憶するゲームルール記憶部と、ゲームルール記憶部が記憶するルールに基づいた、それぞれの局面において異なるプレイ方策を記憶するプレイ方策記憶部と、複数の局面の中で進行中の局面がいかなる局面であるかを判定する局面判定部と、局面判定部が判定した局面に対応するプレイ方策記憶部に記憶されたプレイ方策に基づいて、仮想プレイヤが他のプレイヤに対応してプレイを実行するプレイ方策実行部と、を備える情報処理システムが提供される。
これによれば、複数の局面を有するゲームにおいて、短期的な1局面毎の勝利だけではなく、複数局面を通した長期的で総合的な勝利を得ることができるプレイヤとして強い仮想プレイヤを含む情報処理システムを提供することができる。
さらに、ゲームは、麻雀であり、プレイ方策記憶部に記憶されるプレイ方策は、少なくとも、降り方策、アガリ方策、形式テンパイ方策、包括方策、および価値推定方策を含み、価値推定方策は、プレイ方策記憶部に記憶される他のプレイ方策において算出した結果の全部または一部を特徴量とし、機械学習を用いてアガリ確率、形式テンパイ確率、放銃確率を推定して価値推定を行うことを特徴としてもよい。
これによれば、麻雀ゲームにおいて、短期的な1局面毎の勝利だけではなく、複数局面を通した長期的で総合的な勝利を得ることができるプレイヤとして強い仮想プレイヤを構築することができる。
上記課題を解決するために、少なくとも一時点において1以上の仮想プレイヤを含む3人以上のプレイヤがゲームを実行する情報処理装置において、そのゲームは、プレイヤのいずれかの勝利が決定されるまでの進行において複数の局面を有し、そのゲームのルールを記憶するゲームルール記憶部と、ゲームルール記憶部が記憶するルールに基づいた、それぞれの局面において異なるプレイ方策を記憶するプレイ方策記憶部と、複数の局面の中で進行中の局面がいかなる局面であるかを判定する局面判定部と、局面判定部が判定した局面に対応するプレイ方策記憶部に記憶されたプレイ方策に基づいて、仮想プレイヤが他のプレイヤに対応してプレイを実行するプレイ方策実行部と、を備える情報処理装置が提供される。
これによれば、複数の局面を有するゲームにおいて、短期的な1局面毎の勝利だけではなく、複数局面を通した長期的で総合的な勝利を得ることができるプレイヤとして強い仮想プレイヤを含む情報処理装置を提供することができる。
上記課題を解決するために、少なくとも一時点において1以上の仮想プレイヤを含む3人以上のプレイヤが、いずれかの勝利が決定されるまでの進行において複数の局面を有するゲームを実行する情報処理装置を、そのゲームのルールを記憶するゲームルール記憶部と、ゲームルール記憶部が記憶するルールに基づいた、それぞれの局面において異なるプレイ方策を記憶するプレイ方策記憶部と、複数の局面の中で進行中の局面がいかなる局面であるかを判定する局面判定部と、局面判定部が判定した局面に対応するプレイ方策記憶部に記憶されたプレイ方策に基づいて、仮想プレイヤが他のプレイヤに対応してプレイを実行するプレイ方策実行部として機能させるためのプログラムが提供される。また、上記課題を解決するために、上記のプログラムを記憶したコンピュータ読み取り可能な情報記憶媒体が提供される。
これによれば、複数の局面を有するゲームにおいて、短期的な1局面毎の勝利だけではなく、複数局面を通した長期的で総合的な勝利を得ることができるプレイヤとして強い仮想プレイヤを含むプログラムおよびそのプログラムを含む記憶媒体を提供することができる。
上記課題を解決するために、少なくとも一時点において1以上の仮想プレイヤを含む3人以上のプレイヤが、いずれかの勝利が決定されるまでの進行において複数の局面を有するゲームを実行する情報処理方法であって、その仮想プレイヤが、複数の局面の中で進行中の局面がいかなる局面であるかを判定することと、判定した局面に対応し、ゲームのルールに従ったプレイ方策に基づいて、他のプレイヤに対応してプレイを実行することと、を含む情報処理方法が提供される。
これによれば、複数の局面を有するゲームにおいて、短期的な1局面毎の勝利だけではなく、複数局面を通した長期的で総合的な勝利を得ることができるプレイヤとして強い仮想プレイヤを含む情報処理方法を提供することができる。
以上説明したように、本発明によれば、複数の局面を有するゲームにおいて、短期的な1局面毎の勝利だけではなく、複数局面を通した長期的で総合的な勝利を得ることができるプレイヤとして強い仮想プレイヤを構築することができる。
本発明に係る1人麻雀のゲーム進行のフェーズの例を示す。 本発明にて用いる非公開牌種のハッシュ関数の例を示す。 本発明にて用いるDAGの枝列挙アルゴリズムの例を示す。 本発明にて用いる期待利得とアガリ確率の計算アルゴリズムの例を示す。 本発明に係る複数の1人麻雀の選択のフローチャートの例を示す。 本発明に係る各種1人麻雀から価値関数を計算する仕組みの例を示す。 本発明に係る第一実施形態の情報処理システムを示す概略構成図(システム構成図)である。 本発明に係る第一実施形態の情報処理システムにおけるサーバ装置の概略構成図(ハード構成および機能構成図)である。 本発明に係る第一実施形態の情報処理システムにおけるパーソナルコンピュータの概略構成図(ハード構成および機能構成図)である。 本発明に係る第一実施形態の情報処理システムにおける携帯端末の概略構成図(ハード構成および機能構成図)である。 本発明に係る第二実施形態の情報処理システムを示す概略構成図(システム構成図)である。 本発明に係る第二実施形態の情報処理システムにおけるファイルサーバ装置の概略構成図(ハード構成および機能構成図)である。 本発明に係る第二実施形態の情報処理システムにおけるパーソナルコンピュータ(ハード構成および情報処理装置)の概略構成図(機能構成図)である。 本発明に係る第二実施形態の情報処理システムにおける携帯端末(情報処理装置)の概略構成図(ハード構成および機能構成図)である。 本発明に係る第二実施形態の情報処理装置における情報処理の概要を示すフローチャート。
本実施形態では、多人数不完全情報ゲームの代表的存在である麻雀を中心にして説明するが、本発明は、これに限定されるものではなく、他の多人数不完全情報ゲームである例えば3人以上のテキサス・ホールデムに適用可能である。
<麻雀のルールと用語の説明>
まず、麻雀のルールと用語について説明する。麻雀は初めに一定数の牌が配られ、そこからルールで定められた方法で牌を1枚ずつ交換し、役と呼ばれる特定の構成を作り和了(アガリ)し、役に応じた点数を得るゲームである。麻雀では136枚の牌を利用し、この中には34の牌種が4枚ずつ入っている。牌種には7つの字牌と27の数牌があり、数牌は3つの色に分類される。初めに各プレイヤに13枚の牌が配られ、配られなかった牌は牌山に伏せられる。アガリの点数は直前の手牌と最後に入手した牌とその入手方法に依存し、牌山から1枚牌を引いた場合をツモアガリ、他プレイヤ(他家)が捨てた牌を利用する場合をロンアガリという。
牌を交換する方法としては、牌山から1枚牌を引く(ツモ)方法と、他プレイヤ(他家)が捨てた牌を入手(フーロ)する方法がある。交換の場合は牌を入手した後不要な牌を1枚場に捨てる。特殊な役を除き、アガリ手牌は1つの対子(トイツ)と4つの面子(メンツ)とからなる。対子とは同じ牌種の2枚組のことであり、面子とは特定の条件を満たす3枚または4枚の牌の組である。同じ牌種3枚からなる面子を刻子(コーツ)といい、連続する数字の数牌3枚からなる面子を順子(シュンツ)という。これらのメンツの最後の1枚を他家の捨て牌からフーロにより入手することができて、このフーロを刻子の場合ポン、順子の場合チーという。フーロによって完成したメンツは他家から見えるように場に晒す。フーロによって完成した刻子を明刻(ミンコー)、フーロせずに完成した刻子を暗刻(アンコー)という。また、あまり一般的な語ではないがフーロによって完成した順子を明順(ミンシュン)という。
同じ牌種4枚からなる面子を槓子(カンツ)という。明刻と同じ牌種を自分の手牌から場に出して槓子にする操作を加カン、暗刻から他家の捨て牌を入手して槓子とするフーロを大明カン、フーロせずに揃えた手牌の中の同一牌種4枚を槓子として扱うことを宣言することを暗カンという。暗カンは他家の捨牌を入手する方法ではないが、本明細書ではこれもフーロと見做す。加カン、大明カンによって完成した槓子を明槓といい、暗カンにより完成した槓子を暗槓という(本明細書では、フーロとしてのカンをカタカナで、面子としての槓を漢字で表記する)。
手牌が面子4つと対子1つになった場合これをアガリ形といい、あと1枚でアガリ形になる手牌をテンパイという。通常テンパイは役がある場合をさすが、役が無い場合形式テンパイという。通常のアガリ形ではないアガリも存在し、あと1枚でそのアガリになる場合もテンパイというが、その説明は省く。テンパイになるまでに必要な牌交換回数の最小値を手牌のシャンテン数という。
また、特定の条件下においてプレイヤはリーチを行うことができ、これは1000点を支払う必要があるが役になる。この1000点はその局でアガリした人が得る。牌山が無くなるまで誰もアガリしなかった場合を流局といい、各プレイヤの最後の手牌の形に応じた点数を各プレイヤが得る。リーチしたプレイヤがいる場合、支払われた1000点は次の局でアガリしたプレイヤの点数となる。
以上を一つの局として、複数の局を行いルールが定める最後の局を終了したときの点数の多さに応じて順位が決まる。一般的なルールでは開始時の各プレイヤの点数は25000点からはじまり、局は場と局数で分類される。東風戦では東1局から東4局までを、東南戦では東1局から南4局までを行い、最終局が終了した時に30000点を超えているプレイヤがいない場合追加で局が行われる。東風戦、東南戦でそれぞれ南入、西入という。この場合誰かが30000点を超えた時点で終了となるが、誰も30000点を超えずに南4局、西4局が終局した場合も終了とする。最終局が終了した時の順位に応じて、各プレイヤに順位点が配分され、プレイヤの最終的な利得は順位点と点数に応じて決まる。順位点をゲームの最終結果と捉える対戦ルールも広く普及していることから、本明細書では順位点をゲームの利得とする。なお、ここで述べた麻雀ゲームのルールは一例であり、様々なバリエーションがあるので、これに限定されるものではない。
<先行技術の説明>
1人麻雀において、現在までに提案されたアガリを目指す手法には、ニューラルネットワークやパーセプトロンなどの機械学習を用いて上級プレイヤの行動を予測するものがある(北川竜平、三輪誠、近山隆 「麻雀の牌譜からの打ち手評価関数の学習」 第12回ゲームプログラミングワークショップ、pp.76−83、2007。水上直紀、中張遼太郎、浦晃、三輪誠、鶴岡慶雅、近山隆 「多人数性を分割した教師付き学習による四人麻雀プログラムの実現」 情報処理学会論文誌 Vol.55 No.11 pp.111、2014)。モンテカルロ法やタブーサーチを用いてゲームの試行や木探索をするものがある(小松智希、成澤和志、篠原歩 「役を構成するゲームに対する効率的な行動決定アルゴリズムの提案」 情報処理学会研究報告 GI、Vol.2012−GI−28、No.8 pp.1−8、2012。吉村健志、宝珍輝尚、野宮浩揮 「タブーサーチを用いた麻雀における最適行動の探索」 第21回ゲームプログラミングワークショップ、pp.73−80、2016)。機械学習を用いる手法では、ゲームの試行や木探索を行わないため意思決定に時間がかからないという長所があるものの、点数状況に応じたアガリを目指すことが難しいことが報告されている。一方で、モンテカルロ法やタブーサーチを用いて探索を行うような手法では1人麻雀での最適な行動を求め得るが、現在までに降りを目指す方策も考慮した実践的なAIの作成には至っていない。これは、ゲーム木のサイズが大きすぎるためにモンテカルロ法の収束が遅いことなどが原因と考えられる。
一方で、アガリを目指すだけでは中級者以上の実力を実現することは不可能と考えられるが、降りの戦略を含めた麻雀AIの研究は例が少ない。そのような研究の例として、5000以上の局面に対して降りるべき局面を開発者が手動でラベル付けし、その結果を元に機械学習を行う水上らの研究がある(水上直紀、中張遼太郎、浦晃、三輪誠、鶴岡慶雅、近山隆 「降りるべき局面の認識による1人麻雀プレイヤの4人麻雀への適用」 第18回ゲームプログラミングワークショップ、pp.1−7、2013)。また、この手法とモンテカルロ法による試行を併用することで、中級者以上の実力を持ったAIが実現されている(Naoki Mizukami and Yoshimasa Tsuruoka. Building a Computer Mahjong Player Based on Monte Carlo Simulation and Opponent Models. Proceedings of the 2015 IEEE Conferenceon Computational Intelligence and Games、pp.275−283、2015)。降りるべき局面の判別に関しては、ラベル付けを人手で行うにはコストがかかるという動機から、半教師あり学習を用いて判別する研究も報告されているが(我妻敦、田中哲朗 「半教師あり学習による麻雀の降り局面の判別」 第20回ゲームプログラミングワークショップ、pp.143−147、2015)、包括的な麻雀AIに利用されているという報告はされていない。
1人麻雀はその有効性が示されているものの、いくつかの課題が存在する。まず、点数状況に応じたアガリを目指すことができていないことが挙げられる。手牌からアガリ点数を予測するモデルを用いた強化学習を行った水上らの研究で、既存のプログラム(点数状況に応じたアガリを目指すことができないもの)に勝ち越すことができなかったと報告されている(水上直紀、鶴岡慶雅 「強化学習を用いた効率的な和了を行う麻雀プレイヤ」 第21回ゲームプログラミングワークショップ、pp.81−88、2016)。また、機械学習に用いる特徴は麻雀の専門知識に基づき設計されるものが多く、AI開発の敷居が高いことも挙げられる。
<抽象化した1人麻雀のルール>
通常の麻雀の1局を抽象化した1人麻雀は以下のルールを持つものとする。はじめにプレイヤに13枚の手牌q∈Qが与えられる。プレイヤは定められた打牌回数tmaxの中で、ツモかフーロを行いながらアガリやテンパイを目指す。ゲームの進行を以下の7つのフェーズに分ける。
start:プレイヤに13枚の手牌q∈Qが与えられ、chanceFへ移行する。
chanceF:プレイヤの打牌回数がtmax未満の場合、他家が牌を牌山から1枚場に出しplayerFへ移行する。打牌回数がtmaxの場合、手牌に応じた利得が与えられてゲームが終了する。
playerF:プレイヤは手牌と他家の捨て牌に応じてフーロやロンが可能で、ロンした場合agariRへ移行する。大明カンした場合はchanceFへ移行し、打牌回数が1増えたものとして扱う(嶺上牌のツモは行わない)。大明カン以外のフーロをした場合playerDへ移行し、フーロしない場合chanceTへ移行する。
chanceT:プレイヤは牌山から牌を1枚ツモりplayerDへ移行する。
playerD:プレイヤは可能なアガリまたは打牌の一つを選択し、アガリを宣言した場合にはagariTへ移行し、アガリをしない場合プレイヤは牌を1枚捨ててchanceFに戻る。暗カン、加カンした場合も打牌回数が1増えたものとしてchanceFに戻る。
agariT、agariR:ルールに基づいた利得が与えられてゲームが終了する。
これらのゲームの進行は図1のようにまとめられる。このゲームの部分木はDAGとして簡略化することができて、利得の期待値は、手牌q、ツモ、フーロ可能牌種h、フェーズa、打牌回数t、根節点n0の関数として近似的に表される。アガリをした場合、すなわちa∈{agariT,agariR}ならば、(1)式となる。ここで、Uagari(q,h,a,n0)は現在の点数状況、アガリを行う直前の手牌q、アガリ牌h、アガリがツモかロンかを表すフェーズaなどに依存する利得である。
Figure 2019083997
ツモまたはフーロの後のプレイヤ節点、すなわちa=playerDが成り立つとき、利得の期待値は、(2)式となる。ここで、iはこの節点の直前のツモまたはフーロを表す牌種である。また、C(q,i,playerD)は、手牌qにおいてツモまたはフーロiを行った後に行うことができる打牌またはアガリ宣言を行った後の全ての手牌qc、ツモまたはフーロic、フェーズacの組からなる集合である。
Figure 2019083997
フーロ、ロンの選択を行う節点、すなわちa=playerFであるとき、利得の期待値は、(3)式となる。ここで、C(q,h,playerF)は、手牌qにおいて他家が牌種hを打牌した後に行うことができるフーロ、ロンを行った後、またはフーロもロンも行わなかった全ての場合における手牌qc、フーロhc、フェーズacの組からなる集合である。
Figure 2019083997
また偶然節点については、ツモ前の節点と他家打牌前の節点が存在し、それぞれ、(4)式のように書ける。ここで、pT(q,h,t,n0)とpF(q,h,t,n0)はそれぞれ、牌種hをツモする確率と他家が捨ててフーロできる確率である。
Figure 2019083997
<1人麻雀のデータ構造と探索アルゴリズム>
DAGを用いて近似的に表現した1人麻雀のデータ構造と探索アルゴリズムを以下の通り説明する。
<<手牌集合の表現>>
1局は、牌のツモ及びフーロと打牌の繰り返しで、手牌が合計13枚の牌からなる節点と、14枚の牌からなる節点が存在する。合計13枚の牌からなる手牌全ての集合をQ、合計14枚の牌からなる手牌全ての集合をQ′とする。ここでの合計枚数は、フーロによって場に晒された牌も含めるものとする。例外的にカンツは4枚の牌から構成されるが、便宜的にこれを3枚と数えて手牌集合をQおよびQ′に分割する。はじめに手牌q∈Qとq′∈Q′が持つ情報を述べる。手牌は以下の要素で構成される。
・非公開牌種:その手牌を持つプレイヤのみに見える場に晒していない情報であり、34種の牌をそれぞれ何枚持っているかを表す整数の組。各要素は0から4までの整数値をとり、要素の総和はフーロの回数をmfとして13−3mfまたは14−3mfである。
・フーロ:明順21種、明刻34種、暗槓34種、明槓34種が存在し、それぞれの個数を表す整数の組。明順に関する21次元の要素は0から4までの整数を取り、それ以外の要素は0または1の整数により表される。
・リーチ:リーチを表すフラグ。
・赤ドラ:赤ドラは3枚のみであり、それぞれについて、持っていない場合、持っていて場に晒していない場合、持っていて場に晒している場合の3通りの状態を持つ。
手牌に関する上記に含まれない情報については省略され、それらが異なる手牌は同一のものとして扱う。具体的には、フーロを行った順番と入手元他家の情報や、チーにおいてフーロした牌種の情報、大明カンと加カンの違い、赤ドラを含むフーロの種類の情報が省略されている。
実装においては上に挙げた情報はいくつかの32ビット整数型により表される。具体的には、非公開牌種は、(5)式を用いて表現する。
Figure 2019083997
各牌種は4枚までしか持てないため、1つの牌の枚数は3ビットで表現できる。従って、一つの色(萬子、索子、筒子)の各牌の枚数は27ビットのデータ構造で、字牌については21ビットのデータ構造で表現可能である。このように定義すると、ある手牌からの牌種の増減を整数の足し算と引き算で表現することが可能である。実際には、合計枚数に制約があるため、より少ないビット数で非公開牌種を表現可能だが、簡単のためこのようにした。以下では、この32ビット整数型4つをまとめてHai_Num_Bitと呼ぶ。
後に探索の対象とする手牌を列挙する段階において、同じ手牌を複数回探索しないためにHai_Num_Bitに対してハッシュ値を定義すると便利である。本発明ではXORと定数シフトのみの演算からなるAlgorithm1を用いた(図2参照)。記号<<は、ビット列の左シフトを表している。多くの場合麻雀の手牌は1種類の牌を0または1枚持つことが多いため、色に合わせて左シフトの数を変更することで、ハッシュが衝突する確率を減らすことが可能になる。
フーロ、リーチ、赤ドラの情報もいくつかの32ビット整数を用いて表現することができる。実際にこれらは、(6)式に示すように、整数8つで表現可能である。明順については、一つの整数が一つの色に対応していて、一つの色に7種類のチーが存在して、同種のものは4つまで存在し得るため、7x3=21ビットで表すことができる。明刻、明槓、暗槓については、同じ牌のものは1つまでしか存在し得ず、各色に明刻、明槓、暗槓合わせて27種存在するため、27ビットで表すことができる。字牌については合計21種存在するため、21ビットで表現できる。最後にリーチと赤ドラについては、リーチは1ビットで表し、各色の赤が晒されているかどうかを1ビット(合計3ビット)で表し、手牌の中に持っているかどうかも1ビットで表した。これらについてもハッシュ値を定義すると都合がよく、本研究では8つの整数のXOR積をハッシュ値とした。今後、これら8つの32ビット整数型をまとめて、Tehai_State_Bitと呼ぶ。
Figure 2019083997
<<牌交換の表現>>
続いて、ある手牌から任意の回数だけ牌をツモり、打牌を行う操作について述べる。本明細書ではこの動作を牌交換と呼び、牌交換全てからなる集合をCにより表す。牌交換は、手牌の各牌種の増減数を要素とする34個の整数によって表すことができて、各要素は−4から4までの整数値をとる。Cにはルール上許されないような交換(例えば全要素−4により表現される交換)も属す。
牌交換c∈Cに対して、牌種h∈Hの増減をchで表す。また、手牌に増えた牌の数をn、減った牌の数をmとして(7)式とする。プレイヤが打牌選択を行う際、手牌は合計14枚であり、そこから13枚と14枚の手牌を繰り返し、アガリ形となる14枚の手牌を目指すため、打牌選択において重要な集合はC(n,n)とC(n,n+1)である。以下では手牌qにおいて、牌交換cを行うことで実現する手牌をq+cと書く。
Figure 2019083997
<<DAGの節点の列挙>>
ある打牌選択を行う節点をDAGの根節点として、探索対象となる手牌の集合を定義する。このDAGの各節点は、手牌q、牌種h、フェーズa、打牌回数tにより特定される。これらの内、手牌q以外の値は列挙することが容易である。従って、ここでは手牌の列挙についてのみ述べる。後述の「1.探索手牌(ツモのみ)の列挙」では、ツモと打牌のみを行なった場合での探索手牌集合QS0を導入する。続いて、「2.探索手牌(フーロ等も考慮)の列挙」では、ツモに加えてフーロにより牌を入手したり、リーチやカンを行ったりもする場合での探索手牌集合QSを導入する。
1.探索手牌(ツモのみ)の列挙
1人麻雀のDAGの探索は、想定されるテンパイ形を列挙することからはじまる。この打牌選択を行う節点での手牌をq′0とし、手牌をアガリ形に変える牌交換からなる集合CAと、n枚以下でアガリ形に変える牌交換からなる集合CA(n)を、(8)式で定義する。CA(n)に属する要素の列挙は、シャンテン数を数えるバックトラック法を利用して、シャンテン数がn−1以下になる面子切り分け方法を列挙することによりなされる。
Figure 2019083997
次に、探索を行う手牌を列挙するためCの要素に対して部分交換を定義する。牌交換c′がcの部分交換であるとは以下の条件を満たすものをいう。
・0≦chなるh∈Hに対して0≦c′h≦chが成り立つ。
・0≧chなるh∈Hに対して0≧c′h≧chが成り立つ。
ここで、c自身もcの部分交換であり、cの部分交換全てからなる集合をCP(c)と定義する。アガリを目指す際に探索すべき手牌を生成する牌交換の集合CS(n)は、(9)式のように定義される。
Figure 2019083997
また、打牌選択を行う節点での全合法打牌の集合をCLとする。これはC(0,1)の部分集合であり、要素数は14以下である。これにより、探索の対象となる手牌全てからなる集合QS0(n)を(10)式と定義する。
Figure 2019083997
交換枚数nはq′0のシャンテン数以上の値を取る必要があり、nとシャンテン数の差を大きくとるほど探索の精度は向上する。以下ではnは定数を想定するため、CS(n),QS0(n)はCS,QS0と略記する。
CSの要素の中には複数のCP(c)の要素となっているものが数多く存在する。実装において重複無くQS0の列挙を行うにあたり、QS0の要素に対するHai_Num_Bitのハッシュ値を用いると効率が良い。
2.探索手牌(フーロ等も考慮)の列挙
今まで、牌の交換などは非公開牌種の枚数の増減のみを考えてきた。そのため、ここまでで想定できる手牌は現在の手牌q′0からツモによる打牌交換を行った手牌だけであり、フーロにより実現する手牌はQS0に属さない。そこで、フーロを含めて牌の増減がcで表される手牌について述べる。
牌交換cは、手牌に増える牌と減る牌の双方を34個の整数組で表現できる。これらを、それぞれ、xin(c),xout(c)と書く。これらの各要素は0から4の整数である。そこでポンとチーも34個の整数組で表すことを考慮する。ポンとチーにより牌を得る場合、チーは同じ牌種のフーロでも順子の数の小さい側に入れるか、中間に入れるか、大きい側に入れるかによって異なる手牌になるため、ポンとチーによる牌の増加を4つの34個の整数組x1,x2,x3,x4により表す。ここで、x2,x3,x4はチーする牌種を表していて、字牌の部分は常に0であるが、ポンと合わせるため34個の整数組とする。結果として、x1の要素の総和は根節点からポンした回数、x2+x3+x4の要素の総和はチーした回数に対応する。このとき、フーロを含めて牌の増減がcで表される交換の集合D(c)を(11)式により定義する。さらに、D(c)の部分集合でフーロの合計回数がmf-max以下からなるフーロも考慮した交換からなる集合をD(c,mf-max)と書く。
Figure 2019083997
手牌q′0からD(c,mf-max)の交換を行った手牌からなるQの部分集合をQD(q,mf-max)とする。すなわち、q=q′0+c ∈QS0に対して、(12)式である。ここでq′0+dとは、手牌q′0からフーロも考慮した交換dを行って実現される手牌である。
Figure 2019083997
ツモの場合と異なり、フーロの場合入手できる牌には麻雀のルールに基づいた制限があり、QD(q,mf-max)から実現不可能なものをある程度除外する。制限とは例えば、「ポンする際には同じ牌が手牌に2枚必要」などである。本明細書では、q′0とx0から判定可能なルール上の制約を説明する。この条件は一般に以下のようにまとめられる。フーロxi,i = {1,2,3,4}を行うために必要な牌種と枚数を表す整数の組をyiとする。例えばx1が牌種hのポン1つからなる場合y1h =2で他は0である。QDから除外される手牌は、ある牌種h対して(13)式が成り立つことである。ここでq′0hは手牌q′0の非公開牌種に含まれる牌種hの枚数である。
Figure 2019083997
さらに、探索する手牌に、リーチをした手牌や、カンを含む手牌を加えることを考慮する。そのため、集合QD(q,mf-max)に含まれる各手牌に対して以下の手牌も考慮する。
・フーロ回数がmf-maxを超えない範囲で、手牌に含まれる暗刻を暗槓または明槓に置き換えたり、明刻を明槓に置き換えたりした手牌(フーロ回数は場に晒した面子の数であり、加カンはフーロ回数を増やさないものとする)。
・QD(q,mf-max)の要素と上で挙げたメンゼンテンパイ手牌においてリーチをした手牌。
これらの手牌をQD(q,mf-max) に加えた集合をQ′D(q,mf-max)とする。
QS0の全ての要素に対するQ′D(q,mf-max)の和集合が探索する手牌の全体であり、QSと書く。すなわち(14)式である。以降では、Q′D(q,mf-max)をQ′D(q)と略記し、その要素をqの派生手牌と呼ぶ。
Figure 2019083997
実装においては、上述した手牌の交換を再帰的に行い、今までに無い手牌が現れたらそれを集合に追加する。これらはqi ≠ qjなるqi,qj∈QS0に対して、Q′D(qi) ∩ Q′D(qj) = φが成り立つため、各QS0の要素間で並列に実行可能である。また、Q′D(q)の各要素はTehai_State_Bitにより識別可能であるから、このハッシュ値を利用することで重複のないQ′D(q)の要素列挙が効率的に行われる。
<<枝の列挙>>
上述したように、q′0からアガリに向かう際に、牌交換回数とフーロ回数を閾値として探索空間に制限を課し、手牌の列挙を行った。実際にDAGの探索を行う際には、枝の情報も必要である。はじめに、フーロを行わない各手牌に対して、牌交換を行った手牌がQS0の要素であるような一枚牌交換C(1,1)の部分集合を定義する。すなわち、q∈QS0に対してe(q)を(15)式と定義する。
Figure 2019083997
C(1,1)に属する要素の数は34x33通りであり、e(q)の列挙の実装は、qに対しC(1,1)の全ての要素に対しq+cを計算し、それがQS0に含まれるかを判定する。これもHai_Num_Bitのハッシュを利用すると、ハッシュ表が大きい理想的な状況では計算量をO(1)に抑えることが可能である。また、この計算は各q∈QS0に対して独立に実行可能であるため並列化が容易である。
前節でフーロ等を含めて手牌を列挙したが、これに合わせて1枚の牌交換に関しても、フーロを含めて拡張する必要がある。牌hinを1枚増やし、牌hout(≠hin)を1枚減らす交換c∈C(1,1)に対して、以下の交換からなる集合を派生交換集合A1(c)とする。
・ツモ:hinをツモり、houtを打牌する。リーチしない場合とする場合の2通りが存在する。
・チー:hinをチーし、houtを打牌する。順子のどの部分をチーするかによって3通り想定される。
・ポン:hinをポンし、houtを打牌する。
・加カン、暗カン:hinをツモり、houtを加カンまたは暗カンする。
手牌q∈QSに対して、交換d∈A1(c)を行うことで実現する手牌をq+dとする。DAGの探索を行う際、各q∈QSに対して、q+d∈QSが成り立つようなd∈A1(c)全てを予め列挙すると効率が良い
ここでqi∈QS0、c∈e(qi)、qj∈Q′D(qi)、d∈A1(c)であるとき、(16)式という性質が成り立つ。したがって、qj+dのTehai_State_Bitのハッシュ値を利用することで効率的にDAGの探索に必要な派生交換を列挙することが可能である。
Figure 2019083997
続いて牌hの自己交換A0(h)を以下で定義する。
・加カン、暗カン:牌hをツモり、牌hを加カンまたは暗カンする。
・大明カン:牌hを大明カンする。
これらは集合Q′D(q)の中で閉じた交換である。すなわち、qj∈Q′D(qi)、d∈A0(h)であるとき、(17)式が成り立つ。ツモ切りリーチは集合QD(q)の中で閉じた交換であるから、この中に含まれ得るものであるが、フーロやリーチを行う他家がいない状況で、リーチを数巡待つことが有利になることは想定しづらいことから本明細書では考えないものとする。
Figure 2019083997
手牌qに対して列挙した交換の集合をA(q)とする。すなわち、(18)式である。
Figure 2019083997
これらの列挙のアルゴリズムはAlgorithm2にまとめられる(図3参照)。1行目のQS0に関するループは、そのサイズが数万程度であり他のループに比べて一桁以上大きいため並列化して行う。2行目のQ′D(qS0)に関するループのサイズは、探索を始めるときの手牌のシャンテン数や、フーロ回数に依存するが、およそ10以下である。3行目のe(qS0)のループのサイズは|C(1,1)|より小さく、実際は数百程度である。4行目のA1(c)については、入手する牌がチーできる牌かどうかなどによってサイズが異なるが、10以下であり、11行目のA0(h)のサイズは3である。5行目と12行目で、手牌qから変換dを行った手牌q + dがQSに属するか判定を行う。この際、QSはサイズが10万程度の集合であるが、(16)、(17)式の関係を用いると、判定はおよそ10以下の集合から行えばよいことがわかる。
<<終端節点の利得>>
手牌の形によっては、あと1枚の牌でアガリ宣言を行うことができる。アガリ宣言を行った場合、プレイヤにはアガリ形に応じた利得が与えられゲームは終了する。手牌q∈QSにおいてアガリに必要な牌と利得(h,u)∈H×Rからなる集合を、ツモアガリとロンアガリのそれぞれで、Btsumo(q)、Bron(q)とする。また、探索を行う上での最大想定打牌回数tmaxの打牌を行ったときに手牌がqであった場合の利得をUryukyoku(q)とする。
<<偶然節点における行動の確率>>
DAGの探索を実際に行うためには、偶然節点における行動の確率を定める必要がある。これは、ある牌hをツモする確率および副露できる確率であり、以下にまとめることができる。
・ツモ確率:牌山から牌hをツモする確率であり、打牌回数tとその時の手牌qに依存するとしてpT(q,h,t)と表す。
・チー確率:上家が牌hを打牌する確率であり、打牌回数tとその時の手牌qに依存するとしてpF(q,h,t)と表す。
・ポン、ロン確率:他家が牌hを打牌する確率であり、チー確率の3倍と考えて3pF(q,h,t)とする。
<<期待値の計算>>
上述したように、QSの各要素に対して、どの行動を行った後にどの手牌に遷移するかを列挙した。ここでは、その結果を用いて1人麻雀の期待値の計算アルゴリズムを説明する。そのため、A(q)をツモにより行うことができる行動の集合Atsumo(q)、チーの集合Achi(q)、ポンと大明カンの集合Apon(q)とに分割する。また、E(q,null,chanceF,t,n0)、E(q,null,chanceT,t,n0)はそれぞれE(q,F,t)、E(q,T,t)と略記する。具体的な計算はAlgorithm3に従う(図4参照)。E(q,F,t)の計算に用いるflag(h)は、その牌を他家から手に入れる最適な行動がポンかロンである場合に1となり、フーロの確率の係数を3に変える効果がある。
探索の具体的な順序は以下のようである。はじめに打牌回数がtmaxとなった終端節点の利得とアガリ確率を設定する。この節点では、1人麻雀のルールによりツモもフーロもできないことから、アガリ確率は0であり、手牌に応じた利得Ur(q)が設定される。
次に、終端節点(t=tmax)から現在の節点で打牌を行った節点(t=1)まで期待値とアガリ確率を更新するループ処理を行う。期待値とアガリ確率は終端節点に近いほうから確定していくため、tが同じ節点ではフェーズがツモの節点が先に決まり、フェーズがフーロの節点が後に続く。これは1人麻雀のルールで、打牌を行った後にフーロのフェーズが先にあり、次にツモのフェーズが続くためである。具体的な更新は以下のように行う。牌種hをツモした際に最も期待利得の高い選択を行った場合の期待利得とアガリ確率をEtmp(h)、ptmp(h)に入力する。これは、はじめにツモ切りを行った場合の期待利得とアガリ確率E(q,F,t+1)、p(q,F,t+1)を初期値として、手牌qから行うことができるツモアガリの集合Bt(q)および、ツモによる牌交換の集合Atsumo(q)から期待利得最大の選択を検索することで行う。その後、求めたEtmp(h)、ptmp(h)に対して、ツモ確率pT(q,h,t)との積を足し合わせてツモフェーズの期待利得およびアガリ確率の更新処理が完了する。フーロフェーズの更新では、初期値をフーロを行わなかった場合の期待利得とアガリ確率E(q,T,t)、p(q,T,t)に設定する。続いて、ツモフェーズの更新と同様に、各牌種が打牌された際に最も期待利得の高い選択を行った場合の期待利得とアガリ確率をEtmp(h)、ptmp(h)に入力する。これは、手牌qから行うことができる行動の集合Achi(q)、Bron(q)、Apon(q)から検索する。この時、抽象化した1人麻雀では他家3人の打牌が1つにまとめられるが、元のルールではチーは上家からしかできないものの、ポンとロンは3人の捨て牌から行うことであることを反映するため、ポンまたはロンが最適な行動である場合はそのことも記録する。更新は、各牌種hに対して初期値にEtmp(h)−E(q,T,t)および、ptmp(h)−p(q,T,t)とフーロ、ロンができる確率の積を足していくことで行う。その確率は、最適な行動がチーである場合はpF(q,h,t)であり、ポン、大明カン、ロンである場合は3pF(q,h,t)である。
<<評価実験>>
ここでは、上述した手法を用いてDAGを構成した場合にDAGの大きさがどの程度になるか、実験によって明らかにする。DAGの大きさは、探索を行う節点での手牌のシャンテン数、(10)式の交換枚数n、そして(12)式のフーロ回数mf-maxに大きく依存する。これらの条件で分類を行った場合の、|QS|の平均的な値を表1に示す。手牌は天鳳の鳳凰卓においてあるプレイヤが4回目の打牌を行う際の手牌をランダムに選択した。シャンテン数、交換枚数、フーロ回数が大きくなるほど|QS|の値が大きくなるが、3シャンテン、4シャンテンの場合でも交換枚数が4までであればおよそ10万程度に収まる結果を得た。この程度のサイズのDAGであれば、物理コア数4、論理コア数8のIntel Core i7(登録商標)、メモリ8GBの計算機を用いておよそ5秒以下で結果を出すことが可能である。すなわち、一般的な対戦条件(例えば数秒程度の思考時間)のもとで局をプレイ可能な麻雀AIに組み込むことができる。3シャンテンまでであれば、交換枚数がシャンテン数より大きくても探索が可能であり、状況に応じてシャンテン数を落とす選択が可能である。1シャンテンの場合3枚変えも探索可能であり、ターツを落として高い手を狙う選択もあり得る。
Figure 2019083997
<麻雀1局の目的に応じた抽象化と価値推定からなるプレイヤ>
上述したようなDAGで表現された1人麻雀の探索アルゴリズムに加え、以降では、麻雀1局の目的に応じてゲーム木を複数に抽象化し、その探索結果を用いて局面や選択の価値を推定する手法について説明する。
全ての抽象化において、他家の手番は全て偶然プレイヤの手番として置き換えられ、プレイヤが偶然プレイヤと自分(意思決定を行うプレイヤ)のみとなるため、これらを1人麻雀と呼んでいる。自分の手牌や他家の状態で大まかに場合分けを行い、1人麻雀の結果を用いる(図5参照)。自分の手牌のシャンテン数が大きく、他家のテンパイ確率も高くない状況では、ルールベースの打牌を行い、フーロは行わない。このルールベースの打牌とは、孤立字牌を対子になりにくく(既に場に見えている)、なっても価値が低いもの(刻子になっても役にならないオタ風牌)を優先的に捨てるといったものである。自分の手牌のシャンテン数が大きく、他家がリーチまたは2回以上のフーロを行っている場合、降りを行う。これは降り方策1人麻雀の結果を用いるが、その詳細は後述する<降り方策1人麻雀>で説明する。自分の手牌が1シャンテン以下の場合は、包括方策1人麻雀の結果を用いる。これは、アガリ、形式テンパイ、降りなどの要素を取り入れた1人麻雀であり、この詳細は後述する<包括方策1人麻雀>で説明する。これらの条件以外の手牌では、上述した、リーチやフーロした他家がいない場合放銃を考慮せずアガリを目指すアガリ方策1人麻雀の結果を用いる。リーチやフーロをした他家がいる場合は、各種の1人麻雀の結果を特徴量とする価値推定を機械学習によって行い、利得期待値を最大化する選択を行う。
ここで以下で用いる4つの1人麻雀について概説する。これらは麻雀1局においてプレイヤが取り得る各々の目的に応じたものであり、ゲーム木の構造などは異なるが、終端節点での利得の設定などで共通する部分もある。
アガリ方策1人麻雀:
プレイヤは定められた打牌回数の範囲でツモとフーロを行い、アガリを目指す。プレイヤ手番の節点はツモ節点とフーロ節点が存在する。ツモ節点では、牌をツモした状態で何を打牌するか、またはアガリ宣言を行うかの選択を行い、フーロ節点では捨てられた牌をフーロするかの選択を行う。各順目においてプレイヤがツモする牌種や、フーロの対象となる捨て牌の牌種は偶然プレイヤに決定される。アガリを行った終端節点の利得は、アガリの種類(ツモアガリ、ロンアガリ)、翻、符、局などにより定まるが、麻雀のルールに基づく点数そのものではなく、局終了時の順位点推定値を用いる。アガリをしない状態で定められた打牌回数に達した終端節点での利得は手牌によらないものとする。放銃や他家のアガリは考えない。
形式テンパイ方策1人麻雀:
プレイヤは、定められた打牌回数の範囲でツモとフーロを行い、形式テンパイを目指す。アガリ方策1人麻雀との違いは、プレイヤはアガリ宣言を行うことができないことと、定められた打牌回数に達した終端節点での利得が手牌に依存することである。プレイヤの目的は形式テンパイを狙うことのみであるため、終端節点で手牌が形式テンパイの場合の利得は1で、そうでない場合の利得は0とする。
降り方策1人麻雀:
プレイヤは定められた打牌回数に達するまで打牌を行うが、ツモやフーロは行わない。したがって、打牌回数は手牌枚数より小さい値である。プレイヤの打牌した牌種が放銃になるかどうかは偶然プレイヤに決定される。この時の放銃確率は打牌回数に依存しないが、一度放銃とならなかった牌の放銃確率は0とする。また、プレイヤが1回打牌し放銃しない場合、偶然プレイヤにより一定の確率でゲームが終了する。これは他家のツモアガリ、もしくは他家から他家のロンアガリに対応している。終端節点の利得は、放銃した節点における牌種ごとに異なる利得、偶然プレイヤによりゲームが終了する節点の利得、定められた打牌回数に達した場合の利得が存在する。
包括方策1人麻雀:
プレイヤは定められた打牌回数の範囲でツモとフーロを行い、放銃を避けながらアガリまたは形式テンパイを目指す。アガリを行った終端節点の利得はアガリ方策1人麻雀と同じである。また、定められた打牌回数に達した終端節点の利得は手牌に依存する。この利得は、形式テンパイで流局した場合とそうでない場合それぞれでの順位点推定値を用いる。プレイヤが打牌した後には偶然プレイヤによってそれが放銃となるか判定される。この確率は牌種と巡目に依存し、放銃した節点の利得は牌種に依存する。放銃とならない場合は、次にフーロの選択を行うまでの進行は以下のようである。はじめに、プレイヤが降り方策を選択するか決定する。降り方策を選択した節点は終端節点として表され、その利得は降り方策1人麻雀の結果をもとに算出する。降り方策を選択しない場合、偶然プレイヤによって他家のアガリに対応する終局をするかの選択が行われる。終局とならない場合、偶然プレイヤがフーロの対象となる牌を選択する。
これらの1人麻雀において、考慮されている要素とされていない要素を表2にまとめた。4つの1人麻雀のうち、アガリ方策1人麻雀と形式テンパイ方策1人麻雀は、非特許文献1で述べられた1人麻雀のモデルの終端節点の利得を変更し部分的に簡略化したものと考えることができる。降り方策1人麻雀は、ツモやフーロを行わないため、他の1人麻雀と比べてゲーム木のサイズが小さく扱いが容易である。包括方策1人麻雀は、麻雀の多くの要素を取り込んでいるため、このゲーム木における期待値最大化方策に従った選択が妥当なものになる場合が多い。一方で、例えば放銃をほとんど気にする必要が無い1局の序盤などは単純にアガリ方策1人麻雀の選択をした方が良い場合もある。実際にどのような状況でどの1人麻雀を利用するかを決めるフローは発明者の経験則に基づいて行われている。
Figure 2019083997
<各種1人麻雀について>
以下では、上で概説した1人麻雀の詳細について説明する。はじめに1人麻雀の終端節点の利得を定めるために、局の終わりの価値(1人麻雀プレイヤの期待順位点の何らかの推定値)について、その計算方法を説明する。次に、降り方策1人麻雀と包括方策1人麻雀について、定式化と利得を最大化する方策を説明する。
<<1人麻雀の終端節点の利得>>
ここでは、後述する抽象化した1人麻雀で利用する価値について定義と計算方法を説明する。はじめに、麻雀の1局が終わり方が確定した場合の価値を定める。麻雀の1局の終わり方は、アガリと流局の2種類に分類でき、その際の各プレイヤの点数の収支はルールにより定められている。1局の終わり方がアガリである場合、プレイヤiがプレイヤjから翻xhan、符xfuの手でアガリをした場合の価値をRij agari(xhan,xfu)とする。ここで、ツモアガリはi=jであり、ロンアガリはi≠jである。また、1局の終わり方が流局である場合、価値は各プレイヤの聴牌フラグを用いて表すことが可能で、これをRryuukyoku(l1,l2,l3,l4)と書く。ここでliはプレイヤiがテンパイしている場合に1で、そうでない場合は0である。また、自分のプレイヤ番号はi=1とする。これらの価値は多クラスロジスティック回帰による順位確率の推定から求まる(非特許文献1)。
続いて、1局の終わり方に関する確率をいくつか定義し、その推定法を説明する。自分がアガリをできない場合に流局する確率をpryuukyokuとする。推定は、自分の打牌回数に関して場合分けを行い、以下の特徴量ベクトルを用いたロジスティック回帰により行う。
Figure 2019083997
ここで、pi tenpaiはプレイヤiのテンパイ確率であり、発明者の先行研究の手法で推定する(栗田萌、保木邦仁 「麻雀における他家の手牌と待ちの予測に基づく放銃確率推定」 情報処理学会研究報告 GI、Vol.2017−GI−38、 No.5、 pp.1−8、2017)。また、4行目のテンパイ確率に関する積は、リーチしていない他家についてのみ行う。また、自分がアガリをせずさらに流局しない場合、他のプレイヤがアガリをすることになるが、その確率をpi agari-otherとする。他のプレイヤiは下家、対面、上家のいずれかであり、この確率の推定は3クラスのロジスティック回帰により行う。特徴量のベクトルは1、他家3人のリーチフラグ、他家3人のテンパイ確率の7次元である。さらに、他家iがアガリをし、さらにそれが自分の放銃でない場合に、それが他家jからのアガリである確率をpij agari-fromとする。この値は、経験則に基づいて、(20)式とする。流局した場合に他家iが聴牌している確率をpi ryuukyoku-tenpaiとする。他家iがリーチしていない場合、この推定はロジスティック回帰に基づいて行い、特徴量のベクトルは、Φryuukyoku-tenpai=(1,pi tenpai)とする。
Figure 2019083997
最後に、後の1人麻雀で用いるためのいくつかの価値を定義する。他家のアガリ点に対する価値Rij agari(xhan,xfu)と、そのアガリの確率から他家のアガリに関する終端節点の利得が得られる。発明者らの先行研究の手法を用いると、牌hを打牌する際のプレイヤiに対する放銃確率pi houjuu(h,xhan,xfu)を推定ことができる(栗田萌、保木邦仁 「麻雀における他家の手牌と待ちの予測に基づく放銃確率推定」 情報処理学会研究報告 GI、Vol.2017−GI−38、 No.5、 pp.1−8、2017)。また、同じ手法を用いることで、プレイヤiが牌hをツモした際にアガリをする確率pi tsumo-agari(h,xhan,xfu)を推定することができる。これらを用いると、他家iがプレイヤjからアガリをする際の価値Rij agariはi≠jのとき(21)式となる。
Figure 2019083997
ここでn(h)は牌種hのプレイヤから見えていない牌の枚数である。i=jの時は、pi houjuu(h,xhan,xfu)をpi tsumo-agari(h,xhan,xfu)で置き換える。他家がアガリをし、自分が放銃しない終端接点の利得Uagari-no-relationは今までの結果から(22)式と算出することができる。
Figure 2019083997
流局時に自分が聴牌していない終端接点の利得をUryuukyoku-noten、聴牌している終端接点の利得をUryuukyoku-tenpaiとすると、(23)式で表される。
Figure 2019083997
ここで、pi rt(1)= pi ryuukyoku-tenpaiであり、pi rt(0)=1−pi rt(1)である。自分がアガリをしたり、流局時に聴牌を取ることを放棄し、放銃しないように打牌する戦略を「降り」と呼ぶ。本研究ではこの戦略を取った場合に放銃にならずに局が終わる場合、降りに成功したとする。その終端接点の利得を(24)式とする。
Figure 2019083997
<<降り方策1人麻雀>>
麻雀では降りの技術は非常に重要な戦略である。放銃率を下げるため、基本的に安全度の高い牌から捨て、安全度の差が大きくない場合は持っている枚数が多い牌や、放銃しても安い牌から捨てていく戦略が良いとされる。ここでは、降り方策1人麻雀という降りを簡略化したゲームを定義し、その中で最適な戦略を求めることで実際の多人数で行う麻雀における降りの戦略を立てる手法を説明する。手組について1人麻雀を考えるのと同様に、降りについても問題の簡略化を行い、降り方策1人麻雀を以下で定義する。
・自分の手牌には牌種hがnh枚あり、各牌種h∈Hごとに、放銃確率phoujuu(h)と放銃時の利得Uhoujuu(h)が設定されている。
・プレイヤは自分の手番で牌を捨てる。この時、一度放銃にならなかった牌種は次も放銃にならないものとする。放銃にならない場合、一定の確率αでゲームが終了して利得Uagari-no-relationを得る。終了しなかった場合、ツモは行わずプレイヤの手番に戻る。
・自分の手牌が無くなった場合、利得Uori-succeedを得てゲームが終了する。
このゲームにおいて期待利得を最大にするような打牌の順番を説明する。基本的に全てのh∈Hに対して、Uagari-no-relation>Uhoujuu(h)であることを想定しているため、一度放銃にならなかった牌種が手牌に残っている場合は、その牌を優先的に捨てるべきことは自明であり、最適な打牌の順番は牌種順により表現される。牌種hが放銃にならない場合に、hをnh回連続で打牌する間にゲームが終端しない確率は(1−α)nhである。k番目に捨てる牌種をhk、その期待値は、(25)式のように級数の形で表すことができる。ここでKは手牌に1枚以上含まれる牌種の数である。また、houjuuはhと略記した。これをE(h1,・・・,hK)と書く。これを最大化する降り順は解析的に求めることができる。
Figure 2019083997
この級数は、(26)式であることの必要十分条件が、(27)式であるという性質を持つ。
Figure 2019083997
Figure 2019083997
したがって、f(h)が小さい牌種から捨てることで、降り方策1人麻雀の期待値を最大化できる。f(h)がUori-succeedによらないのは、(25)式において順序によらない定数項でのみ現れるためである。これは放銃率が低いもの、枚数が多いものを優先すべきという順序になっていて、直感ともあっている。以下では、この順番に並べた際にi番目となる牌種をh* iと書く。この戦略を用いて降りを行った場合の放銃確率は、(28)式と表すことができる。
Figure 2019083997
後の計算で利用するため、放銃時の平均利得Rhoujuu-averageを算出する。その際の期待値は(25)式より求めることができて、これをEoriと書くと、Rhoujuu-averageは、(29)式より求めることができる。αの値については、本明細書では暫定的に0.1とする。
Figure 2019083997
また、放銃の関する値については、(30)式のように計算する。
Figure 2019083997
<<包括方策1人麻雀>>
この節では放銃や他家のアガリ、降りを考慮に入れてアガリや形式テンパイを目指す包括方策1人麻雀を説明する。包括方策1人麻雀は、上述した1人麻雀に以下の3つの拡張を行ったものとみなすことができる。
・プレイヤが打牌を行う際、順目とその時のプレイヤの手牌qと牌種に応じた確率phoujuu(q,h,t)で打牌が放銃となり、利得Uhoujuu(q,h,t)が与えられてゲームが終了する。
・偶然プレイヤがプレイヤがフーロ、ロンできる牌を選択する前に、順目とその時のプレイヤの手牌qに応じた確率pkyoku-end(q,t)によりゲームが終了し、利得Uagari-no-relationが与えられる。
・プレイヤは打牌を行い、それが放銃とならなかった場合、降りを選択することができて、順目と手牌に応じた利得Uori(q,t)が与えられてゲームが終了する。
これにより、節点の期待値は以下のように変更される。打牌を行うフェーズでは、放銃を考慮し、(31)式となる。
Figure 2019083997
ただし、各値の根節点に対する依存性は表記を省略した。ここでhはhoujuuを意味する。他の1人麻雀の場合と異なり、C′′(q,i,playerD)は、降りの節点(q,null,ori)を含み、(32)式である。
Figure 2019083997
これにより、将来的な降りの期待値を考慮した打牌が可能となる。また、フーロを待つ偶然節点においては、それ以前に他家がアガリをし得ると考えて、(33)式とする。ここで、keはkyoku-endを表す。
Figure 2019083997
包括方策1人麻雀で新たに設定された利得や確率の値は以下の手順で求める。定められた回数の打牌を行った終端節点の利得は、(34)式とする。
Figure 2019083997
次に、t回打牌を行った際に牌種hを打牌した場合に、それが放銃となる確率phoujuu(q,h,t)とその利得Uhoujuu(q,h,t)について説明する。発明者による先行研究において、他家iに対する現在の放銃確率pi houjuu(h,xhan,xfu)は、テンパイ確率pi tenpaiとテンパイ時放銃確率pi tenpai-houjuu(h,xhan,xfu)の積である(35)式によって表した(栗田萌、保木邦仁 「麻雀における他家の手牌と待ちの予測に基づく放銃確率推定」 情報処理学会研究報告 GI、Vol.2017−GI−38、 No.5、 pp.1−8、2017)。
Figure 2019083997
プレイヤがt回目の打牌を手牌qで行った時の放銃確率については、テンパイ確率のみがq、tに依存すると考えて、(36)式とする。
Figure 2019083997
ここで、プレイヤがt回打牌を行った際のリーチをしていない他家iのテンパイ確率は、特徴Φi tenpai-future = (1,logit(pi tenpai))を用いて推定する。確率の推定は、現在の打牌回数とtと手牌qがリーチかどうかについて場合分けをして行う。これらを用いて、(37)式で計算する。
Figure 2019083997
続いて、プレイヤがt回の打牌を行い放銃にはならなかった場合に、次の打牌をする前に他家の誰かがアガリをして局が終了する確率pkyoku-end(q,t)について説明する。これについても、特徴を(38)式としてロジスティック回帰を行う。確率の推定は現在の打牌回数とtと手牌qがリーチしているかについて場合分けする。
Figure 2019083997
次に降り戦略を選択した終端節点の利得Uori(q,t)について説明する。これは、特徴である(39)式を用いて、降り選択を行って放銃する確率pori-node-houjuu(q,t)を推定する。
Figure 2019083997
ここで、pori-houjuu(q,t)は、上述した放銃確率を求める手法で計算するが、放銃確率を計算する級数(28)式は、捨てた牌の数がNdahai-max−t以上になった段階で打ち切る。また、確率pori-node-houjuu(q,t)の推定はtによって場合分けするほか、学習データは注目したプレイヤがリーチまたは2回以上のフーロを行っていない2シャンテン以上の状態で、他家がリーチを行っている牌譜のみを用いた。これは、この状況であれば上級プレイヤの多くが降りを選択すると予想されるためである。以上より、降りの終端節点の利得を(40)式とする。
Figure 2019083997
<1人麻雀の結果を特徴とする価値推定>
ここでは、今まで説明した1人麻雀の結果を特徴として、麻雀において価値を推定する手法を説明する。Ndahai-maxを、全員がフーロをせず流局する場合のプレイヤの打牌回数と設定した包括方策1人麻雀は、麻雀の多くの要素を取り入れて抽象化したゲームとなっているが、全ての状況でこの手法を用いることが必ずしも最良の選択になるとは限らない。例えば、包括方策1人麻雀では将来的に他家のテンパイ率が高くなることを推定して安全牌を残す選択をするが、初打からこのようなことをするのは有効でない場合が多い。
この手法は、アガリ方策1人麻雀、形式テンパイ方策1人麻雀、降り方策1人麻雀において算出した結果の全部または一部を特徴量として、機械学習を用いてアガリ確率、形式テンパイ確率、放銃確率を推定して、価値推定を行う手法であり、概念図を図6に示す。
この手法を用いる場合、1人麻雀の探索を行う段階ではNdahai回の打牌を行ってアガリ出来ない終端接点の利得を、手牌がテンパイ形かどうかによらずUnot-agariに固定する。これは、後に行う期待値計算を容易にするための処理である。
打牌回数Ndahaiは以下のように決める。はじめに、現在の節点から誰もアガリやフーロを行わない場合に自分が流局までに打牌する回数をNdahai-maxとおく。探索に用いる打牌回数はNdahai-maxより小さい値を用いるのが妥当であると考えられるため、牌譜データを用いてNdahai/Ndahai-maxの推定を行う。すなわち、牌譜の中でその局にアガリをできなかったあるプレイヤのプレイヤ節点に注目し、その節点でのNdahai-maxとそのプレイヤが実際に打牌できた回数の比を教師データに用いる。その際、特徴量をΦdahai-ratio = Φryuukyokuとし、確率の推定は自分の打牌回数で場合分けする。通常のロジスティック回帰分析と異なり、教師信号が0、1の整数ではなく0から1の実数となるが、パラメータの学習は通常のロジスティック回帰分析と同じように行うことが可能である。学習により得られたパラメータをwdahai-ratioと書くと、探索に用いる打牌回数は、(41)式となる。
Figure 2019083997
利得Unot-agariは以下のように求める。はじめに、1人麻雀の根節点における降り方策1人麻雀での放銃確率をpori-houjuuとする。この時、降り方策1人麻雀における牌種それぞれの放銃確率は全て1人麻雀の根節点において推定される。そして、(42)式で表される特徴を用いたロジスティック回帰分析によって、現在の局が自分の放銃によって終了する確率を推定し、その値をphoujuu-afterとする。これを用いて、(43)式のように計算する。ここで、phoujuu-afterをphaと略記した。
Figure 2019083997
Figure 2019083997
アガリ方策1人麻雀におけるアガリ出来ない終端節点の利得をUnot-agari、打牌回数をNdahaiとして期待値最大化方策に基づいて探索した際に得られた根節点の行動aのアガリ確率と期待値をそれぞれ、pa search、Ea searchとする。この時、アガリをした場合の平均利得Ua agari-averageは、(44)式と求めることができる。
Figure 2019083997
DAGの探索から求めたアガリ確率pa searchを元に、実際のアガリ確率pa agariを推定する際にロジスティック回帰を用いる。すなわち、実際のアガリ確率推定に用いる特徴量を、(45)式とする。テンパイ確率に関する積は、リーチしていない他家に対してのみとるものとし、確率の推定はそのプレイヤの打牌回数に関して場合分けを行う。
Figure 2019083997
流局時のテンパイ確率pa ryuukyoku-tenpaiも、アガリ確率と同様に推定する。すなわち、Ndahai回の打牌でテンパイ確率最大方策に基づいて探索して得られた行動aのテンパイ確率をpa tenpai-searchとし、流局時テンパイ確率pa ryuukyoku-tenpai推定に用いる特徴量を、(46)式とする。
Figure 2019083997
同様に、事後放銃確率pa houjuu-afterも推定する。これは、行動aにおける打牌自体は放銃にならない場合に、その後自分の放銃によって局が終了する確率である。用いる特徴量は、(42)式と同じである。ただし、pori-houjuuは行動aにおける打牌が放銃にならかった手牌からの降り方策1人麻雀での放銃確率pa ori-houjuuに置き換える。
最終的に、行動aを行い放銃しなかった場合の期待値は、(47)式となる。ただし、ag、aav、ry、rt、rn、ha、hav、anrはそれぞれagari、agari-average、ryuukyoku、ryuukyoku-tenpai、ryuukyoku-noten、houjuu-after、houjuu-average、agari-no-relationを表す。
Figure 2019083997
最終的に、行動aの期待利得Eaは、(48)式となり、この値が最大となる選択を行う。
Figure 2019083997
<実験結果>
ここでは、提案した麻雀AIの対局実験結果を説明する。対局では1人麻雀を有向非巡回グラフで表す際の牌の交換枚数は、手牌のシャンテン数に基づいて決定し、0、1、2、3シャンテンのそれぞれで2、3、3、4とした。ただし七対子に関する交換枚数はシャンテン数+1枚を上限とした。4シャンテン以上で降りを行わない場合は孤立した牌で、最も不要なものを捨てる方策を取った。候補となるのは、手持ち枚数が1枚の字牌、1、2、8、9の数牌である。この中で場に見えている同種の牌が何枚あるか、その牌種がドラであるか、字牌は刻子にした時に役が付くか、数牌は同じ色の4、5、6が手牌に含まれているかの項目から、発明者の経験則に基づいて優先順位を付けた。
対局のルールは、floodgate for mahjongと同じものを用いた(水上直紀、亀甲博貴、万代悠作、横山秀 floodgate for mahjong(仮) http://www.logos.t.u-tokyo.ac.jp/mjlog/ 2017)。対局相手はmanueという発明者らが知る範囲内ではオープンソース化されている麻雀AIの中で最も強いものを用いた(Hiroshi Ichikawa https://github.com/gimite/mjai-manue)。対局はmanueを3体用意して席順をランダムに決めて行った。対局の結果を表3(本発明による手法とmanueの対局結果)に示す。平均順位については2.193±0.026となり有意に強い結果が得られた。
Figure 2019083997
本発明では、麻雀1局の目的に応じた抽象化と価値推定によって麻雀プレイヤを開発する手法を提案した。目的に応じた抽象化では、本発明で新たに降り方策1人麻雀と包括方策1人麻雀を提案し、期待利得最大化の方策を定式化した。また、価値推定と組み合わせて統合的な麻雀プレイヤを開発し、manueとの対局で大幅に勝ち越す結果を得た。本発明で用いた機械学習の手法は、テンパイ推定の手法も含めて全て10未満の特徴からなる学習の組み合わせであり、麻雀の知識が少ない開発者でも開発が容易である。また、麻雀のローカルルールに関する特徴が少ないことから、国際ルールの麻雀への適用も行いやすいと考えられる。
<情報処理システムの例>
以下では、図7A〜図7Dを参照しながら、本発明に係る情報処理システムの例について説明する。図7Aは、情報処理システム100のシステム構成の一例を示す図である。情報処理システム100は、ネットワークNWに接続することで相互に通信が可能なサーバ装置SV、パーソナルコンピュータPC、携帯端末MDと、を含むシステムである。サーバ装置SVは、麻雀ゲームの主要部分を処理し、実行、制御する。パーソナルコンピュータPCと携帯端末MDは、現実のプレイヤRPLすなわち人に対して麻雀ゲームに関する情報を表示し、プレイヤRPLの操作を受け付ける。
ネットワークNWは、サーバ装置SV、パーソナルコンピュータPC、携帯端末MD間の、情報処理やデータに係る通信を可能にする任意の通信回線または通信網である。したがって、ネットワークNWは、ワイドアクセスネットワーク(WAN)、有線ネットワーク、ファイバーネットワーク、無線ネットワーク(たとえば、モバイルまたはセルラーネットワーク)、セルラーまたは電気通信ネットワーク(たとえば、WIFI、ロングタームエボリューション(LTE)ネットワーク)、またはそれらの任意の適切な組み合わせであり得る。ネットワークNWは、プライベートネットワーク、パブリックネットワーク(たとえば、インターネット)の1つ以上の部分、またはそれらの任意の適切な組み合わせを含み得る。なお、これらは例示であり、これらに限定されることはない。
図7Bは、サーバ装置SVのハード構成および機能構成の一例を示す図である。サーバ装置SVは、CPUやMPUといったサーバ処理部SVP、ROMやRAM等のメモリデバイスおよびハードディスクHDやDVD等のストレージデバイスとといったサーバ記憶部SVM、上記のネットワークNWと繋がるネットワークインターフェースのサーバ通信部SVCを含み、これらが、内部バス、外部バス、拡張バス等を含むシステムバスといった伝送路を介して互いに接続されたものである。サーバ装置SVは、図示しないが、サーバ管理者等が使用するためのキーボードやマウス等の入力装置、情報を表示するためのディスプイ等の出力装置を備えていてもよい。
サーバ処理部SVPは、複数のプログラムを並列に実行することができる、1以上のプロセッサ及びその周辺回路を有し、サーバ装置SVの全体的な動作を統括制御する制御部Prを備え、上述した他の構成要素との間で制御信号及び情報信号(データ)の送受信を行うとともに、麻雀ゲームの処理、実行、制御に必要な各種の演算処理を行う。そのため、サーバ処理部SVPは、高速アクセス可能な記憶領域に対して、数値演算ユニット等を用いた加減乗除等の算術演算、論理和、論理積、論理否定等の論理演算、ビット和、ビット積、ビット反転、ビットシフト、ビット回転等のビット演算等、三角関数演算、ベクトル演算等を行うことが可能なように構成されている。
サーバ記憶部SVMは、用途に応じた様々な種類のメモリデバイスやストレージデバイスを備える。たとえば、ROMには、一般に、電源投入後、最初に実行されるIPL(Initial Program Loader)が記録されており、これが実行されることにより、ハードディスクHDやDVD等のストレージデバイスに記憶されたプログラムやデータが、制御部Prによって一旦これらを一時的に記憶するためのRAMに書き出され、それらのプログラムが制御部Prによって実行される。サーバ記憶部SVMに記憶されているプログラムは、オペレーティングシステムプログラムや各種アプリケーションプログラム(ドライバ、サーバ用プログラム、ゲームプログラム等を含む)である。オペレーティングシステムプログラムは、MICROSOFT(登録商標)WINDOWS(登録商標)、LINUX(登録商標)、UNIX(登録商標)などであり、本発明に係るゲームが実行され得る限り特に限定されない。
サーバ装置SVは、ネットワークNWを経由してパーソナルコンピュータPCや携帯端末MDと通信し、麻雀ゲームの全体の進行を制御し、プレイヤRPLに麻雀ゲームをさせたり、プレイヤRPLと仮想プレイヤの対戦を制御したり、仮想プレイヤの麻雀ゲームの実行を制御したりする。サーバ装置SVは、これらの制御を行うことのできる任意のタイプのサーバコンピューティング装置である。麻雀ゲームは、通常4人のプレイヤが参加して行われるゲームである。
サーバ記憶部SVMは、サーバ装置SVが起動されるとローダーによってロードされた、ゲームルール記憶部10とプレイ方策記憶部20を有している。ゲームルール記憶部10は、麻雀ゲームの場合であれば、上述の<麻雀のルールと用語の説明>および<抽象化した1人麻雀のルール>で説明した麻雀ゲームのルールを記憶しており、適宜サーバ処理部SVPから参照されて、麻雀ゲームが進行される。たとえば、携帯端末MDを操作する現実のプレイヤRPLが和了(アガリ)を宣言した場合、どのような役で和了を宣言したのか、その役の点数はいくらかなどを計算するため、サーバ処理部SVPは、ゲームルール記憶部10を参照する。また、現実のプレイヤRPLではなく、仮想的なゲーム空間における仮想プレイヤVPLを実行する場合においても、仮想プレイヤVPLもゲームルールに従ったプレイが必要となるため、サーバ処理部SVPは、ゲームルール記憶部10を参照する。
プレイ方策記憶部20は、ゲームルール記憶部10が記憶するルールに基づいた、それぞれの局面において異なるプレイ方策を記憶する。麻雀ゲームで勝利するためには、上述の<各種1人麻雀について>で説明したように、アガリ方策、形式テンパイ方策、降り方策、包括方策などの局面に応じた複数の方策(戦略)が必要である。したがって、プレイ方策記憶部20は、仮想プレイヤVPLが行うゲームの進行中において、後述する局面判定部40が判定する複数の局面に対応したプレイ方策を記憶するものである。なお、これらのプレイ方策は、麻雀ゲームのルールに基づいた方策でなければならない。
サーバ処理部SVPは、ゲームルール記憶部10およびプレイ方策記憶部20を参照しながら、実際に麻雀ゲームを処理したり実行したり制御したりする、ゲーム進行制御部30、局面判定部40、およびプレイ方策実行部50を含む。ゲーム進行制御部30は、1局面においてそれぞれのプレイヤRPLが行う操作指示を処理し、それぞれのプレイヤRPLおよび仮想プレイヤVPLが行うプレイの実行を行うと共に、複数の局面に亘りゲームの全体の進行を制御する。
より具体的には、ゲーム進行制御部30は、1局面内においては、上述の<抽象化した1人麻雀のルール>で説明した図1に示したようにゲームを進行させる。たとえば、ゲーム進行制御部30は、現実のプレイヤRPLや仮想プレイヤVPLに最初に配牌を行い、startからchanceFへ移行する。chanceFへ移行すると、最大想定打牌回数tmaxまでは、他家が牌を牌山から1枚場に出し牌がフーロ等可能な場合にはplayerFへ移行する。そして、牌に応じてフーロを行う場合にはplayerDに移行し、プレイヤは可能なアガリまたは打牌の一つを選択する。アガリを宣言した場合にはagariTへ移行し、アガリをしない場合プレイヤは牌を1枚捨ててchanceFに戻る。playerFへ移行したがフーロしない場合はchanceTへ移行し、ツモを行う。playerFへ移行し、ロンする場合にはagariRに移行する。agariT、agariRに移行すると、ゲームルール記憶部10に記憶されたルールに基づいて点数(利得)が与えられてゲームが終了する。
また、ゲーム進行制御部30は、複数の局面に亘ってゲームの全体の進行を制御する。複数の局面に亘ったゲーム全体の進行とは、たとえば、半荘は東場と南場各4局すなわち通常合計8局から構成されるが(1局中に複数の和了がある場合もある)、第1局の始めから第8局の終わりまでのことを言う。この詳細については、図9を参照して後述する。
局面判定部40は、これらの複数の局面の中で進行中の局面がいかなる局面であるかを判定する。半荘は8局から構成されるが、麻雀ゲームは、その半荘が終了した時点で勝利(1位)すればよいので、その複数の局の中で、自分が親の場合と子の場合、自分の手牌やツモ状況、他家の打牌やフーロの状況、その時点での順位などから、アガリ方策、形式テンパイ方策、降り方策、包括方策など、その局面に応じた複数の方策(戦略)を取りうるからである。局面判定部40は、仮想プレイヤVPLが行うゲームにおいて、その半荘が終了した時点で勝利することを目的として、プレイ方策記憶部20に記憶された方策を参照し、その方策の中で進行中の局がどのような局面であるかを判定するが、その目的は、ゲーム終了時点で勝利することなので、半荘でもよいし、一荘(16局)、その他の局数であってもよい。
プレイ方策実行部50は、局面判定部40が判定した局面に対応するプレイ方策記憶部20に記憶されたプレイ方策に基づいて、仮想プレイヤVPLが他のプレイヤに対応してプレイを実行する。プレイ方策実行部50が行う1局内のプレイの実行は、ゲーム進行制御部30が行う1局内のゲーム進行と同様であるが、仮想プレイヤVPLが行う打牌などは、判定されたプレイ方策に基づいて行うことになる。たとえば、判定された方策が降り方策であった場合には、仮想プレイヤVPLは、上述の「降り方策1人麻雀」に基づいてゲームの実行を行う。
なお、仮想プレイヤVPLは、通常4人中0〜3人である。仮想プレイヤVPLが0人とは、現実のプレイヤRPLが4人であるが、1局の進行中において、現実のプレイヤRPLが、仮想プレイヤVPLに代指しを部分的に(数回の打牌など)依頼する場合も想定する。したがって、情報処理システム100においては、少なくとも一時点においては、1以上の仮想プレイヤを含むものとする。
サーバ通信部SVCは、ネットワークNWを介して、パーソナルコンピュータPCまたは携帯端末MDと通信を行う。本実施形態における情報処理システム100においては、サーバ装置SVにおいて、ゲームルール記憶部10やプレイ方策記憶部20をサーバ記憶部SVMに、また、ゲーム進行制御部30、局面判定部40およびプレイ方策実行部50をサーバ処理部SVPに有しており、ゲームに関する処理、実行、制御の大部分はサーバ装置SVにおいて行われる。そのため、サーバ通信部SVCとパーソナルコンピュータPCまたは携帯端末MDと間で通信される内容は、サーバ通信部SVCからはその時点における麻雀卓の画面情報とそれに関する管理情報であり、サーバ通信部SVCへは現実のプレイヤRPLが行う打牌やアガリ宣言などの情報である。
図7Cは、パーソナルコンピュータPCのハード構成および機能構成の一例を示す図である。パーソナルコンピュータPCは、CPUやMPUといったPC処理部PCP、ROMやRAM等のメモリデバイス、ハードディスクHDやDVD等のストレージデバイスとといったPC記憶部PCM、上記のネットワークNWと繋がるネットワークインターフェースであるPC通信部PCC、プレイヤRPLが操作するためのキーボードやマウス等のPC操作部PCO、プレイヤRPLに情報を表示するためのディスプレイ等のPC表示部PCDを含み、これらが、内部バス、外部バス、拡張バス等を含むシステムバスといった伝送路を介して互いに接続されたものである。
パーソナルコンピュータPCは、ネットワークNWを経由してサーバ装置SVと通信し、プレイヤRPLに麻雀ゲーム等を表示し、操作を受け付けることができる任意のタイプのユーザデバイスである。たとえば、パーソナルコンピュータPCは、WINDOWS(登録商標)、macOS(登録商標)、LINUX(登録商標)、UNIX(登録商標)、GOOGLE(登録商標)CHROME(登録商標)といったさまざまな異なるオペレーティングシステムをサポートし、実行し得る。なお、これらは例示であり、本発明に係るゲームが実行され得る限り、これらに限定されることはない。
パーソナルコンピュータPCを使用するプレイヤRPLは、PC通信部PCCを経由して、最初サーバ装置SVに接続し、麻雀ゲームを使用し始める。サーバ装置SVが提供する麻雀ゲームが有料の場合など、ログインを行うなど所定の手続きを行うこともある。もちろん、この場合には、サーバ装置SVにも対応する認証用プログラムが必要である。
麻雀ゲームが開始されると、パーソナルコンピュータPCは、PC通信部PCCを経由して、サーバ装置SVから麻雀卓の画面情報とその管理情報を取得し、PC処理部PCPの制御部Prが、PC記憶部PCMにその情報を配置すると共にPC表示部PCDにその画面情報を表示させる。現実のプレイヤRPLは、PC表示部PCDに表示された麻雀卓上の手牌や他家の打牌状況を見ながら、自分の判断で打牌やフーロ、アガリ宣言等をPC操作部PCOを操作することにより行う。パーソナルコンピュータPCは、現実のプレイヤRPLによりPC操作部PCOが操作されると、その操作により指示された内容をPC通信部PCCを経由してサーバ装置SVに送信する。
図7Dは、携帯端末MDのハード構成および機能構成の一例を示す図である。携帯端末MDは、CPUやMPUといった端末処理部MDP、ROMやRAM等のメモリデバイス等の端末記憶部MDM、上記のネットワークNWと繋がるネットワークインターフェースである端末通信部MDC、プレイヤRPLが操作するためのタッチパネル等の端末操作部MDO、プレイヤRPLに情報を表示するためのディスプレイ等の端末表示部MDDを含み、これらが、内部バス等を含むシステムバスといった伝送路を介して互いに接続されたものである。なお、端末操作部MDOと端末表示部MDDは、表示タッチパネル等の共通のデバイスであることが望ましい。
携帯端末MDは、ネットワークNWを経由してサーバ装置SVと通信し、プレイヤRPLに麻雀ゲームを表示し、操作を受け付けることができる任意のタイプのユーザデバイスである。たとえば、携帯端末MDは、モバイルデバイス(たとえば、ラップトップ、スマートフォン、タブレットコンピュータ、等)、専用ゲームデバイス等を含む。携帯端末MDは、WINDOWS(登録商標)、LINUX(登録商標)といったさまざまな異なるオペレーティングシステム、または、WINDOWSMOBILE(登録商標)、GOOGLE(登録商標)ANDROID(登録商標)、MOBILELINUX(登録商標)等を含む任意の他のモバイルオペレーティングシステムをサポートし、実行し得る。なお、これらは例示であり、本発明に係るゲームが実行され得る限り、これらに限定されることはない。
麻雀ゲームが開始されると、携帯端末MDは、端末通信部MDCを経由して、サーバ装置SVから麻雀卓の画面情報とその管理情報を取得し、端末処理部MDPの制御部Prが、端末記憶部MDMにその情報を配置すると共に端末表示部MDDにその画面情報を表示させる。現実のプレイヤRPLは、端末表示部MDDに表示された麻雀卓上の手牌や他家の打牌状況を見ながら、自分の判断で打牌やフーロ、アガリ宣言等を端末操作部MDOを操作することにより行う。携帯端末MDは、現実のプレイヤRPLにより端末操作部PDOが操作されると、その操作により指示された内容を端末通信部MDCを経由してサーバ装置SVに送信する。
上述した情報処理システム100によれば、複数の局面を有する麻雀ゲームにおいて、短期的な1局面毎の勝利だけではなく、複数局面を通した長期的で総合的な勝利を得ることができるプレイヤとして強い仮想プレイヤを含む情報処理システムを提供することができる。
<情報処理装置の例>
以下では、図8A〜図8Dを参照しながら、本発明に係る情報処理装置の例について説明する。なお、重複記載を避けるために、同じ構成要素には同じ符号を付し、上記実施例と異なる点を中心に説明する。図8Aは、情報処理システム100aのシステム構成の一例を示す図である。情報処理システム100aは、ネットワークNWに接続することで相互に通信が可能なファイルサーバFS、情報処理装置200であるパーソナルコンピュータPCa、情報処理装置200である携帯端末MDaと、を含むシステムである。ファイルサーバFSは、麻雀ゲームのプログラムPRGを保持し、情報処理装置200であるパーソナルコンピュータPCaと携帯端末MDaに、プログラムPRGを提供する。パーソナルコンピュータPCaと携帯端末MDaは、ダウンロードしたプログラムPRGを起動し、現実のプレイヤRPLすなわち人に対して麻雀ゲームを処理、実行、管理する。
図8Bは、ファイルサーバFSのハード構成および機能構成の一例を示す図である。ファイルサーバFSは、CPUやMPUといったファイルサーバ処理部FSP、ROMやRAM等のメモリデバイスおよびハードディスクHDやDVD等のストレージデバイスとといったファイルサーバ記憶部FSM、ネットワークNWと繋がるネットワークインターフェースのファイルサーバ通信部FSCを含み、これらが、内部バス、外部バス、拡張バス等を含むシステムバスといった伝送路を介して互いに接続されたものである。ファイルサーバFSは、図示しないが、サーバ管理者等が使用するためのキーボードやマウス等の入力装置、情報を表示するためのディスプイ等の出力装置を備えていてもよい。
ファイルサーバ処理部FSPは、通常1以上のプロセッサ及びその周辺回路を有し、ファイルサーバFSの全体的な動作を統括制御する制御部Prを備え、上述した他の構成要素との間で制御信号及び情報信号(データ)の送受信を行う。ファイルサーバ記憶部FSMは、麻雀ゲームのプログラムPRGを記憶するが、ファイルサーバ処理部FSPは、ファイルサーバ記憶部FSMが記憶する麻雀ゲームを起動することはない。
ファイルサーバ記憶部FSMは、用途に応じた様々な種類のメモリデバイスやストレージデバイスを備える。たとえば、ROMには、一般に、電源投入後、最初に実行されるIPL(Initial Program Loader)が記録されており、これが実行されることにより、ハードディスクHDやDVD等のストレージデバイスに記憶されたプログラムやデータが、制御部Prによって一旦これらを一時的に記憶するためのRAMに書き出され、それらのプログラムが制御部Prによって実行される。ファイルサーバ記憶部FSMに記憶されているプログラムは、オペレーティングシステムプログラムや各種アプリケーションプログラム(ドライバ、サーバ用プログラム、麻雀ゲームのプログラムPRG等を含む)である。オペレーティングシステムプログラムは、MICROSOFT(登録商標)WINDOWS(登録商標)、LINUX(登録商標)、UNIX(登録商標)などであり、ファイルサーバの機能が実行され得る限り特に限定されない。
ファイルサーバFSは、ネットワークNWを経由してパーソナルコンピュータPCaや携帯端末MDaと通信し、使用者に操作されたパーソナルコンピュータPCaや携帯端末MDaの求めに応じ、プログラムPRGをダウンロードさせる。ファイルサーバFSは、これらの機能を行うことのできる任意のタイプのサーバコンピューティング装置である。
ファイルサーバ通信部FSCは、ネットワークNWを介して、パーソナルコンピュータPCaまたは携帯端末MDaと通信を行う。本実施形態における情報処理システム100aにおいては、ファイルサーバFSにおいて、麻雀ゲームのプログラムPRGは、起動されることなく、プログラムPRGは情報処理装置200であるパーソナルコンピュータPCaや携帯端末MDaで起動されるためにダウンロードされる。そのため、ファイルサーバ通信部FSCとパーソナルコンピュータPCaまたは携帯端末MDaとの間で通信される内容は、主にダウンロードされるプログラムPRGと、そのための制御情報である。
図8Cは、パーソナルコンピュータPCaのハード構成および機能構成の一例を示す図である。パーソナルコンピュータPCaは、PC処理部PCP、PC記憶部PCM、PC通信部PCC、プレイヤRPLが操作するためのキーボードやマウス等のPC操作部PCO、プレイヤRPLに情報を表示するためのディスプレイ等のPC表示部PCDを含み、これらが、内部バス等を含むシステムバスといった伝送路を介して互いに接続されたものである。
なお、パーソナルコンピュータPCaは、ファイルサーバFSからダウンロードした麻雀ゲームのプログラムPRGを起動するので、PC処理部PCPの制御部Prは、麻雀ゲームの処理、実行、制御に必要な各種の演算処理を行うように構成されている。パーソナルコンピュータPCaは、ネットワークNWを経由して麻雀ゲームのプログラムPRGをダウンロードし、そのプログラムPRGを起動、処理、実行、制御することができる任意のタイプのユーザデバイスである。
パーソナルコンピュータPCaを使用するプレイヤRPLは、PC通信部PCCを経由して、最初ファイルサーバFSに接続し、麻雀ゲームをダウンロードする。その後、プレイヤRPLは、パーソナルコンピュータPCa上でプログラムPRGを起動し、麻雀ゲームを開始する。パーソナルコンピュータPCaは、麻雀ゲームの全体の進行を制御し、プレイヤRPLに麻雀ゲームをさせたり、プレイヤRPLと仮想プレイヤの対戦を制御したり、仮想プレイヤの麻雀ゲームの実行を制御したりする。パーソナルコンピュータPCaは、これらの制御を行うことのできる任意のタイプのコンピューティング装置である。
PC記憶部PCMは、プログラムPRGがローダーによってロードされたゲームルール記憶部10とプレイ方策記憶部20を有している。PC処理部PCPは、ゲームルール記憶部10およびプレイ方策記憶部20を参照しながら、実際に麻雀ゲームを処理したり実行したり制御したりする、ゲーム進行制御部30、局面判定部40、およびプレイ方策実行部50を含む。これらの構成要素は、上記実施例で述べたとおりなので説明を省略する。
麻雀ゲームが開始されると、パーソナルコンピュータPCaがプログラムPRGをロードし、PC処理部PCPの制御部Prが、PC記憶部PCMにそのプログラム情報を配置すると共に、麻雀卓の画面情報をPC表示部PCDに表示させる。現実のプレイヤRPLは、PC表示部PCDに表示された麻雀卓上の手牌や他家の打牌状況を見ながら、自分の判断で打牌やフーロ、アガリ宣言等をPC操作部PCOを操作することにより行う。パーソナルコンピュータPCaは、現実のプレイヤRPLによりPC操作部PCOが操作されると、その操作により指示された内容をPC処理部PCPで処理する。PC処理部PCPは、ゲーム進行制御部30を有しているので、麻雀ゲームの全体の進行を制御する。また、PC処理部PCPは、局面判定部40およびプレイ方策実行部50を有しているので、仮想的なゲーム空間における仮想プレイヤVPLのプレイを実行する。麻雀ゲームは通常4人で行うので、パーソナルコンピュータPCaは、1人の現実のプレイヤRPLと3人の仮想プレイヤVPLが対戦する仮想的な場(空間)を提供する。
図8Dは、携帯端末MDaのハード構成および機能構成の一例を示す図である。携帯端末MDaは、端末処理部MDP、端末記憶部MDM、端末通信部MDC、プレイヤRPLが操作するためのタッチパネル等の端末操作部MDO、プレイヤRPLに情報を表示するためのディスプレイ等の端末表示部MDDを含み、これらが、内部バス等を含むシステムバスといった伝送路を介して互いに接続されたものである。なお、端末操作部MDOと端末表示部MDDは、表示タッチパネル等の共通のデバイスであることが望ましい。
なお、携帯端末MDaは、ファイルサーバFSからダウンロードした麻雀ゲームのプログラムPRGを起動するので、端末処理部MDPの制御部Prは、麻雀ゲームの処理、実行、制御に必要な各種の演算処理を行うように構成されている。携帯端末MDaは、ネットワークNWを経由して麻雀ゲームのプログラムPRGをダウンロードし、そのプログラムPRGを起動、処理、実行、制御することができる任意のタイプのモバイルデバイスである。
携帯端末MDaを使用するプレイヤRPLは、端末通信部MDCを経由して、最初ファイルサーバFSに接続し、麻雀ゲームをダウンロードする。その後、プレイヤRPLは、携帯端末MDa上でプログラムPRGを起動し、麻雀ゲームを開始する。携帯端末MDaは、麻雀ゲームの全体の進行を制御し、プレイヤRPLに麻雀ゲームをさせたり、プレイヤRPLと仮想プレイヤの対戦を制御したり、仮想プレイヤの麻雀ゲームの実行を制御したりする。携帯端末MDaは、これらの制御を行うことのできる任意のタイプのモバイルコンピューティング装置である。
端末記憶部MDMは、プログラムPRGがローダーによってロードされたゲームルール記憶部10とプレイ方策記憶部20を有している。端末処理部MDPは、ゲームルール記憶部10およびプレイ方策記憶部20を参照しながら、実際に麻雀ゲームを処理したり実行したり制御したりする、ゲーム進行制御部30、局面判定部40、およびプレイ方策実行部50を含む。これらの構成要素は、上記実施例で述べたとおりである。
麻雀ゲームが開始されると、携帯端末MDaがプログラムPRGをロードし、端末処理部MDPの制御部Prが、端末記憶部MDMにそのプログラム情報を配置すると共に、麻雀卓の画面情報を端末表示部MDDに表示させる。現実のプレイヤRPLは、端末表示部MDDに表示された麻雀卓上の手牌や他家の打牌状況を見ながら、自分の判断で打牌やフーロ、アガリ宣言等を端末操作部MDOを操作することにより行う。携帯端末MDaは、現実のプレイヤRPLにより端末操作部MDOが操作されると、その操作により指示された内容を端末処理部MDPで処理する。端末処理部MDPは、ゲーム進行制御部30を有しているので、麻雀ゲームの全体の進行を制御する。また、端末処理部MDPは、局面判定部40およびプレイ方策実行部50を有しているので、仮想的なゲーム空間における仮想プレイヤVPLのプレイを実行する。麻雀ゲームは通常4人で行うので、携帯端末MDaは、1人の現実のプレイヤRPLと3人の仮想プレイヤVPLが対戦する仮想的な場(空間)を提供する。
上述した情報処理装置200(パーソナルコンピュータPCaや携帯端末MDa)によれば、複数の局面を有する麻雀ゲームにおいて、短期的な1局面毎の勝利だけではなく、複数局面を通した長期的で総合的な勝利を得ることができるプレイヤとして強い仮想プレイヤを含む情報処理装置を提供することができる。
<情報処理方法の例>
図9と図8A〜Dを参照し、本発明に係る情報処理装置200である携帯端末MDaにおける情報処理方法の概要を説明する。なお、フローチャートにおける“S”はステップを意味する。この情報処理方法の例では、半荘(8局)の麻雀ゲームを例にする。現実のプレイヤRPLが携帯端末MDaにおいて麻雀ゲームを起動すると、プログラムPRGのプログラム情報が読み込まれ、ゲームルール記憶部10とプレイ方策記憶部20が端末記憶部MDMに配置され、端末処理部MDPにおいてゲーム進行制御部30、局面判定部40、プレイ方策実行部50が実行可能な状態となる。
ゲーム進行制御部30は、S100において、プレイヤRPLとその他の仮想プレイヤVPLの座席を決める。決め方は、どのようなものであってもよいが、たとえば、東・南・西・北などの牌とサイコロを操作することにより、それぞれの座席を決定する。座席が決定したら、ゲーム進行制御部30は、S102において、起家を決める。この決め方もどのようなものであってもよいが、たとえば、東のプレイヤがサイコロを1回振って仮親を決め、仮親がもう1回サイコロを振って、仮親から反時計まわりに数えて、サイコロの目の位置に当たるプレイヤが起家となる。
起家が決まったら、ゲーム進行制御部30は、S104において、親が14枚、子が13枚ずつとなるように牌を配給(配牌)する。端末表示部MDDは、麻雀卓を現実のプレイヤRPLから見た位置から自身の手牌と場が見えるように画面に表示する。ゲーム進行制御部30は、S106において、今の番である親が仮想プレイヤVPLであるか否かをチェックする。今の番が現実のプレイヤRPLである場合、ゲーム進行制御部30は、S126において、プレイヤRPLの打牌の入力を待つ。そして、プレイヤRPLが打牌する牌をタッチパネル等の端末操作部MDOから指示されると、ゲーム進行制御部30は、指示された牌を場に切る処理を行う。
ゲーム進行制御部30がS106において今の番が仮想プレイヤVPLであると判断した場合、局面判定部40は、S200において、今の局面がどのような局面かを判定する。どのように判定するかを、図5を参照して説明する。局面判定部40は、S202において、仮想プレイヤVPL自身の手牌が4シャンテン以上か否かをチェックする。通常配牌直後は、4シャンテン以上である場合が多いが、その場合、局面判定部40は、S204において、場においてリーチか2フーロした他家がいるか否かをチェックする。通常配牌直後には、そのような他家はいないので、S206において、局面判定部40は、今の局面はルールベースでゲームを行う局面であると判定する。また、1局がある程度進行し、場においてリーチか2フーロした他家がいる場合は、S208において、局面判定部40は、今の局面は降り方策でゲームを行う局面であると判定する。
1つの局もある程度進行すると、仮想プレイヤVPLの手牌も4シャンテン未満になってくる。その場合、局面判定部40は、S202においてNOと判定するので、S210において、仮想プレイヤVPLの手牌が1シャンテン以下か、すなわち1シャンテンまたはテンパイしている場合か否かをチェックする。そのいずれかである場合、局面判定部40は、S212において、今の局面は包括方策でゲームを行う局面であると判定する。
2シャンテン以上の場合、局面判定部40は、S214において、リーチかフーロした他家がいるか否をチェックする。そのような他家がいない場合、局面判定部40は、S216において、今の局面はアガリ方策でゲームを行う局面であると判定する。そのような他家がいる場合には、局面判定部40は、S218において、各種1人麻雀の結果を特徴とする価値推定を行う。価値推定のしかたは、図6に示され、上記の<1人麻雀の結果を特徴とする価値推定>で説明したとおりである。
S200において局面判定部40が判定すると、プレイ方策実行部50は、S110において、プレイ方策記憶部20に記憶され、局面判定部40が判定したそれぞれのプレイ方策に基づいて他家に対応してプレイを実行する。S110において仮想プレイヤVPLが、またはS126において現実のプレイヤRPLが自分の番を実行した場合、ゲーム進行制御部30は、S112において、アガリのプレイヤがいるか否かをチェックする。アガリのプレイヤがいない場合、ゲーム進行制御部30は、S128において、打牌回数が最大想定打牌回数tmaxに到達したか否かをチェックする。まだ最大想定打牌回数tmaxに到達していない場合、ゲーム進行制御部30は、次の番のプレイヤに番を回し、S106に戻り、上記をのステップを繰り返す。最大想定打牌回数tmaxに到達した場合、ゲーム進行制御部30は、S130において、進行していた局を流局とする(本例では、形式テンパイは考慮しないものとする)。
S112においてアガリ(和了)のプレイヤがいる場合、ゲーム進行制御部30は、S114において、ゲームルール記憶部10に記憶されている麻雀のルールを参照し、アガリ役の判定とその点数を計算する。和了したプレイヤが親であった場合すなわち子でなかった場合親を連荘するため、ゲーム進行制御部30は、S104に戻り、東1局として上記のステップを繰り返す。和了したプレイヤが子であった場合、ゲーム進行制御部30は、S118において下家に親を交代し、S120において東2局として局を進める。ゲーム進行制御部30は、上記のステップを繰り返し、局を進めて南場になり、さらに局を進めていき、S122において、進行中の局が南4局か否かをチェックする。南4局でアガリがあるまでは、S104に戻り、ゲームを進行させる。南4局で和了があった場合、ゲーム進行制御部30は、S124において、その時点で4人がそれぞれ持っている点数から順位を決定する。
上述したことは、少なくとも一時点において1以上の仮想プレイヤを含む3人以上のプレイヤが、いずれかの勝利が決定されるまでの進行において複数の局面を有する麻雀ゲームを実行する情報処理方法であって、その仮想プレイヤが、複数の局面の中で進行中の局面がいかなる局面であるかを判定することと、判定した局面に対応し、ゲームのルールに従ったプレイ方策に基づいて、他のプレイヤに対応してプレイを実行することとを含む情報処理方法である。また、これらの方法を含むプログラムPRGを記憶したコンピュータ読み取り可能な情報記憶媒体を提供してもよい。これらによれば、複数の局面を有する麻雀ゲームにおいて、短期的な1局面毎の勝利だけではなく、複数局面を通した長期的で総合的な勝利を得ることができるプレイヤとして強い仮想プレイヤを含む情報処理方法およびこれをハードウェアに機能させるプログラムおよびそのプログラムを含むコンピュータ読み取り可能な情報記憶媒体を提供することができる。
なお、本発明は、例示した実施例に限定するものではなく、特許請求の範囲の各項に記載された内容から逸脱しない範囲の構成による実施が可能である。すなわち、本発明は、主に特定の実施形態に関して特に図示され、かつ説明されているが、本発明の技術的思想および目的の範囲から逸脱することなく、以上述べた実施形態に対し、数量、その他の詳細な構成において、当業者が様々な変形を加えることができるものである。
100 情報処理システム
200 情報処理装置
10 ゲームルール記憶部
20 プレイ方策記憶部
30 ゲーム進行制御部
40 局面判定部
50 プレイ方策実行部
NW ネットワーク
SV サーバ装置
SVC サーバ通信部
SVP サーバ処理部
SVM サーバ記憶部
HD ハードディスク
PC パーソナルコンピュータ
PCC PC通信部
PCP PC処理部
PCM PC記憶部
PCO PC操作部
PCD PC表示部
MD 携帯端末
MDC 端末通信部
MDP 端末処理部
MDM 端末記憶部
MDO 端末操作部
MDD 端末表示部
FS ファイルサーバ
FSC ファイルサーバ通信部
FSP ファイルサーバ処理部
FSM ファイルサーバ記憶部
PRG プログラム
RPL 実プレイヤ(人)
VPL 仮想プレイヤ

Claims (6)

  1. 少なくとも一時点において1以上の仮想プレイヤを含む3人以上のプレイヤがゲームを実行する情報処理システムにおいて、
    前記ゲームは、前記プレイヤのいずれかの勝利が決定されるまでの進行において複数の局面を有し、
    前記ゲームのルールを記憶するゲームルール記憶部と、
    前記ゲームルール記憶部が記憶するルールに基づいた、それぞれの前記局面において異なるプレイ方策を記憶するプレイ方策記憶部と、
    前記複数の局面の中で進行中の局面がいかなる局面であるかを判定する局面判定部と、
    前記局面判定部が判定した局面に対応する前記プレイ方策記憶部に記憶されたプレイ方策に基づいて、前記仮想プレイヤが他のプレイヤに対応してプレイを実行するプレイ方策実行部と、
    を備える情報処理システム。
  2. 前記ゲームは、麻雀であり、
    前記プレイ方策記憶部に記憶されるプレイ方策は、少なくとも、降り方策、アガリ方策、形式テンパイ方策、包括方策、および価値推定方策を含み、
    前記価値推定方策は、前記プレイ方策記憶部に記憶される他のプレイ方策において算出した結果の全部または一部を特徴量とし、機械学習を用いてアガリ確率、形式テンパイ確率、放銃確率を推定して価値推定を行う、
    ことを特徴とする請求項1に記載の情報処理システム。
  3. 少なくとも一時点において1以上の仮想プレイヤを含む3人以上のプレイヤがゲームを実行する情報処理装置において、
    前記ゲームは、前記プレイヤのいずれかの勝利が決定されるまでの進行において複数の局面を有し、
    前記ゲームのルールを記憶するゲームルール記憶部と、
    前記ゲームルール記憶部が記憶するルールに基づいた、それぞれの前記局面において異なるプレイ方策を記憶するプレイ方策記憶部と、
    前記複数の局面の中で進行中の局面がいかなる局面であるかを判定する局面判定部と、
    前記局面判定部が判定した局面に対応する前記プレイ方策記憶部に記憶されたプレイ方策に基づいて、前記仮想プレイヤが他のプレイヤに対応してプレイを実行するプレイ方策実行部と、
    を備える情報処理装置。
  4. 少なくとも一時点において1以上の仮想プレイヤを含む3人以上のプレイヤが、いずれかの勝利が決定されるまでの進行において複数の局面を有するゲームを実行する情報処理装置を、
    前記ゲームのルールを記憶するゲームルール記憶部と、
    前記ゲームルール記憶部が記憶するルールに基づいた、それぞれの前記局面において異なるプレイ方策を記憶するプレイ方策記憶部と、
    前記複数の局面の中で進行中の局面がいかなる局面であるかを判定する局面判定部と、
    前記局面判定部が判定した局面に対応する前記プレイ方策記憶部に記憶されたプレイ方策に基づいて、前記仮想プレイヤが他のプレイヤに対応してプレイを実行するプレイ方策実行部と、
    して機能させるためのプログラム。
  5. 請求項4に記載のプログラムを記憶したコンピュータ読み取り可能な情報記憶媒体。
  6. 少なくとも一時点において1以上の仮想プレイヤを含む3人以上のプレイヤが、いずれかの勝利が決定されるまでの進行において複数の局面を有するゲームを実行する情報処理方法であって、
    前記仮想プレイヤが、
    前記複数の局面の中で進行中の局面がいかなる局面であるかを判定することと、
    判定した局面に対応し、前記ゲームのルールに従ったプレイ方策に基づいて、他のプレイヤに対応してプレイを実行することと、
    を含む情報処理方法。
JP2017213819A 2017-11-06 2017-11-06 情報処理システム、情報処理装置、情報処理方法、プログラム、および情報記憶媒体 Pending JP2019083997A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017213819A JP2019083997A (ja) 2017-11-06 2017-11-06 情報処理システム、情報処理装置、情報処理方法、プログラム、および情報記憶媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017213819A JP2019083997A (ja) 2017-11-06 2017-11-06 情報処理システム、情報処理装置、情報処理方法、プログラム、および情報記憶媒体

Publications (1)

Publication Number Publication Date
JP2019083997A true JP2019083997A (ja) 2019-06-06

Family

ID=66761564

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017213819A Pending JP2019083997A (ja) 2017-11-06 2017-11-06 情報処理システム、情報処理装置、情報処理方法、プログラム、および情報記憶媒体

Country Status (1)

Country Link
JP (1) JP2019083997A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021029918A (ja) * 2019-08-29 2021-03-01 株式会社ドワンゴ ゲーム支援装置および動画配信装置
JP7358661B1 (ja) 2023-01-31 2023-10-10 株式会社ドワンゴ ゲーム支援装置、ゲーム支援システム、ゲーム支援方法、プログラム、及び記録媒体
JP7358662B1 (ja) 2023-01-31 2023-10-10 株式会社ドワンゴ ゲーム支援装置、ゲーム支援システム、ゲーム支援方法、プログラム、及び記録媒体

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003053044A (ja) * 2001-08-21 2003-02-25 Yafoo Japan Corp 対戦型ネットワークゲームシステム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003053044A (ja) * 2001-08-21 2003-02-25 Yafoo Japan Corp 対戦型ネットワークゲームシステム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
栗田 萌 MOYURU KURITA, 情報処理学会 シンポジウム ゲームプログラミングワークショップ(GPWS) 2017 [ONLINE, JPN6021023176, 3 November 2017 (2017-11-03), ISSN: 0004672146 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021029918A (ja) * 2019-08-29 2021-03-01 株式会社ドワンゴ ゲーム支援装置および動画配信装置
JP7358661B1 (ja) 2023-01-31 2023-10-10 株式会社ドワンゴ ゲーム支援装置、ゲーム支援システム、ゲーム支援方法、プログラム、及び記録媒体
JP7358662B1 (ja) 2023-01-31 2023-10-10 株式会社ドワンゴ ゲーム支援装置、ゲーム支援システム、ゲーム支援方法、プログラム、及び記録媒体

Similar Documents

Publication Publication Date Title
Jiang et al. DeltaDou: Expert-level Doudizhu AI through Self-play.
Andersen et al. Deep RTS: a game environment for deep reinforcement learning in real-time strategy games
García-Sánchez et al. Evolutionary deckbuilding in hearthstone
Walton-Rivers et al. Evaluating and modelling hanabi-playing agents
JP5388016B1 (ja) ゲーム制御方法、ゲーム制御装置及びプログラム
US11395966B2 (en) Generating game configurations
Justesen et al. Playing multiaction adversarial games: Online evolutionary planning versus tree search
JP2019083997A (ja) 情報処理システム、情報処理装置、情報処理方法、プログラム、および情報記憶媒体
Cerny et al. Rogue-like games as a playground for artificial intelligence–evolutionary approach
Kowalski et al. Evolutionary approach to collectible arena deckbuilding using active card game genes
Kowalski et al. Summarizing strategy card game AI competition
Kowalski et al. Evolutionary approach to collectible card game arena deckbuilding using active genes
Liaw et al. Evolving a team in a first-person shooter game by using a genetic algorithm
JP6854787B2 (ja) 端末装置、コンピュータ、制御方法、及び制御プログラム
Wu et al. AlphaZero-based proof cost network to aid game solving
Vieira et al. Reinforcement learning in collectible card games: Preliminary results on legends of code and magic
JP2015003053A (ja) ゲーム制御方法、ゲーム制御装置及びプログラム
JP6203035B2 (ja) ゲーム制御方法、ゲーム制御装置及びプログラム
Gaina et al. General win prediction from agent experience
Chia et al. Designing card game strategies with genetic programming and monte-carlo tree search: A case study of hearthstone
JP6391733B2 (ja) 端末装置、制御方法及びプログラム
JP6100966B2 (ja) ゲーム制御方法、ゲーム制御装置及びプログラム
JP2016010721A (ja) ゲーム制御方法、ゲーム制御装置及びプログラム
JP5444498B1 (ja) ゲーム制御方法、ゲーム制御装置及びプログラム
JP7272939B2 (ja) ゲーム制御方法、ゲーム制御装置及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200820

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210611

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210629

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20220104