daruma3940の日記

理解や文章に間違い等あればどんなことでもご指摘お願いします

リバーシアプリ作ってみた

スマホリバーシアプリ作ってみた
play.google.com

身近な人が、もし完成したらお子さん用にインストールしてくれるということだったのでターゲットを小学生か中学生またはリバーシ初心者にすることにした
(公開してからスマホ持ってる小学生中学生ってあんまりいないだろうしターゲットとしてはあんまりふさわしくなかったのではと思った
塾講師のアルバイトをしてる知り合いに聞いてみたらバイト先の中学生は結構スマホを持っているらしくターゲットとしてはそんなに間違ってなかったのかもしれない。
でもまあリバーシなんかよりFGOだよね




この文章はたまに主語が大きくなったりすることがありますが主語はすべて私です(本当か?)

本当はどうぶつしょうぎアプリを作ろうとしてたのだけれどどうぶつしょうぎ著作権があることがわかって泣く泣く没にした
知ってる方たちは「その権利を持ってる人に使わせてもらっていいか聞いてみては?」といってくれたが、
「どうせダメだろ」という気持ちが僕の中で強くてあきらめてしまった。
どうぶつしょうぎではない将棋をのスケールを小さくしたゲームを作ろうとしてみたが後手がひたすら先手の攻めを耐え続けるゲームばかりできてしまった。
どうぶつしょうぎがものすごく難しいバランス調整を乗り越えて作られているということがわかってさらに「どうせダメだろ」という気持ちが大きくなってあきらめた。
ホントにあれはすごいですよ。駒と駒が最初からぶつかり合ってるのに、完全解析の結果が後手必勝だし、あれだけサイズは小さいのに将棋のもつ難しさは残っているし作った人は天才としか言いようがないですね。
物理でも自然現象の本質を残したまま簡単なモデルを作ることは非常に難しいし、大事な仕事である(ex.イジングモデル)ということを担当教官が言っていた。


リバーシとか将棋のアプリって最低レベルの強さでもなんだかんだ強いんですよね(なんでもできる強い皆さんにはわからないかもしれない)
かといって弱いのを売りにしてる他のアプリを別にインストールするのには抵抗がある。
なんというか他の人が普通の教室で授業を受けてるのに自分だけ別室に移されてそこでレベルの低い授業を受けさせられている感覚というか
数学の授業で自分には全然わからない問題を、さっきまで一緒に休み時間あそんでた友人達が黒板にスラスラ解いてて仲間外れにされたように感じ不貞腐れるしかない感覚
たぶんそういう感覚を味わった人って僕のほかにもいっぱいいるんじゃないかなぁ
そういう人が(というかそういう人こそ)楽しめる、自信を持てるような設計にしようと考えた

とりあえず強さを弱くするのは必要なので強くしないことにした
強さのレベルには3種類用意してて強い、普通(というか中くらいの強さを表す単語として「普通」を使うべきではなかった)、弱いを用意した。
弱いは0.05秒,普通は0.08秒,強いで0.1秒しか考えさせていない。
しかしそんなに短い時間で指し手を返されると遊んでる側としては「手を抜かれてるな」とか「手加減されてるな」と思ってしまうと考えたので実際に指し手を返すのは1秒後にすることにした
(この1秒というのは固定だったのでAIが負けているときは深く考えているかに見えるように時間を変化させた方がいいかもしれない)
強いモードでもそこまで強くないので頑張れば勝てる。(というか大学生の友人に遊んでもらうと強いモードでも弱すぎるといわれる。それでいいんだよそれで)強いモードに勝てれば自分はこのアプリの最高レベルに勝てたんだという自信を持てるんじゃないか、自信を持てたらどんどんリバーシ、さらにはほかのボードゲームを好きになれるのではと思ってこの設計にすることにした。
しかしこれでも強すぎたみたいで反省。中学生でリバーシ初心者の弟にやらせてみたらこの探索時間でよさそうだったのでこれに決めたのだけれど...

こういうボードゲームって勝ち将棋鬼のごとしといわれるように一方的にやられたりしますよね。
そういうのすごくつらくないですか。
僕は昔リアル将棋で角道を開けた後、角を守る銀を動かしてしまって角をただでとられてしまったことあります。
そこで投了しようとしたんですが「そんなにすぐ投了するの?」といわれてそのまま試合を継続したことがあります。辛いですね。
ソフトでもαβ探索だとそういう加減をさせるには工夫が必要です
そこで囲碁で使われているモンテカルロ探索で探索させることにしました
モンテカルロ探索は勝率だけを最大化するので自分の陣地の最大化はせず「半目でも勝ちは勝ちっしょ?」って感じらしいです
なのでリバーシでもそんなに大差で勝とうとはしないのではないかと思ってます(検証はしてない)
なので負けてもまだ救いはあるように感じられるのではないかと思います。

弱さではなくかわいさを売りにすることにした
一番最初に言ったけど弱さを売りにしてるアプリに対して勝ってもうれしくないですよね(僕は)。
そしてそういうアプリをインストールするのにも抵抗があります。
自分の弱さと向き合うことは必要なことかもしれないけれど、そういうことをプレイヤーに求めるゲームは、「あなたはすごいよ!どんどん強くなってる!!」っていう報酬を与え続けてくれるゲームに比べて一般に嫌煙されるような気がします(なんでもできる強い皆さんにはわからないかもしれない)
なんか話がずれてきたけど
弱さをアピールするのではなくかわいさをアピールすることにしました


私がリバーシのテストプレイをする中で身に着けた勝つためのコツみたいなのをルール説明のところに書いておいた(私も初心者なのでダメなコツかもしれないけど)
後はトロフィー機能をつけてトロフィーを集める機能をつけた
勝てても勝てなくてもトロフィー集めるのたのしーーー!
(そろそろ文章書くの飽きてきた)



ここからは今の実装の反省とこれからやろうと考えているアイディアについて

とりあえず勝った時の報酬が弱い。もっとエフェクトをつけて
「あなたの勝ちですーーーーz_____!!!!すごーーーーーz_______い!」ぐらいしよう

そして勝った時しか報酬が与えられないというのは良くない。
終盤に差し掛かって、勝てそうな場合は勇ましいBGMをかけて、勝ちそうになったことに対して報酬を与えたい。
そしてその曲は勝負がつくまではサビの前で止めておいて、勝敗が決まった瞬間にサビを流す。(RPGツクールのゲームにこういうのがあった。毎回プレイするのが楽しくなるシステムだった。)

トロフィーを手に入れたことをちゃんとプレイヤーに知らせよう

ルールなんて今どき誰も読まないのでそんなところに勝ち方のコツを書くのではなく、
プレイヤーが勝負に負けてしまったらその時にTIPSとしてねぎらいの言葉として表示させよう

石を置くのも気持ちよく置けるようにエフェクトをかけよう

後は経験値やレベルの概念を導入したい。
勝っても負けても経験値が入り(その量にはもちろん差をつけるが)、
レベルが上がっていくのなら継続して遊びたいと思えるはず。
もちろんレベルはただの飾りではだめでそれが上がることでちゃんと強くなっている実感を与えないといけない

レベルといえばRPG RPGといえば攻撃力... 
敵にHPを用意してバトルものにするしかないように思えるが最近出てきたオセロニアというゲームとかぶりそうだし(アイディアとして参考になりそうだし遊んでみたいと思っているけどまだ遊んでないのでどんなゲームかはわかってないが)バトルがだめなのならリバーシなどといったボードゲームはほぼ実力であって、実力以外にレベルが上がれば有利にできるといった設計にするのは難しそうだな...
レベルが上がればリバーシの試合を有利にできるスキルを使えるようにするのはどうだろう。スキルはある相手の石を自分の石にできる(心変わり)とか、絶対に相手にひっくり返されなくする(聖なる守り)とかを用意して、レベルが上がればそういうのを使えるようになる。(使える回数はMP(レベルが上がれば増える)で決める)みたいなのはどうだろう。(しかしリバーシに慣れてくるとスキルは不要になってくるはずなのでレベルが上がれば使えるようになるというのは良くないかもしれない ミッションで「スキルを使わずに勝て!」みたいなのを用意すべきか)
敵にもスキルをつける(盤のある範囲にある石をすべて吹き飛ばしてしまう(大爆発)とか、2回石を置ける(2回攻撃)とか、盤に穴をあけてそこには置けなくする(メテオストライク)とか、盤を90度回転させてプレイヤーを混乱させるとか(Rotated Board),盤の一部を見えなくする(インビジブル)とか,盤の一部をランダムに入れ替える(Xor128)とか)
ここまで来たらホントにRPGみたいにストーリーモードをつけたいですね(主人公をSquirrel君にしてぷよぷよのストーリーモードみたいな感じで)こういうボードゲームでストーリーがついてるのってあんまり聞いたことがないし

なんか話が大きくなってきてしまったなぁ....
こんな理想を言っても、自分の実力のなさとモチベーションの低さによって理想は理想のままで終わってしまいそうなんだよな...
でも想像するだけでもすごく楽しそうなので頑張って作ってみたいですね