FreelyApps

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


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

    カテゴリ:自作アプリ > 開発中

      このエントリーをはてなブックマークに追加 Clip to Evernote
    『FlashNumbers』のタイトル画面を作ってみました。いつもはあまり時間をかけて作っていないのですが、今回は美しいフォントを使用させてもらっているので、アニメを作ってみました。フォントは「数式フォント」というものです。キユマヤ園様が作成されたフォントです。

    画像真ん中にある"FlashNumbers"というのが数式フォントによる表示です。特徴的なデザインのフォントなので、見出しとかに使うとインパクトがあるかと思います。

    dvt-title

    数字が降っているのが今回作成したアニメです。uGUIを使って作成されています。Textを大量(100個)用意して、それを画面の上から下に向かって動かしています。数字をセットしたり、アルファをフェードアウトさせたりするとこんな感じの見た目になります。
    本当はもっとたくさん降らしていたのですが、処理落ちが激しくなってきたので断念しました。フォントの描画は結構重い処理のようです。

     

      このエントリーをはてなブックマークに追加 Clip to Evernote
    このアプリでは画面は横向きです。縦向きだと数字が縦に並んで見にくかったからです。なぜか見にくいと感じました。生理的なものなのかもしれません。

    画面の向きの設定はPlayerSettingsのOrientationという項目を設定します。モバイルではPortraitがデフォルトですが、これは縦向きの表示です。縦向きの表示ではホームボタン(Androidではナビゲーションバーのこと)は画面の下部に来ます。
    Portraitはホームボタンが端末の下側に来ている状態です。逆にPortrait Upside Downではホームボタンが端末の上側に来ていて、スマホを上下反対にして遊ぶことになります。
    横向きにするにはLandscape RightかLandscape Leftを選びます。端末によって向きが違うかもしれないので試してみることをお勧めします。

     autorotation-screen
    このアプリでは横向きであれば良いので、Landscape RightとLandscape Leftを切り替えられるように設定しました。上のような設定にすると端末を回すと、画面の表示が切り替わります。横向きにする設定だけをチェックしてあるので表示が崩れたりもしません。
    ひとつ問題があるとすれば、全画面表示の広告の向きは一定のようで、逆に表示される人もいるということくらいです。(Unityが制御しているわけではないからです。)


    最後に新しいアプリの名前を決めました。『FlashNumbers』とします。

      このエントリーをはてなブックマークに追加 Clip to Evernote

    徐々に数字の表示速度が短くなっていくようにしてみました。ある程度まで短くなるとそれ以上短くなりませんが、永遠にゲームは続いていきます。失敗するときがこのゲームの終了です。
    1つの枠には0~9の数字が表示されています。これを0~3までにしたり他の文字(アルファベット)とかが出るようにもして試してみたのですが、おもしろさは変わらなく感じたのでやめました。数字が出るという単純な方が良さそうです。

    ここでは見えませんが、実は難易度の設定も作ってみました。 枠の数、つまり一度に表示される数が変わります。当然、多い方が難易度が高いです。一番難しいのは記憶力も必要なので難しすぎるかもしれません。

    短期記憶で調べてみると数字の記憶は7個くらいらしいです。このアプリではその限界の7つまで出すつもりです。難しいですが、記憶のトレーニングにもなりそうです。 

      このエントリーをはてなブックマークに追加 Clip to Evernote
    ちょうど一週間前から新しいアプリの作成に取りかかりました。作業時間を測るアプリを同時に作っていたので、そちらが終わって今日ある程度機能を実装してみました。

    医学的なことはわかりませんが、たぶん動体視力の訓練になると思います。
    ゲームのFPSが60が限度なため、20ミリ秒程度が一瞬だけ表示する間隔の限界です。徐々にレベルを上げて、ある程度まで早くなったらそれ以降は同じ難しさでエンドレスとなる予定です。

    トランプ・ゲスイットの作成時にスクリプトをある程度整備したので、効率良く再利用できていると思います。スクリプトはアプリを作るたびにちょっとずつ変わっていくものですが、ゲームによらない機能はライブラリ的なものとして蓄積していくと良いと思います。
    ただこのライブラリをメンテナンスしていかないと古いバグがずっと残り続けるので、全部使うというのも考えものですね。できるだけ使いまわしたいけれど、 余計なことをして欲しくないです。
    ある意味そういったことがUnityなどのゲームエンジンを生むことになったのでしょうね。そして、それをまた繰り返しているわけです。ゲームエンジンの中のゲームエンジンの中の……と永遠に続きそうです。 

      このエントリーをはてなブックマークに追加 Clip to Evernote
    作業時間計測するためのアプリを作成しました。アプリ名はMeasureTimeです。

    エディター上ですが、動作を録画してみたのでご覧ください。
    mt
     
    5つのボタンが用意されていて、タイトルと累積時間がそれぞれのボタンに表示されています。ボタンを押すとタイマーのOn/Offが切り替わります。ストップウォッチと考えるとわかりやすいと思います。
    アプリの中断や終了時に時刻を保存しているので、再開時に経過した時間も足されます。(On状態になっているボタンのみ) 

    Editボタンを押すと書くボタンについて編集することができます。
    タイトルの設定、時間の修正、時間の初期化、全部初期化が可能です。これくらいあれば便利かと思ったのを入れてみました。時間の上限は表示から推測できそうですが、99d23h59m59sです。 つまり100日分です。2400時間を超えるものを考えていません。

    右上の歯車は全体の設定です。一応ボタンを押すとSEが鳴るようにしてあって、それを消すことが設定できます。全体に関わることがあればここに追加していくというところです。 


    需要があるなら公開しようと思っています。 
    さっそくこの記事を書くときに使っていて、これにかかった時間は約18分でした。 

      このエントリーをはてなブックマークに追加 Clip to Evernote
    作業時間を計測する」で作業時間計測用のアプリを作ると言っていたので、現在作成中です。

    核となる時間を測ることについてはいくつかの問題を解決したので、後は細かな機能を追加するくらいで完成しそうです。
    アプリケーションのポーズ時(Androidのナビゲーションバーによりアプリが中断されてしまう時)にその時刻を保存してやらないと、中断から復帰したときに経過した時間がわからなくなってしまいます。 この経過時間分を加算することで時間を正しく測ることができるようになります。
    またアプリを終了させた場合、次にアプリを起動するまでの時間がわからないと正しい時間を測れなくなります。
    この2点を解決すれば、時間を測ることができます。解決方法は特定のタイミングで時刻を保存しておくことです。

    時間計測部分を作ったところです。ボタンをタップすると計測の有効/無効を切り替えることができます。自分で使うように作っているので、なるべく楽なものにしたつもりです。5個までしかボタンがないのは、同時に測りたいものが5個もあることがないだろうからです。
    これが2日前くらい前の状態です。
    mt

    現時点の状態です。
    Editボタンの機能を入れてみました。色々な機能はEditボタンを押したときにウィンドウが開き、その上で設定するようにしています。最も重要な機能はストップウォッチ機能なので、それはボタン上で直接できるようにしたかったためです。
    タイトル、時間のリセット、全部リセットの機能を作ってみました。後は時間の直接編集機能があれば十分かなという感じです。
    mt2

      このエントリーをはてなブックマークに追加 Clip to Evernote
    開発中のアプリの紹介動画を作ってみました。
    ゲスイットというトランプゲームはマイナーなゲームだと思います。そんなわけでどういう風にゲームが進んでいくのかイメージしにくいでしょう。現時点で完成している対戦画面を動画にしたので、興味ある方はどういうゲームなのか見てください。

    YouTubeとニコニコ動画にアップした紹介動画を載せておきます。内容は同じですので、お好きな方をどうぞ。




    作っていると何百回も対戦することになるので、私は感覚がマヒしてきています。面白いかどうかはもはや判断しにくいので、細かいところの作り込みをして仕上げているところです。
    AIが学習するというのが挑戦的な今作なのですが、AIの学習方法がばれるとひっかけることができてしまいます。ルールに基づいて判断する固定的なAIの方がやはり良いのではないかと思う最近ですが、学習型のAIと固定的なAIの組み合わせが最適なのかもしれないとも思っています。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    新しいアプリの作成状況は中心となる遊びの部分がほぼ完成といったところです。

    tg1-1
    こんな風に13枚のカードを使って2人で対戦する画面を作ってみました。手前が自分なので、カードが表になって見えています。置く側の裏向きのカードは相手の手札を表しています。これは見れません。

    tg1-2 tg1-3
    対戦が始まると相手の手札を探るために質問をし合っていきます。最終的に真ん中にあるカードを当てればいいのですが、上のスクリーンショットではかなり序盤に解答をされています。ふつうは3回程度質問してから解答することになるでしょう。

    大体のところが完成したと言っても完成度で言えば70%くらいでしょう。細かなところや使いやすさを向上させていくのは進みが遅くなっていくので先はそれなりに長いです。
    ゲームの流れがちょっとわかりにくいみたいなので、実機でのプレイ動画を作っているところです。そのうちアップして紹介しておきたいと思います。

    最後に予約トップ10というサイトで事前予約を受け付け中です。リリース後すぐ遊びたい方は予約すると良いかもしれません。
    ルールは単純なので暇つぶしにも良いですし、AIが学習していくところをみて楽しむのもおもしろいと思います。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    次のアプリはゲスイットというトランプゲームを題材にしたアプリにする予定です。
    ゲスイットはあまり馴染みがない人が多いと思いますが、単純なルールですぐに覚えられます。2人で遊ぶためのゲームで読み合いや騙し合いの駆け引きが面白いゲームです。

    ちょっと紹介すると、A~Kまでのスートの一揃い13枚のカードを使います。6枚ずつ配り、余った1枚のカードが何かを当てるのが目的です。自分の手札がヒントになりますが、それだけだと1/7で当たるだけのゲームになってしまうので、順番に特定の行動ができるようになっています。
    自分の番には質問か解答のいずれかのみができます。質問はA~Kまでのどれか1枚について相手に持っているかを聞くことができ、相手はそれに対し正しいことを教えなければなりません。またあるカードについてした質問は自分も相手もできなくなります。解答は余った1枚のカードが何かを当てることです。当たれば勝ちですが、外れれば負けになります。解答したらゲームは必ず終わります。
    勝つ方法は自分で余った1枚のカードを当てるか、相手に外させるかのいずれかです。
    要は自分の持っていないカードを質問して当てる確率を高めたり、自分の持っているカードをわざと質問して相手を混乱させたりするということになります。

    表情などから駆け引きしたりするのが面白かったりするので、対人が面白いのは言うまでもないです。ただ質問に制限があるので、どの質問がされたかをメモしておくなどが必要です。ちょっとした暇つぶしにはやはりアプリに分があります。手軽さと練習にはアプリがよく、知っている人とは対人戦が面白いというのがトランプの特徴だと思います。

    Unity 5.3.1で作っているのですが、PlayerPrefsのファイルが見当たらなくなったりと色々変わっていて困っていることが多いです。もしかしたらバージョンを下げてUnity 5.2にしてリリースするかもしれません。
    Unity 5.3を使う理由が今のところないので、安定性の方が大事だからです。

    今後はしばらくトランプのアプリを作っていく予定です。
    ゲスイットができたら、ポーカーを作ろうと考えています。ふつうのポーカーと思われている5カードドローも良いですし、他の変わったものも良いです。 

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

    1. 概要
    2. ルーム検索
    3. ルーム参加
    4. ルーム作成
    5. 備考

    1.概要
    通信対戦とは、インターネットを介して他のプレイヤーと対戦することができるものです。2~5人のプレイヤーが参加することでゲームを開始することができます。通常の対戦と異なり操作には時間制限があります。
    通信対戦を行うにはルームが必要です。ルームとはプレイヤーがゲームに参加するための待ち合わせ場所のことです。プレイヤーはルームを作るか、ルームに参加するのが基本になります。
    ルームを作る場合は他のプレイヤーが参加してくるのを待ちます。後述の4.ルーム作成をお読みください。
    既にルームが存在している場合は、ルームに参加することができます。後述の3.ルーム参加をお読みください。
    ルームに2人以上のプレイヤーが集まったらゲームを開始することができるようになります。
    ルームを作った人をホスト、ルームに参加する人をクライアントと呼びます。ホストがいなくなるとルームがなくなるので、ホストのプレイヤーは通信がなるべく途切れないようお願いします。
    アプリが中断してしまうと通信が切れるので、アプリが中断しないよう定期的に画面をタップしてください。
    通信が切れた場合は通信対戦を続けることはできませんが、そのまま通常の対戦に移行して遊び続けることができます。通信対戦が行われているときは画面左上に紫色のアンテナのアイコンが表示されています。
    Screenshot_2015-10-25-19-17-03

    2.ルーム検索
    ルームの名前を指定して検索することができます。特定の人と遊ぶためにあらかじめルーム名を決めておいて一緒に遊ぶといった使い方が可能です。
    ルーム名を入力し、「ルーム検索」ボタンを押すとそのルーム名でルームがあるか検索をします。ルームの一覧は定期的に更新されます。
    ルームが見つかった場合は、ルーム名と参加人数が表示されるボタンが現れるのでそれを押してルームに参加することができます。
    Screenshot_2015-10-25-19-17-47 Screenshot_2015-10-25-19-18-09 Screenshot_2015-10-25-19-20-07

    3.ルーム参加
    存在しているルームを見つけて表示します。ルームの一覧は定期的に更新されます。
    ルームが見つかった場合は、ルーム名と参加人数が表示されるボタンが現れるのでそれを押してルームに参加することができます。
    Screenshot_2015-10-25-19-18-15 Screenshot_2015-10-25-19-20-16

    4.ルーム作成
    ルーム名を指定してルームを作ることができます。ルーム名はなくても問題ありませんが、他の人と違う名前をつけることで区別しやすくなるためつけることをお勧めします。
    ルーム作成後はホストとして他のプレイヤー(クライアント)が参加してくるのを待ちます。真ん中の画像のようにはじめ自分の名前だけが表示されていて、このときは戻るを押して通信対戦をやめることができます。
    クライアントが1人でも参加すると、開始ボタンが表示され戻ることはできなくなります。誰かが開始を押すことでゲームが開始されます。5人まで参加可能です。
    Screenshot_2015-10-25-19-17-53 Screenshot_2015-10-25-19-19-08 Screenshot_2015-10-25-19-19-27
     
    5.備考
    プレイヤーの名前は設定から行えます。初期設定では「ユーザー」になっていますので、お好きなものに変更をしてください。

    このページのトップヘ