FreelyApps

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


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

    タグ:アップデート

      このエントリーをはてなブックマークに追加 Clip to Evernote
    5.5になり、UnityEngine.Typesが使えなくなりました

    `UnityEngine.Types.GetType(string, string)' is obsolete: `This was an internal method which is no longer used'
    というエラーログが出ます。 

    エディター拡張(スクリプトからそれがアタッチされたゲームオブジェクトを作成する拡張)でこれをつかっていたものがあったので対応する必要がありました。 

    対応方法は別のメソッドを使うだけです。Unityで有名なこちらのブログ
    【Unity】クラス名からTypeを取得する(テラシュールブログより)
    の記事がわかりやすいと思います。

    私の場合は、
    UnityEngine.Types.GetType(className,"Assembly-CSharp");
    と書いていたところを 
    System.Reflection.Assembly.Load("Assembly-CSharp").GetType(className);
    と直して問題なく動きました。 


    少し調べてみたところ上記の方法でなくても行う方法がありました。
    System.Type.GetTypeというメソッドでもTypeを取得できるようでした。型の名前を引数にとり、型を返すメソッドです。実行中のアセンブリ(dllと考えていい)かMscorlib.dllに含まれる型であれば名前空間で修飾した型名で型が取れるようです。
    Unityで作ったスクリプトはAssembly-CSharp.dllにあり、エディタースクリプト実行時には当然実行中のアセンブリではないです。System.Type.GetTypeはアセンブリ名を修飾した名前で呼べば型を取得できるようになっているので、
    System.Type.GetType(className+ ",Assembly-CSharp");
    というようにしてどのアセンブリにいるかを指定すれば型が取れます。

      このエントリーをはてなブックマークに追加 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
    「トランプ・ポーカー ~5カードドロー~」と「トランプ・アメリカンページワン」のアップデートを先日行いました。ゲームの途中にポーズ画面があるのですが、そこからゲームをやめると点数がおかしくなるバグを修正しました。

    バグの原因は単純で以前の点数をリセットしていないためでした。結果を表示するシーンからメニューシーンに戻るところでのみリセットをするように作っていたのでそのようになりました。メニューシーンに入ったときにリセット処理を行うことで問題はなくなりました。

    元々「トランプ・アメリカンページワン」の点数処理を流用してこれらのアプリは作られています。そのため作成中のアプリで同様の問題が見つかり、ついでに以前の2つのアプリも修正することになりました。汎用的な処理や似たアプリの処理は積極的に使いまわしているのですが、その欠点が現れたというところです。それでも修正はできたのだし、まあ良しとします。
    もっとテストすれば・・・ということは考えつく単純で効果ある方法です。しかし、完全なものを目指すことは良いにしてもどこかで終わりにしなければなりません。

    iOSでのアップデートを初めて経験したというのが大きいです。アップデートを行うということは、続けていれば必然です。審査があるので、時間がかかるということがわかりました。つまり、緊急で対応というのはできないということです。
    バージョンは1.0から1.1にあがりました。
    tp5dtap

    iOS版の「ゆにてく」をリリースするため、現在審査を受けているところです。ただ、リジェクトされてしまったので、その対応中の状態です。「UnityChanって他のところのものだけど、それって使ってもいいの?」というところが問題です。なかなか時間がかかりそうな感じです。
    何回も落とされると慣れます。はじめはショックでしたが、今はこれで通るかなと期待しつつ出しています。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    5/11に『トランプ・スピード』を2.0にアップデートしました。

    1.0から2.0へと大きく変えたのはローカルでの対戦機能の追加です。1台の端末を2人で使って、スピードを対戦することができます。
    メニュー画面に「対戦(2人用)」というボタンが追加されています。これを押すと対戦モードになります。
    ss-ts-vs-menu

    どちらの色を選ぶとか多くのUIの表示については1P(画面下側)を優先しています。そのため1Pがちょっとだけ有利になっています。
    ss-ts-vs-side

    対戦している画面です。
    あと何枚残っているかという表示は各々のプレイヤーの向きに合わせて表示しています。2Pは画面上部のカードをタップすることでカードを出すことができます。
    ss-ts-vs-main 

    処理の作成は3時間程でした。 自分でもすごい速さで作れたと思います。AIが処理しているところを入力に置き換えていくというやり方で大体は作れます。一人で作るのは全部やらなければいけないので大変ですが、全て知っているのでどうすればいいかは思いつきやすいです。今回はそれが良い方向に働いたと思います。

      このエントリーをはてなブックマークに追加 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
    ゲームのSS(スクリーンショット)を撮って、それをSNSに投稿するというのはよく行われていると思います。このSSは撮影してファイルに保存して利用します。ファイルに保存することで他のアプリからも参照できるようになり、使用することができるようになります。

    SSを保存するときファイル名は固定のものにするのが使いやすいです。保存のたびにファイル名を変えてしまうとストレージを圧迫しますし、どのファイルにアクセスすればいいのか管理が難しくなります。固定のファイル名にすることで新たに撮影し保存するときに古いファイルが上書きされていきます。古いファイルが自動で更新されていくので楽だと思います。

    SSをファイルに保存するのは必要ですが、いつまで残す必要があるでしょうか?
    消す理由はファイルを確実に新しくするためです。何らかの理由でSSが撮れなかったときは、古いファイルがそのままになります。ファイルの有無で投稿に画像をつけるか判定している場合、古いファイルが添付されることになります。(新しいSSがあるかを判定する方法であれば問題ないです。)
    私は古いファイルが残り続けるのは問題だと思っていたので、なるべく早く消していたのですが、それだとまずいこともありました。 SSをSNSにアップしている途中なのにファイルがなくなり、添付できなくなってしまうということが起きました。ファイルがないのにファイルが欲しいと要求され、アプリがエラーを起こしていました。
    古いSSを消すタイミングをファイル作成の直前にすることが最も正しいと思います。これから新しいものを保存する前に古いものを消すことで作成の成功でファイルが更新され、作成が失敗したときはファイルがなくなります。これによりファイルの有無でSSが最新かを判定して良いことになります。

    この問題を解決のため、いくつかのアプリをアップデートしました。トランプ・ゲスイットを1.2にFlashNumbersを1.1にしました。

    あまり気にしないでSS消さず残したままにした方がいろいろ楽だったと思います。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    Androidのアプリのアップデートについてですが、公開のタイミングを自由に選べるようになったようです。アプリの公開というところに詳細が載っています。

    アップデートをするときにDeveloper Consoleの「更新を送信」ボタンの上に標準公開(デフォルト)となっているところをクリックすれば、時限公開に切り替えることができます。
    このモードにした状態でAPKをアップロードするなりして、アップデートの準備をします。
    これで「更新を送信」すると、通常のように数時間(かかることも)の待ち時間を経て公開できる状態になります。通常では公開も自動で行われるわけですが、時限公開の場合は「公開」ボタンを押すと数分以内で公開されることになります。
    公開タイミングを自由に選べることでイベントとかやってるアプリは楽になるでしょうし、告知をしてすぐに公開できるというのも使いやすいかもしれません。

    次にアップデートする機会があれば、使ってみようと思います。 

      このエントリーをはてなブックマークに追加 Clip to Evernote
    2/20に『トランプ・ゲスイット』を1.1にアップデートしました。
    今回の対応はユーザーからの不満の対応として、AIの改善を行いました。

    AIは学習によって行動を変えるのですが、負けてくるとその戦略が悪いと判断します。以前、勝っていた戦略が悪いと判断されてしまうと今までやっていなかった行動をし始めます。その行動がユーザーを驚かすようなものになってしまっていて不満が出ているのだと思います。

    どのような行動が良くないかというと、ゲスイットのゲーム性上「いきなり解答する」というのはつまらないものと感じられるようです。何もせずにゲームが終わってしまうということに加え、ノーヒントで解答するという運に賭けるような行動は弱い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
    11/15に「トランプ・ナポレオン」を2.2にアップデートしました。

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

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

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

    このページのトップヘ