FreelyApps

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


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

    2016年03月

      このエントリーをはてなブックマークに追加 Clip to Evernote
    Unityでアプリを作成したとき、SNSへの投稿を簡単にすることができるものがあります。「Social Connector」というものでUnityの人が作っていて有名なようです。

    AndroidとiOS用に作られていて各種SNSに投稿できるようになるプラグインとなっています。(正確に言うとAndroidはC#のスクリプト上で実装されているので外部コードを含まずプラグインではないです。iOSはObjective-Cを含んでいるのでプラグインです。まあ、気にしなくていいことですが。)

    テキストとURLと画像を1枚まで投稿することができます。URLや画像はオプションです。画像を使う場合は画像ファイルのパスを渡します。画像を使う場合はその画像にアクセスできるようになっていることが重要です。(権限や存在を確認する方が良いです。)
    利用に関してのライセンスも制限が少なくて利用しやすいです。


    今のところ私はAndroidでしか利用していないのですが、将来的にはiOS用のアプリを使って利用したいと思っています。そこで少し気になることがあるのです。

    iOSではLINEのアイコンを入れることが必要です。(Androidでは入れなくても問題なく使えます。)
    このLINEのアイコンはここでダウンロードできるのですが、 してはいけないこと変形・加工と明記されています。アイコン(PNG)をダウンロードすると、350x350の画像しかないので、Social Connectorの要求する57x57、114x114、120x120、180x180、72x72、144x144をどうやって用意すればいいのかがわかりませんでした。加工が禁止されているので、画像を縮小することもできないので、どこかに他のサイズを公式に提供しているのかもしれませんが……

    上に書いた懸念はロゴを改変してないということでおそらくは杞憂なのでしょう。そうでなければサイズ違いのアイコンを使うアプリで使用できなくなってしまいますから。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    以前の記事では、オンラインのゲームではマッチメイキング、同期、切断の3つの対応が必要だと書きました。
    現在、トランプ・ナポレオンをアップデートする予定でソースをちょっと見返しています。以前の記事ではあまり詳細まで解説していなかったので、良い機会だと思いマッチメイキングを解説してみようと思います。

    マッチメイキングにはサーバーが必要になりますが、Unity Multiplayerではそのサーバーが提供されています。そのため、サーバーの用意は不要で個人でもオンラインゲームが作れる環境があります。
    Unity MultiplayerはサービスウィンドウでUnityの各種サービスが使えるように登録をしておきましょう。これを行っておかないとエラーが発生して動きません。

    マッチメイキングにはスクリプトを書いて対応することになります。NetworkMatchを使って簡単に作ることができます。このインスタンスはNetworkManager.singleton.StartMatchMaker();のようにしてやると作られ、NetworkManagerのプロパティmatchMakerに参照が渡されます。(matchMakerははじめnullになっています。)
    NetworkMatchクラスのインスタンスが得られたら、後はそれに対して命令することでマッチする場所(ルームと呼ぶことにします。)の作成、ルームの削除、ルームへの参加、ルームからの退出、ルーム一覧の取得が可能です。
    それぞれ
    • CreateMatch
    • DestroyMatch
    • JoinMatch
    • DropConnection
    • ListMatches
    が対応します。いずれの処理も簡単に使えるものと詳細に設定ができるものが用意されています。
    CreateMatchで言うと、ルームの名前、ルームに入れる最大数、ルームの宣伝フラグ(たぶん検索に出すかということ?trueにしておけば良いらしいです。)、ルームのパスワードの4つの設定とコールバックです。CreateMatchなどの処理はすぐに終わらない非同期処理(コルーチン)なので、処理が終わったときに指定したコールバックが呼ばれる仕組みです。コールバックに処理の結果が渡されるので、それを見て適切に処理します。コールバックで特に何もしなくてもマッチングは行えます。
    詳細に設定する方では、matchAttributesというルームに対して属性をあたえることができます。この属性をListMatchesの方で指定することでルームのフィルタリングができる機能のようなのですが、残念ながら現時点では機能していません。質問したところバグだということなので、いずれ直るかと思いますが結構先のことだと思います。
    詳細版の方が良いのは設定を細かくできるためですが、面倒であれば簡易版でも十分です。 

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

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

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

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

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

      このエントリーをはてなブックマークに追加 Clip to Evernote
    FlashNumbersを作るのにかかった時間は約33時間でした。これはかなり短い時間でできたと思います。

    実際作業した時間の内訳を考えてみると、 タイトル画面の見た目やスクリーンショットを保存するときの権限についての調査に時間がかかっています。ゲーム自体を作るのにかかった時間は15時間程度だと思います。
    FlashNumbersではトランプ・ゲスイットの仕組みをほぼそのまま流用できたため、作成時間が短くなりました。これはとても良いことなのですが、以前の成果があるというのは忘れてはいけないと思うのです。それを忘れて短時間でできたことだけに目を向けてしまうと、完全に新しいものを作るときにどれくらいかかるかを余裕を持たずに見積もってしまいます。

    Unityで過去のプロジェクトを流用するときは、元となるプロジェクトを完全にコピーした方が早かったです。プレハブなどの参照先が消えてしまうと、いちいち参照をつけ直さなくてはならないのですが、全部コピーする場合は参照先が失われないのでそういったことは起こりません。
    既存のプロジェクトがある場合は、コピーして使うのが良さそうです。

    プレハブをコピーする場合はパッケージを作成しなくても、2つのUnityプロジェクトを立ち上げた状態でプロジェクトブラウザ間でプレハブをドラッグアンドドロップするとコピーすることができます。
    fn
    この方法を使って再利用しやすいのはUIでした。uGUIではUIは階層構造を持つように設計されていて、多くのコンポーネントを使います。利用するコンポーネントはデフォルトで用意されているものがほとんどなので、別のプロジェクトにコピーしてもスクリプトの参照やテクスチャの参照が消えるだけで復元が容易です。
    この方法に気づいてからはUIの再利用率が上がったと思います。

    FlashNumbersでは素早く作ることが目標にあったので、中々うまくいったと思います。あとはダウンロードが伸びてくれれば最高ですが、それはどうなるかわかりません。 

      このエントリーをはてなブックマークに追加 Clip to Evernote
    3/1に『FlashNumbers』を公開しました。
    dvt-title

    動体視力と記憶力の限界に挑むアプリです。次の動画を見るとどんなアプリかは一目瞭然です。
    fn
    見たとおりですが、一瞬だけ数字が表示されているので、それを覚えて解答するということを繰り返すだけのゲームです。繰り返すごとに徐々に早くなっていきますが、慣れてくると最大のレベルまで上がってもクリアできるようになると思います。そうなると後は自分の集中力の限界まで続けることになります。

    枠の数が難易度によって違います。簡単なものは動体視力を鍛えるのに向いていて、難易度が高いものはどちらかというと記憶力の訓練に使えます。

    ゲームというよりはちょっとした挑戦と思ってやった方が楽しいと思います。

    このページのトップヘ