ユーザーブロマガは2021年10月7日(予定)をもちましてサービスを終了します

  • 同人ゲーム「ReinforcementPoker」

    2017-03-26 15:49

    お久しぶりです、deraです。あまり書くネタとモチベーションがなかったので、しばらく休んでいましたがComicMarcket90,91で僕のサークルの崩壊世界部で頒布した「ReinforcementPoker」について話していきたいと思います。半年前に出したゲームの解説を今更するのか(呆れ)



    どんなゲーム?

    テキサスホールデムポーカーとゲームAIを題材にしたゲームです。
    テキサスホールデムポーカーとは、各プレイヤーが手札に5枚カードを持ってその中で役を作るドローポーカーとは違って、各プレイヤーのハンド(手札のカードのこと)は2枚のみで5枚のカードが公開されるので、計7枚を使って役を作る形式のゲームです。(以下、イメージ図)


    このテキサスホールデムポーカーは、アメリカではプロ同士のゲームがテレビ中継されるほど人気のゲームでもあります。(テキサスホールデムの詳細なルールはこの辺りを参照していただければと思います)

    「ReinforcementPoker」の方について話を戻すと、このゲームのメインコンセプトは、「ポーカーするAIを育てて強くする」 ことです。それだけだと「え?AIと戦うんじゃなくて育てる?どういうこと?」等思われることだと思うので、もう少し掘り下げて話していきます。
    このゲームにはAIちゃんというキャラクターがいて、その子と以下の3つのモードで遊ぶことができます。ちなみに、↓がAIちゃんです。



    • AIをそだてる(育成モード)
      • AIちゃんにテキサスホールデムポーカーの戦い方を教えるモードです。
    • AIとたたかう(対戦モード)
      • 育てたAIちゃんとヘッズアップ(1対1のこと)での対戦を行うモードです。
    • AIをたたかわせる(他のAIと戦うモード)
      • 育てたAIちゃんを他のAIとヘッズアップで対戦させるモードです。対戦中に育成モードと同じようにアドバイスをすることが可能です。

    基本的な遊び方としては、「AIをそだてる」で遊んでから、「AIとたたかう」もしくは「AIをたたかわせる」を遊ぶのがオススメです。「AIをそだてる」をやらずに「AIとたたかう」もしくは「AIをたたかわせる」で遊ぶこともできますが、ポーカーの戦い方を知らない状態のAIちゃんと戦うor戦わせることになるのであまり面白くないはないかなぁと思います。
    つまり、「AIをそだてる」がこのゲームの肝になっています。

    AIをそだてる

    ここでは「AIをそだてる」について詳しく話していきます。このモードでは以下の画面のようにAIちゃんのハンドが見えるようになっていて、この状態でAIちゃんとヘッズアップでポーカーを行います(もちろん、通常のポーカーでは相手のハンドが見えないようになってますw)



    これは次の画面のようにAIちゃんの行動に対して、プレイヤーにリアクションしてもらうためです。



    冗談のように思われるかもしれませんが、このリアクションによってAIちゃんを育てていきます。AIちゃんには、強化学習アルゴリズムというものが入っていて、ほめるを選択することによって同様の状況に再度出くわした時にまたその行動をとりやすくなり、しかるを選択することによって同様の状況に再度出くわした時その行動をとりずらくなります。また、勝敗結果からも学習してくれて、勝った時の行動をとりやすく、負けた時の行動をとりにくくなります。と言っても、数十回教えた程度ではAIちゃんのプレースタイルに大きな変化は起きないので、大きな変化を起こすには何百、何千回も繰り返し教えてあげる必要があります。

    学習に時間がかかるものの、ハンドが見えていることによっていろいろな育て方をすることが可能です。プレイヤーがよくとる行動をほめて、取らない行動を叱ることによって、AIちゃんのプレイスタイルをプレイヤーのコピーみたいにすることもできます。また、ハンドが見えている状態なので積極的にブラフを仕掛けていってAIちゃんにブラフに騙されない練習をさせることもできます。

    育成結果は、ステータス確認モードで確認することができ、理想通り育っているかどうかを見ることもできます。

    AIとたたかう

    このモードでは、通常のヘッズアップのポーカーで育てたAIちゃんと戦います。

    このモード中は、AIちゃんの行動に対してほめたり叱ったりはできません(ただし、勝敗結果での学習は育成モード同様に行われています)このモードは、主に育てたAIちゃんがどこまで強くなったかを確かめるためもしくはプレイヤーが純粋にポーカーを楽しむためのものと言えると思います。

    AIをたたかわせる

    このモードでは、通常のヘッズアップのポーカーで育てたAIちゃんを他のAIと戦わせます。

    このモードでは以下の3種類のAIがでてきます(積極的にネタバレをしていくスタイル)

    • どんなハンドでも必ずこちらが賭けた額に降りずに乗ってくるAI(必ずコールするAI)
    • ハンドが強ければ打ち続けて、弱ければすぐ降りるAI(正直者AI)
    • AIちゃんと同様に学習するAI(ただし、必ずコールするAIと3000回くらいのシミュレーションを完了させた状態なのでかなり強い)

    また、ver2.0から追加されたネット対戦モードというものがあって、こちらのモードでは他のプレイヤーが育てたAIちゃんと自分のAIちゃんを戦わせることができます。UI的にほとんど作り込みができていませんが。。

    お知らせ・宣伝

    ここまで、ゲームの内容について話してきましたが、最後に宣伝して終わりたいと思います。

    4月29、30日の超技術書典に崩壊世界部も出店することになりました!頒布内容は以下の通りです。

    • ReinforcementPokerのゲームAIの解説本(ゲーム付き)

    技術書典なので、今回は本の販売がメインで、ゲームはおまけみたいな感じになってます。。場所等詳細な情報はまだ決定していないので、決まり次第ブロマガもしくは崩壊世界部のサイトで告知したいと思います。技術書の執筆は僕としてはこれが初なのでしっかりとしたものが書けるかどうかは微妙なところですが、頑張って書いてみようと思います。


  • 広告
  • シンガポールのカジノで400SGD程溶かしてきた話

    2015-12-14 03:30
    こんばんは、お久しぶりです。でらです。

    Texas Hold'em Poker Advent Calendar 2015で13日目を担当することになったので、ポーカー(テキサスホールデム)に関する話を軽く書こうかなと思います(遅刻してしまってすみません)。

    実は先日、シンガポールに旅行してきたのですが、その時に向こうのカジノ(マリーナ・ベイ・サンズ・カジノとリゾート・ワールド・セントーサ・カジノ)で計400SGD(※1)溶かしてしまったのですが、その時の話でもしようかなと思います。
    ※1SGDは、日本円に換算すると約86円らしいです

    マリーナ・ベイ・サンズ・カジノでお金を溶かした話

    損失:100SGD



    まず、マリーナ・ベイ・サンズという屋上にでかいプールがあるホテルの中にカジノがあったので、そこでポーカーをするつもりでカジノ内に入場しました。
    ちなみに、カジノ内には外国人はパスポート提示必須ですが無料で入場できて、国内の人は入場するだけで100SGDかかるそうです。そのせいか、入場している人のほとんどが観光客みたいでした。

    マリーナ・ベイ・サンズ・カジノは、4階層で構成されていて、1,2階が低・中レート、3階が高レート、4階が超高レートみたいな感じでした(雰囲気だけで既に高級感が漂っていたので、実際に3,4階には行きませんでしたが。。)。
    とりあえずテキサスホールデムで稼ごうと意気込んで行ったのはいいのですが、このカジノには肝心のテキサスホールデムをやる場所がありませんでした。。(ノД`)・゜・。

    仕方がないので、テキサスホールデムっぽいゲームはないか探してみたところ、「PROGRESSIVE TEXAS HOLD'EM POKER」というそれっぽいものがあったのでやってみることにしました。バイインやブラインドの額も知らずに。。
    そして、少し多いかなと思いつつディーラーしかいない卓に行って50SGDを出して「参加したい」と言ったところ、「いや、最低参加額は75SGDだよ」とディーラーに言われ、ファッ!?となりましたが、まあそれくらい払えば少なくとも30分くらい遊べるのかなと思って100SGD支払いました。
    そうしたら、25チップを4枚だけ渡されて、「あれ?細かいのないの?」とか思ってたら、「アンティ25チップ払えよ」とディーラーに言われて、そこで初めて「あ、これやばいやつだ」と気づきました(我ながら大分アホですね。。)。
    1ハンドもプレイせずに帰るのもあれだったので、2,3ハンドだけプレイして帰ろうとしましたが、ゲームは1ハンドだけで終わってしまいました。当然、僕の負けで。。。
    内容は以下の通りです。

    • プリフロップ

    ハンドは、K9○
    そこそこ強いけど一旦コールしておこうかと思いましたが、コールには50SGDが必要だそうで、ここで降りたらプレイできるハンドが残り1ハンドしかなく、これよりいいハンドが来る確率は低そうだったので、しぶしぶコールしました。

    • フロップ

    ボードは、10, 9, 7
    ミドルヒットでしたが、ランダムハンドには勝てるのではないかという目論見とチップ量的に降りても仕方がなかったので、ここでオールインしました。

    • ターンとリバー

    ボードは、10, 9, 7, 6, ?(リバーのカードは忘れてしまいました)

    ここで、ショーダウンでディーラーのハンドがオープンとなり、1枚目が6で「お、まだ勝ってる。いけるか?」と思っていたら、2枚目が8でストレートとなり、ディーラーの勝ちで僕はスタックは0になりゲーム終了しました。確かにストレートができやすいボード+ディーラーがランダムハンドなので仕方ない気はしますね。。あれ積み込みなんじゃないかと今でも思っていますが。

    ここでの反省点
    PROGRESSIVE TEXAS HOLD'EM POKERのルールと、バイイン・ブラインド額を把握していなかったこと。
    ちなみに僕のプレーした卓がこのカジノの
    PROGRESSIVE TEXAS HOLD'EM POKER卓における最小ブラインド卓だそうです。。ルールについてはこちらの動画を参照していただきたいです。


    リゾート・ワールド・セントーサ・カジノでお金を溶かした話

    損失:300SGD




    次は、シンガポールの南側にセントーサ島という島全体がリゾート地になっている島(東京でいうところのお台場みたいな所)にもカジノがあるそうなので、懲りずにこちらのカジノにも行ってみることにしました。
    今度は前回の反省を生かして、こちらのカジノにはテキサスホールデムが存在することと最小ブラインドが5SGD/10SGD,バイインが300SBDとマリーナ・ベイ・三途のカジノよりも安く遊べることをしっかり確認してから向かいました。

    リゾート・ワールド・セントーサ・カジノはセントーサの地下の方に位置し、三途のカジノと同じように外国人はパスポートさえ提示すれば無料で入場できました。
    こちらのカジノは1階層のみで構成されていて、1階層がやたら広い感じでした。それでテキサスホールデムができる場所はというと入り口から見て、一番奥の方にありました。

    卓は全部で7卓あり、ブラインドが5SGD/10SGDの所に入り、ここまでは予定通りでした。
    しかし、バイインが最小300/最大1500SGDと「あれ?話が違うよ?」と思って大分動揺しましたが、手元に350SGDしかなかったので300SGD分だけチップを購入しました。
    そして、卓に着いた所、ほとんどのプレイヤーのバイイン額が1500SGDで、「あ、これやばいやつだ(2回目)」と悟ってしまいました。
    ただ、卓の雰囲気はそんなにピリピリしているわけでなく、日本のポーカーハウスのように割とフレンドリーな雰囲気でした。プレイヤーは半分東洋の人、半分欧米の人といった感じでした。あと、80歳くらいのバーチャンもいてビックリしました(もっと言えばこのバーチャンのプレースタイルがルーズアグレッシブだったことにさらにビックリさせられましたが)。

    最終的な結果は上記の通り300SGD全て溶かして終了したのですが、印象に残っているプレーだけ以下に記載しようと思います。


    幻のストフラ
    この時、スタックが280SGD程度、ハンドがJc9c(cはクローバー)で、ポジションはボタンの1個前くらいでした。
    割とプリフロでのレイズが少ない卓だったのでこれはコールで着いていけると思っていたら、ザガンの人が45SGDほどあげてきてそれに2人もついていったので、「あ、これは無理だ」と思ってフォールドしてしまいました。そうした所、フロップのボードが10c, 8c, A?となりました。

    ターンでK?(クローバー以外)、リバーでQcが落ちて、内心「うわああああぁぁぁぁぁぁぁぁ」という感じになってしまいましたが、「ターンですごい100SGDくらいうちあってたし、プリフロでついていってもどうせフォールドしてたよ」と自分を無理やり納得させていました。
    AAでの復活
    スタックが少しずつ減っていて、この時のスタックが140SGD程度でしたが、この時のハンドが上記の通りAAでした。
    僕の前に2人がコールしていて、僕はここで3BBほどレイズしました。そうしたところ、常に僕のレイズについてきていたアグッレシブバーチャンも降りてくれて、フロップ時点でのプレイヤーは先にコールした2人と僕の計3人だけになり、悪くない人数になりました。
    ボードは確かQ,8,3と、フラッシュやストレートも作りづらいボードでした。
    他のプレイヤーがベットしてきたので、セットが怖いという気持ちはありましたが残りチップが少ないので間髪入れずにレイズオールインを仕掛けました。相手は大分悩んでいましたが、コールしてきてついでにターンでAが落ちてくれたので、勝つことができて、スタックを初期スタックくらいまで回復させることができました。
    なぜかこのカジノでは、オールイン時でもショーダウンは5枚めくれてから行うという形式で、マックすることも可能だったので、相手のハンドを知ることはできませんでしたが。
    ブラフ失敗
    この時も少しスタックが若干減っていて、残りスタックが220SGDくらいという状態でした。
    ハンドはA5sで悪くはない感じでした。それで、1人しかコールしていなかったので僕は2~3BBくらいレイズしました。後ろにいたアグレシッブバーチャンと先にコールしていた人がついてきて3人でのプレーになりました。
    フロップのボードは覚えていませんでしたが、ローボードだったので、誰も当たってないだろうなと思って、ポッドの30~40%くらいベットしましたが、全員についてこられました。
    ターンは、相変わらずローカードでしたがうつのが怖かったので、チェックで回したところ、みんなチェックしてくれてリバーに移れました。
    リバーでKが落ちて、僕はノーヒットな状況でしたが、1人がチェックで回してくれたので、どうせアグレシッブバーチャンは当たってないだろうし、前の人も当たってなさそうだなと思い、多めに65SGDくらい入れました。
    そうしたところ、バーチャンはフォールドしてくれて、「よし勝った」と思っていたら、前の人にコールされました。そして、その人はKヒットでした。。
    いやぁ、キング持ってないとか甘い考えでしたね。。これがこの日一番のミスだったと思います。
    ラストハンド
    残りスタック110SGDでもうオールインしか手がない状況でした。ここで10ポケットがきたので、すかさずオールインを仕掛けました。案の定、アグレッシブバーチャンはついてきましたが、別の結構固く打っていた人がリレイズオールインを仕掛けてきて、バーチャンが降りてヘッズアップとなりました。この時点で相手のハンドがKポケットかAポケットな気はしていたので、負けは覚悟していました。
    ボードははっきりと覚えていませんでしたが、8,9が落ちていて10は落ちませんでした。なので、8ポケや9ポケにも負けている状況で敗色は大分濃厚でした、野球で例えるのであれば33-4くらいに。
    5枚めくれてショーダウンとなり、相手のハンドは予想通りKポケットで僕のスタックは0となってしまい、サムネのような顔をしながら、カジノから退場していきました。

    ここでの反省点
    • ロックにプレイしきれなかったこと
    基本プレミアムハンドorポケットでレイズorレイズへのコール、オリジナルレイザーがいない+参加者が少なければAxやスーテッドコネクタでもレイズというプレーをしていたのですが、
    スタックが最初から少ないこともあってレイズに対して毎回2~4人くらいに即コールされましたね。。。そんなルーズな感じの卓ではなかったんですがね。。
    簡単についてきてくれる状況だったので、ひたすらプレミアムハンドを待って、その時だけプレーするというスタイルでいけばよかったなと反省しています。。
    • 所持金が少なかったこと
    一番の敗因のような気がしますが、こればっかりは仕方ない気がしますね。。。


    まとめ

    シンガポールのカジノで本気で稼ぐつもりでテキサスホールデムをする際は、冗談抜きで25~30万円くらい用意したほうがいいと思いました。それだけあれば、最大バイインでスタートができて且つ1回リバイする余裕もあるので。最低でも最大バイイン分13~14万円くらいはほしいかなと思いました。
    ポーカーは金持ちでないと勝てないゲームだなとつくづく実感させられました。

  • ハッカドールのパズル対戦 宣伝と作成秘話的な何か

    2014-12-28 22:03
    こんばんは、でらです。

    1つ前の記事で新しく作成しましたゲームの紹介をさせていただきましたが、この度そのゲームがマスコットアプリ文化祭で「ハッカドール賞」を受賞いたしました。
    え?1つ前の記事は淫夢記事だろって?ちょっと何を言っているのか分からないですね




    また、本作品をコミックマーケット87の3日目に同人ゲームサークル【人工片吟】で出展させていただくことになりました。場所は、西地区 "い" ブロック 42aです。
    興味を持たれた方は是非いらしてください。


    では、宣伝はここまでにして以下では本作品の作成秘話的なものを話していきます。

    作成経緯

    実はこの作品のゲームシステムの構想自体は去年のGWからあったのですが、ひどいことに形になるまで1年半くらいかかってしまったんですよね。
    完成まで異様に長引いた理由としてあげられるのは3度のPC破損です。
    完成までの流れを説明すると↓のような感じになります。

    2013/5 Java(フレームワークなし)で作ろうとする
    2013/7 PC破損(1回目)←バックアップ無しだが、あまり進んでなかったしまぁいいかという結論で終わるまだ分かる
    2013/7-2014/3 しばらく開発停止
    2014/3 新しいPCで開発再開。ソシャゲにしたいと考え、PHPで作り始める。
    2014/7 PC破損(2回目)。今度はHDDが壊れてしまう←またバックアップを取ってない。は?
    2014/7 人工片吟代表のmakinodanさんからゲームをC86に出してみないかという話がくる。
    2014/7 C86に出したかったのでオフラインPCゲームとして作り始める。
    ちなみに使用したフレームワークはlibGDX。
    2014/8(C86前日) PC破損(3回目)←やっぱりバックアップは取ってない。じゃあ、死のうか。
    当時、makinodanさんにはご迷惑をおかけしました。。。
    2014/8 PC破損2週間前のソースコードが残っていたので、開発を再開する
    2014/11 マスコットアプリ文化祭について知り合いの同人ゲームサークル代表の人から聞く
    2014/12 ゲーム完成+マスコットアプリ文化祭参加

    いやぁ、一言で言うと馬鹿ですね。皆さんバックアップはちゃんと取りましょうね!

    ちなみに、本作品は当初「Ai Girls」というタイトルで作られていた(アンドロイド版だとタイトルが「AiGirls」になっているのはそのためです)のですが、登場キャラクターをマスコットアプリ文化祭に参加しているキャラクターに変更したためにAI要素がほとんどなくなった(プレイヤーキャラがハッカドール1号ということくらい)ので、タイトルを今のものに変更しました。

    マスコットアプリ文化祭参加理由

    マスコットアプリ文化祭の話を始めに聞いたときは「ふーん、そっかぁ。でもUnityもこのはVPSも使ったことないし僕には関係なさそうだな。」とか思ってましたが、URLも教えてもらったので、とりあえずサイトだけ見てみることにしました。
    閲覧した所、キャラクターにハッカドール1号がいたんですよ。
    「そういえば、ハッカドール1号の中の人ってみゅーだよな」(※僕はワグナーです)とか思いながら、「各部門の賞と賞品」という欄まで読み進めた所、ハッカドール賞というところに目が行きました。「ハッカドール賞ってものがあるのか。賞品はタペストリーと、、、ん?ボイス収録!?これマジ!?賞取るとゲームにみゅーの声がつくの!?」(※しつこいようですが僕はワグナーです)という感じで、当時作成中のゲームを出展することを決めました。
    参加理由は、一言で言ってしまうと、みゅーのボイス目当てでした。

    結果

    ↑で話しました通りハッカドール賞をとることができました。ですが、ボイス収録の話は一向に来ないんですよね(´・ω・`)。おそらく、他の2つの受賞作品のうちどちらかにボイス収録の話がいっているんじゃないかなとか思ってます。「当たり前だ!他の2作品の方がクオリティ高いだろ!」「てか、なんで選ばれた!?」などとは言わないでください。。。辛いので(T_T)

    これからについて

    ボイスの獲得には失敗しましたが、今のゲームの形が完成形ではないので、
    本ゲームの機能拡張と不具合修正を引き続き行っていきたいと思います。


    今回は、以上になります。
    それから、繰り返しになってしまうのですが、「ハッカドールのパズル対戦」はC87 3日目 西地区 "い" ブロック 42a 同人ゲームサークル【人工片吟】で頒布予定です。興味を持たれた方は是非いらしてください。