FreelyApps

個人によるアプリ開発の日記です。アプリの収入だけで生活できるようになるのが目標です。UnityでAndroid向けのゲームアプリを作成しています。


    アプリ『トランプ・7並べ』を公開しました。
    Android/iOS https://goo.gl/zsFces

    タグ:トランプ・ナポレオン

      このエントリーをはてなブックマークに追加 Clip to Evernote
    11/15に『トランプ・ナポレオン』のiOS版をリリースしました。
    appstore-tn

    また今回のiOS版のリリースではAndroid版も4.0へとアップデートを行っています。 (iOS版も4.0となっています。) 
    4.0では「よろめき」の対応が一番大きいところでしょう。ローカルルールの中で「よろめき」というのはそれなりに知名度が高いようです。オールマイティが出ているトリックでハートのQを出すと、それが必ず勝つというルールです。
    yoromeki
    「よろめき」がないときは常に最強であったオールマイティが負けるルールであるので、ナポレオン軍に不利になります。連合軍でありハートのQを持っているときはよろめきを起こせるチャンスなので、ナポレオン軍に逆転する可能性があります。より勝敗が決まりづらくなり、最後まで楽しめるかもしれません。
    iOS版を出したことにより、それとAndroid版との通信対戦を対応することになりました。Unityの更新をしておくことと古いアプリが新しいものとマッチングしないように対応しました。またローカルルール「よろめき」のありなしをホストの設定から取得し、通信対戦のルールにそれを反映するようにしました。
    onlinesetting-yoromeki

    以前、『トランプ・ナポレオン』のルールという記事にナポレオンのルールを説明していました。 「よろめき」が追加されたので、これも更新しました。
    ルールを増やすと、そのありなしを判定してある場合はどうすればいいというようにAIの変更が必要になります。その対応が一番大変だと思います。 

    よろめきを追加したことで更にルールが複雑になりました。ナポレオンは非常に面白いゲームですが、バランス上5人専用ゲームでありルールを守れないと面白くならないという遊ぶにはハードルが高いものです。実際知っている人も少ないですし、遊んだことがあるという人はさらに少ないでしょう。ただナポレオンを遊んだことがある人は必ず面白いと言うくらい素晴らしいゲームです。
    30分くらいでルールが覚えられれば優秀だと思うほどの難易度ですが、はまれば人に薦めたいと思うはずです。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    3/28に「トランプ・ナポレオン」を3.1にアップデートしました。
    Android6.0のパーミッションシステムの変更により、 アプリのスクリーンショットを保存できるかの判定を入れないとSNSの連携時にファイルを正しく送れないということになりました。これに対応する方法は以前記事にしましたが、トランプ・ナポレオンがしばらく更新していなかったのでチェックに時間がかかりました。

    今回のアップデートではAIにも手を入れています。
    ナポレオンと副官は役札(オールマイティ、正ジャック、裏ジャック)を持つことがほとんどで、どちらも役札を持っていることがよくあります。 ナポレオン軍としては役札を分散して出したいわけですが、マストフォローのため意図せず被ってしまうことがあります。
    基本的には副官はなるべく後に役札を出せばいいのですが、ナポレオンが持っていると思われる役札次第では少し早目(7~8トリックくらい)に出した方が良いです。ナポレオンが副官を選ぶときに指定したカードが裏ジャックとすれば、オールマイティ、正ジャックを持っていることが推測できます。こういう場合8トリック目にしてもナポレオンがそれらを出していないなら、副官は裏ジャックを出すべきだと言えます。9、10トリック目をナポレオンの役札で取ると考えているはずだからです。
    AIの修正はこのような役札を出すときの思考の改善になります。 

    また、セイム2についても改善をしています。2は最弱のカードなので、真っ先に処分されるカードです。セイム2があるときは、セイム2が起こり得るならなるべく温存するカードになります。
    以前のAIでは、2が捨てる候補に入りやすかったです。今回の修正では、セイム2の可能性があるスートの2については捨て札の候補に入りにくくしています。絵札とかの兼ね合いもあるので100%温存とはなりませんが、3とかに比べれば捨てられにくくなります。 

    アップデートの内容を解説してみましたが、ナポレオンに詳しくない人だと何を言っているのかわからないと思います。ざっくり言えば、AIが強化されたということです。 

      このエントリーをはてなブックマークに追加 Clip to Evernote
    12/12に「トランプ・ナポレオン」を3.0にアップデートしました。

    大きな変更としてはチュートリアルを作成しました。メニューの項目が増えてしまったので、メニュー画面は以下のように修正をしました。
    ゲームの説明など使用頻度が少ない機能は全てその他にまとめることにしました。
    menu-tutorial

    メニューからチュートリアルを選ぶと
    tutorials
    チュートリアルの一覧が表示されます。1~6までやればナポレオンのルールが理解できるようになっていると思います。1番目からやっていくとわかりやすいです。

    tutorial-explain

    チュートリアルのイメージは上の画像のようになります。
    どうしてもルール説明のために文字は多くなってしまいますが、体験を伴いながら説明をわけて聞いていくので長文を見るよりは楽なはずです。 

    チュートリアル以外の3.0での更新についてはナビゲーションバーを常に出すように変更しました。 どうしてもナビゲーションバーが出たり消えたりするたびに表示の領域がうまく更新されないということが発生しているようだったので、常に出すことで問題ないようにしました。
    リザルト画面でTwitterへの投稿をできるようにしていたのですが、他のSNSでも投稿できるようにしてみました。また、ゲーム終了時にスクリーンショットを撮りそれを投稿に付与するようにしました。(Android 6では駄目かもしれませんが、文字での投稿は可能です。) 

      このエントリーをはてなブックマークに追加 Clip to Evernote
    アプリのランキングとレビューを掲載されているサイトAppliv『トランプ・ナポレオン』のレビュー記事が掲載されました。
    レビューページについているタイトルが何だか良い感じです。気になる方は是非リンク先で見てください。ちょっと思いつかない表現でした。
    アプリの紹介で3つのポイントにまとめてられるのもぱっと見れて便利なんだろうと感じました。たぶん無料の(有名なところが作ったものではない)アプリを遊ぶ人はいろいろ探して遊ぶでしょうから、ポイントがまとまっているとわずかな時間で興味を引けるのかも知れません。

    Appliv内で掲載されているアプリはランキングの形式で表示されていて、上位に入ったら相当ユーザーが入ってきそうな期待があります。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    クソゲーをレビューしていくというサイトクソ研にて『トランプ・ナポレオン』のレビュー記事が掲載されました。

    おそらくですが、レビューをしてくれた記者の方はナポレオンをやったことがなかったのだと思います。はじめての人がナポレオンについての長~い説明を聞いたら嫌になるという当たり前のことを気づかせてもらえて為になりました。(初めての人が遊びながら学ぶためのチュートリアルを作る予定です。) 

    記事は時代劇風の裁判仕立てで面白いと思います。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    11/15に「トランプ・ナポレオン」を2.2にアップデートしました。

    機能追加としてはチャットの対応です。
    前面にチャット用のUIが表示されるため、宣言や副官指定、カード交換時に表示してしまうとそれらのUIの操作ができなくなってしまいます。チャットをしながら遊ぶということを優先したので、このようになっています。
    トリックの最中はチャットUIを表示してもカードの選択に被らないようにしてあるので、チャットをしながらカードを出すということができます。
    tn-chat1 tn-chat2

    チャットは全員にメッセージが送られるようになっています。表示できるメッセージには上限があり、古いものから消えていきます。
    1メッセージは30文字まででメッセージの上限は50個になっています。

    ユーザー的には関係ないですが、広告のメディエーションに対応したというのが開発者としては最も重要なアップデートになります。nendの単価が下がってきていたので、1つの広告に依存するのは良くないと考えメディエーションを行おうかとなりました。
    AdMobのメディエーション機能自体は以前のアプリから対応したいと思い、実験はしていました。しかしnendのAdMobメディエーション用のアダプタにバグがあるようでAscend G6で必ずアプリが終了するということが発生していたため、対応は行いませんでした。この話は6月ごろのことで結構な時間が経っているので、もしかしたら直っているのではないかと思って今回試してみることにしました。
    SDKもアダプタも更新されていたためか問題は起こらずバナーとインタースティシャルのメディエーションを行うことができました。 

      このエントリーをはてなブックマークに追加 Clip to Evernote
    『トランプ・ナポレオン』の通信対戦を動画で説明してみました。

    Unityを同時に5つ起動して対戦しているところを撮影しています。
    1回のゲームを通して全て入れたので、6分とかなり長めの動画になってしまいました。 動画の後半には切断時にもゲームが進行している様子もいれてみました。

    「Unity Multiplayerを使って作ったオンラインゲームってどんな感じだろう?」 ということを疑問に思っている人は参考になるかもしれません。Unity Multiplayerの解説については今後ブログに載せていくつもりですが、 字を読むよりは動画の方が気楽に見れると思います。(音楽がついていないので、そこは退屈ですが)

    アップした動画には次回のアップデートで入れる予定の新機能チャットのボタンが出ていたりします。

    YouTube版
     

    ニコニコ動画版
     

      このエントリーをはてなブックマークに追加 Clip to Evernote
    『トランプ・ナポレオン』で通信対戦を作成したときに必要だったことを書いておきます。オンラインマルチプレイヤーのゲームに必要なことは大抵同じであるので、他のものを作るときにも参考になると思います。

    大きく分けて3つに分類できるでしょう。
    通信を開始するところ、つなげてから切断するまでと切断時で分けています。一般的にオンラインゲームを作るといった場合はつなげてから切断するまでに注目されていると思います。オンラインゲームというのは通信しているときだけなので当然ですが、接続をするところと切断するところはゲームの面白さとかには関係ないですが重要です。この部分はどのように作るかが作成者の考えによって大きく変わるようなので、正解がなく難しいです。
    以下の1と3が接続をするところと切断するところであり、2が通信中のところです。
    1. マッチメイキング 
    2. 同期
    3. 切断
    マッチメイキングはオンラインで一緒に遊ぶプレイヤーを見つけるための処理です。通信を確立する段階です。他のユーザーが知り合いの場合は別として、基本的には知らない人と遊びます。
    ユーザー同士が一緒に遊ぶにはまず相手を探さなければなりません。インターネットの仕組みではIPアドレスがわかると通信ができるようになります。このIPアドレスを相手に伝えれば良いのですが、どうやって伝えるかが問題になります。

    マッチメイキングでは特定の場所(固定されている)に自分の情報を登録し相手に見つけてもらうか、その逆を行います。自分と相手が同じところにアクセスして仲介してもらうことでIPアドレスを教えあうことになるわけです。
    固定されている場所というのはサーバーになるわけですが、自前で用意しなくてもUnity Multiplayerではサービスとして提供されます。(今後有料になるかもしれませんが、まだわかりません。) 


    2つ目に同期ということを行いました。 これは複数の端末間でのゲームの進行状況の足並みをそろえるための処理です。通信自体は確立してからの話になります。
    すべての状況を一致させるということは不可能ですが、大事な情報は一致させるということで同期が必要になります。リアルタイムで刻一刻と一致させる必要な場合もあれば、特定のタイミングで全員をそろえるという場合もあります。

    『トランプ・ナポレオン』 のようなトランプゲームでは特定のタイミングで同期すれば良いです。誰が何のカードを出したかというのをカードが出されるたびに情報の共有を行い、進行させていけばうまく行きます。ランダム要素がないなら、カードの情報だけ揃えればゲームの状況は一致します。(このようなときはゲームの処理は誰が行っても同じ結果になるので、端末ごとに処理を行う分散型の設計が可能です。)
    全員の進行状況をそろえる方法は単純です。先に処理が終わったユーザーは他のユーザーが終わるのを待っていて、全員の状況が同じであると判定されたら次に進むというようにしました。


    最後に切断です。おそらく一番面倒なことです。どういったやり方が良いのかというのは自分で決めなければいけません。
    切断が起こるタイミングはわからないので、起こる可能性のある箇所には対処を入れていく必要があります。変なタイミングで切断すると、アプリが動かなくなったりすることが結構起こります。頑張ってデバッグしましょう。

    『トランプ・ナポレオン』 の対処については以前に記事にしました。切断されてもゲームが続くというように設計されています。このようなことを行うにはゲームを途中から行えるような再現機能かオンラインとオフラインの処理が融合しているような作りが必要です。
    規模が大きい場合は切断時に一旦ゲームを終了して、その後同じ状況に復帰させるという作りが安全だと思います。(切り替えに時間がかかりますが、オンラインとオフラインの処理が完全に切り離せるので問題が置きにくいはずです。) 
    オンラインとオフラインの処理が融合しているというのは同期の部分をif文で分岐しているというだけです。 各ユーザーが処理すべきところもコンピュータで処理するように置き換えるようになっていれば問題ありません。コードがわかりにくくなるデメリットが大きいですが、即座に切り替わるというのはメリットです。 

      このエントリーをはてなブックマークに追加 Clip to Evernote
    10/28に「トランプ・ナポレオン」を2.1にアップデートしました。

    宣言、副官指定のUIを修正したこととナビゲーションバーの表示の2つがアップデート内容です。 

    宣言時のUIが他のプレイヤーの宣言結果(下の画像で言うとCOM1のパスなど)が被っていたので、修正を行い被らないようになりました。この変更をするためにスートの選択を縦に並べるのではなく行列状に並べることになりました。
    d

    スートの選択方式が宣言UIで変わったことにより、副官指定のUIも同様の変更を行いました。これはスートを選択する方法が違っていて混乱しないようにするためです。
    a
     
    機能的な改善としてナビゲーションバーを表示することにしました。Backキーを押すことでアプリを終了することができます。
    ゲーム中の画面ではナビゲーションバーを非表示にしてあります。これはゲーム中に画面を大きく使いたいためと誤タップによるアプリの中断を防ぐためです。
    nback
     

      このエントリーをはてなブックマークに追加 Clip to Evernote
    10/28に「トランプ・ナポレオン」を2.0にアップデートしました。

    今回のバージョンアップは通信対戦の追加です。 その名の通りインターネットを使ったオンラインゲームを行えるようになりました。ナポレオンをすることに変わりはないので、対戦する人数は2~5人になります。

    ナポレオンは元々トランプゲームであり、対人戦が面白いものです。アプリを作ったことで手軽に遊べることは良かったのですが、やはり対戦したいという気持ちがありました。今回はそれを実現できたと思うので非常に良いアップデートだと思っています。
    後はどれくらいのユーザーが使って対戦できるかというところです。現在だとユーザーが少ないので対戦できるだろうかという心配があります。ダウンロードが増えてくれればいいのですがそう簡単ではないので、このアプリを遊んでくれた人が一緒に遊ぼうというように広まってくれることを期待しています。(各レビューサイトにレビューの申請とかできることはしていきます。)

    Screenshot_2015-10-25-19-19-27
     上のように通信対戦を行う人がルーム(待ち合わせ場所)に入ってくるとリストに追加されていきます。2人以上が参加すると開始ボタンが押せるようになり、ゲームを始めることができます。2人の場合は3人がAIにより処理されます。
    ここに表示されている名前は設定の中に「名前変更」 を用意したので、そこで設定した名前が表示されています。(レイアウトの関係で6文字まで、全角にするとレイアウトがそろいます。)

    トランプ・ナポレオンではUnity Multiplayerを使って通信対戦を実装しています。Unity5.1から入った機能ですが、まだ試験的というか使っている人も少ないと思います。クライアントサーバーモデルのゲームを作れるように設計されたり、マッチングサーバーが用意されたりしています。
    ドキュメントだけしかない状況で資料が少ないため、このアプリが参考になるかもしれません。

    このページのトップヘ