FreelyApps

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


    アプリ『トランプ・ジン・ラミー』を公開しました。
    Android/iOS https://goo.gl/PYKFYG

      このエントリーをはてなブックマークに追加 Clip to Evernote
    Unity5.3から5.4になったときにNetworkMatchつまりマッチメイキングの処理の呼び出し方法が変更されました。5.3以前の処理を書いている場合は多少修正が必要になると思います。
    書き直すのは面倒ですが、修正されているところ(マッチングのフィルタリング)があるのでやってみる価値があります。
    34
    左が5.3で右が5.4のUnityEngine.Networking.Matchのクラスの一覧です。5.3では~Requestと~Responseがたくさんあります。これらはマッチングを行うときのメソッド(NetworkMatch.CreateMatchなど)に渡す情報とマッチング処理を行ったときの結果を返すためのものです。
    5.4ではマッチングを行うときのメソッドに直接値を渡す方式のみになったため、~Requestがなくなったようです。(5.3では~Requestを渡す方法と直接値を渡す方式がありました。値を渡す方式だけ生き残ったということです。)
    ~Responseは元々冗長なクラスでした。~Responseは成功したかどうかとサーバーでのエラーについての情報とそれぞれのマッチング処理の情報という形式です。3つのメンバーしかないので、わざわざクラス化しなくても良いという判断で5.4でなくなったのではないかと思います。5.3のCreateMatchResponseJoinMatchResponseは同じ情報を持つのに違うクラスでしたし、メンバーもわざわざ基本型で書いてありました。5.4では整理されてきれいにまとまった感じです。
    あとはMatchDescMatchInfoSnapshotに変わりました。なぜ……

    5.3でCreateMatchなどを使っていた場合は、5.4のCreateMatchに合わせる必要があります。呼び出し引数が変わっているのでその対応をすれば動くはずです。いくつかのパラメータは空文字や0で無効にして呼ぶことが多いでしょう。
    requestDomainという値が重要でこれが同じ値のものとマッチングするようになっています。この値が違うとマッチングしないようになっているので、通信する内容が変わった場合は値を変えておくと問題が起きません。アプリのバージョンとかと同じように通信のバージョンを管理しておくと良いと思います。

    以前はrequestDomainに対応しているような機能があったのですが、うまく機能してなくて互換性がない状態でマッチングが起こっていました。当然、通信が発生したときに情報が解釈できずエラーになって失敗します。5.4からはこれが動いているというのを確認しました。(Windows、Mac、Android、iOSにて)
    これがあるとUnity Multiplayerに変更のあるアプリのバージョンアップを行うことができます。バージョン違いのものを住み分けることで共存できます。 

      このエントリーをはてなブックマークに追加 Clip to Evernote
    11/3に『トランプ・ゲスイット』のiOS版をリリースしました。
    tgi-appstore

    以前作ったAndroid版の移植になります。
    ゲスイットというカード当てゲームのアプリです。ゲスイット自体はあまり馴染みのないトランプゲームだと思います。A~Kまでの13枚のカードを使って、6枚ずつ自分と相手に配り残った1枚が何かを当てるものです。質問をして正解を絞っていくことと相手を混乱させる質問をすることがゲームの本質だと思います。

    強化学習という方法で大量のデータを保存していて、AIは行動を変えるというものになっています。学習するAIを作るということで最も進んだAIを作ったつもりでしたが、弱かったり強くなりすぎたりするので、ゲームとしては微妙かもしれません。
    バランスの調整が必要ないが、調整できないということです。(サーバーにAIを用意して、そこに問い合わせる方式なら多少はバランスをとれるかもしれません。それをやるのは大変だと思います。)
     

      このエントリーをはてなブックマークに追加 Clip to Evernote
    『トランプ・17ポーカー』を作るのにかかった時間は約21時間でした。予想していたように短い時間で作ることができたと思います。「トランプ・ポーカー ~5カードドロー~』を使いまわすことができたというのが最も大きな理由です。

    ポーカーのルールはそのままであり、使うカードを限定したものが17ポーカーです。そのため配られるカードに制限をかければゲームとして成り立つので、ここの修正はほんのわずかです。
    大きな修正点は4人のプレイヤーが2人になったことによることです。この対応は処理とUIの修正となります。また、ゲームの内容が大きく異なるためAIの対応が必要になりました。
    3change

    4人のプレイヤーが2人になることでUIは2人分のものに変わります。これは4人のものから2人削除すればとりあえずは動きます。見た目を直すのは当然必要ですが、そのままでも動きはするので開発にはそれほど優先しなくても大丈夫でした。

    17枚のカードを使うポーカーであるといってもゲームの内容はかなり違います。少ないことで引けない状況もありますし、相手のカードを非常に推測しやすくなっています。そのため、AIは相手のカードを予測して自分の手札が強いのか弱いのかを考える必要があります。
    単なるポーカーであれば、相手のカードはほぼ予測できません。賭け方から強そうかもということや交換の仕方からワンペアくらいはできてそうということが予想できるくらいです。主に自分の手札がどれくらい作りにくくて何番目に強いポーカーハンドなのかから勝負に行くか決めるくらいです。

    AIとUIで半々くらいの時間を使ったところだと思います。
    初日に星5がついたりして出だしはよかったはずなのですが、あんまりダウンロードされなくてやはりマイナー(スマホで遊ぶユーザーには)だったかもという気がしています。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    10/21に『FlashNumbers』のiOS版をリリースしました。
    fn-appstore

    以前作ったAndroid版の移植になります。作ったアプリの中でも時間がかかってないものです。動体視力を鍛えるものを何か作ろうと思って数日で大体作ったことを覚えています。

    一瞬だけ表示される数字を覚えて答え合わせをするだけのゲームですが、やってみると暇つぶしにちょうど良いです。自分の動体視力と記憶力を鍛えられるので、実益もあるかと思います。

    偶然知ったのですが、 あぷまがどっとねっと様に紹介されていて嬉しかったです。

    タイトル画面とリザルト画面では数字が降ってくるような演出がされています。気に入っているのですが、めちゃくちゃ重いのでここだけで使っています。タイトルのフォントは「数式フォント」を使わせてもらっています。
     dvt-title

    ゲームはこんな風に徐々に表示される時間が短くなっていきます。同時に覚える個数は3~7で難易度として選べます。7個はかなり難しいです。
    fn

      このエントリーをはてなブックマークに追加 Clip to Evernote
    MonoBehaviourを継承したゲームオブジェクトにアタッチできるスクリプト(C#)を作るとします。通常はヒエラルキーにゲームオブジェクトを用意してそこにスクリプトをドラッグアンドドロップしてアタッチします。
    この作業はドラッグに失敗したりすると、非常にイライラします。
    いくつかのスクリプトをつけるときはコンポーネントの追加ボタンを押せばいいのですが、新たにゲームオブジェクトを作るときはゲームオブジェクトを作り、そこにアタッチするというちょっと面倒な手順があります。

    以前スクリプトをヒエラルキーにドラッグしたら、それがアタッチされたゲームオブジェクトを作成するようなことを試していました。
    スクリプトをヒエラルキーにドラッグアンドドロップしてゲームオブジェクトが作られるようにする」 という記事にこれが書いてあります。大体やりたいことはできていたのですが、ドラッグしたままにすると問題があったりしました。(理解して使うなら十分使えるというくらいの出来でした。)

    これをショートカットキーでやれば良いのではないかと思いつきました。 
    こんな感じに改造しました。スクリプトを見つけるところはSelectionに任せ、作るかどうかの決定はメニューを押すことになりました。
    イベントを確実に取ることが簡単なので、この方法が一番良い気がします。 

    使い方は簡単でアタッチできるスクリプトを選択した状態でCtrl+Gを押すかコンテキストメニューのCreate->GameObject from Scriptを押すと、選択されているスクリプトがアタッチされたゲームオブジェクトをヒエラルキーに作成します。
    CreateGameObjectFromScript

    複数のスクリプトから同時にゲームオブジェクトが作成でき、C#のスクリプト以外を選択してあっても無視されます。

    このページのトップヘ