月別アーカイブ: 2016年1月

ポーカー戦術は三すくみ?

おいらがポーカーを打つときは、かなり固く打つ。いい手の時のみ参加し、相手にレイズされると相手を信用して降りることが多い。
このようなプレイヤーに対してはブラフを多めにするとよい。だって、実は弱い手でも降りてくれる確率が高いからだ。

では、ブラフ多めのプレイヤーには、どう対処してらいいかと言うと、フォールド・レイズ率を下げ、コール率を上げるとよいみたいだ。
勝負になれば勝てる率が高いからだ。

では、コール率が高いプレイヤーにはどう対処したらいいかと言うと、いい手の時のみ参加するとよい。

つまり、下記のような三すくみ状態というわけだ。

フォールド多め < レイズ多め < コール多め < フォールド多め < レイズ多め・・・

ポーカーアプリをアップデートしたら起動しなくなった事件の顛末

おいらが多々リリースしている Android アプリの中で、一番人気なのは cocos2d-x で開発した「人口知能テキサスホールデムポーカー オフライン」だ。
去年の暮れには遅まきながら SSD 256GB を導入し、OS や開発環境をそれに新規インストールし、いろいろ快適になったところで、今後もいろいろ改良し、さらにDL数を伸ばすぞっといういきごみのもと、01/05 に バージョン 1.030 を公開した。新年早々快調である。

が、1.030 公開直後にユーザ様から「アップデートしたら起動しなくなった」という報告を複数受けた。
なんということでしょう。快調な状態はそうそう長くは続かなかったのだ。

当然おいらの環境(Nexus72013 Android ver 6.0.1)ではちゃんと起動するので、何が悪いのかさっぱり見当がつかない状況だった。

報告をしてくれた人の環境は2人とも 4.4 で、ツイッターで追試してくれて起動しなかった人の環境も、スカイプで無理やり追試をお願いした某氏の環境も 4.4 だった。一方、いつもお世話になっているRちゃんの環境は 5.x でこちらはちゃんと起動できた。
どうも Android ver 5.0 未満で起動しないということらしいと推測できた。

で、SDK マネージャで確認してみると、なんと 5.0 以上しかインストールしてないじゃないですか。なのでとりあえず 4.x を全部インストールして再ビルド。
できた apk を某氏に確認してもらったけどやはり起動でせず。。。

で、ソースの prj.android ディレクトリ下の project.properties を見ると、なんとプロジェクトターゲットが android-21、すなわち version 5.0 になっているではないか。これでは 4.x は対象外なので起動しないのもあたりまえ、ってことだ。
「ここを書き換えた覚えはないぞ」と思いつつ android-16 に書き換え、再ビルド。
おいらの環境では動作チェックできないので、某氏に再ビルドしたものをチェックお願いするも、やはり起動せず。
「なんでだー???」と叫びながら project.properties をチェックすると、プロジェクトターゲットが「android-21」に戻っているではないか。
「???」と思いつつ、ファイルの最初をよくみると
# This file is automatically generated by Android Tools.
# Do not modify this file — YOUR CHANGES WILL BE ERASED!
と書いてあるではないか。このファイルは自動生成したもので、ここでターゲットを書き換えてもどこかで誰かがビルド時に書き換えてしまようだ。

「じゃあターゲットはいったいどこで指定するのだ?」と、prj.android の下のファイルを探しまくるがそれらしいのが無い。
「cocos2d-x Android project target」とかでぐぐりまくっても、それらしい説明に行き当たらない。
もうお手上げである。

実はアンドロイド版のビルドは cocos というコマンドで行っているのだが、このコマンドの説明をやけっぱちで読んでると、なんと
「–ap ANDROID_PLATFORM」というオプションがあるじゃないですか。「こ、これだーっ」と心の中で雄叫びをあげつつ、実際に
「–ap android-16」でビルドしてみた。
するとどうだろう、
大量のエラーが出るじゃないですか。しかも「std::rand()」が無いとかなんとか意味不明です。

また、どうしていいかわからない状態に戻ってきちまったわけですよ。

どうしていいかわからなくなったときは、心を無にして最初からやり直すしかないと思い直し、cocos new でテストプロジェクトを作成、ビルドしてみた。
そうすると、ちゃんとビルドできるし、target=android-15 となってるじゃありませんか。
はっきりしたことはわからないけど、cocos new でプロジェクトを作ったときの SDK の状態がどこかに書き込まれていて、そのために後でSDKをインストールしてもだめだった、ということみたい。

なので、もう一度ポーカープロジェクトを作り直し、ソース等を全部コピーしてビルドして、4.x 対応の apk が出来上がりました。
それを某氏に確認してもらったところ、ちゃんと起動したとのこと。
おじさん嬉しくて小躍りしちゃいましたよ。

というわけで、環境を作り直した場合は、古い Android SDKのインストールを忘れずに。
わからなくなったら最初からうまく行ってるか確認しつつステップバイステップでやり直してみると、解決することもある。
問題が発生したときはパニクらないようにしよう。
ってことじゃな。

最後に、追試・確認してくださ方々、ほんとうにありがとうございましたー