2014年3月25日火曜日

新作Androidアプリ開発 GUIを盛る編 ダッシュボード的なパネル

今回はStats(統計)機能の画面のGUIを盛っていきたいと思います
現状の画面だと操作と情報表示部分の区切りがはっきりせず、どこが何なのかをもう少しわかりやすくしたいので表示切替操作部をダッシュボード調にしてみます
こんな感じ、少しはわかりやすくなったかな?
こうなるとアイコンがちょっとしょぼい気がしますね、要改良です
静的なコンテンツなのであまり難しいことはしてません
layout.xmlはこんな構造です
ちょっと入れ子が多くなってしまいますね
ポイントというほどのあれはありませんが、強いて言えばダッシュボードパネル部(オレンジ)の円弧分のPaddingを取ることと、右側にドロップシャドウを落としてやることで立体感を出してます
あと緑のLinearLayoutは、3等分でアイコンを配置したいがためだけに入れています

2014年3月23日日曜日

新作Androidアプリ開発 GUIを盛る編 スタートシグナル

さて今日もGUIを盛っていきたいと思います
ゲームのスタート時いきなり始まるとユーザーがとまどうということで、3秒のカウントダウン時間を設けることにしました
ここでスタートシグナルのようなものを出したいということでとりあえず作ってみたのがこれ
んー確かにスタートシグナルなんだけど・・・
ちょっと普通っぽいし、いまいちかなぁ
一ひねりしてみようと作ったのがこれ
色調と形をもうちょっとどうにかしなきゃですが、なんとなく・・・こんな感じでいい?かな?
実装は横着して簡単にベースの黒いところと左赤、右赤、真ん中青を順番に重ねて描画するだけです

デザインは正解がないのでセンスがないと試行錯誤が増えてしまいますね・・・

2014年3月21日金曜日

新作Androidアプリ開発 GUIを盛る編 ゲージのような表示

さて新作アプリの開発ですが、 4回にわたるテコ入れ編でクリティカルな問題に対しての対策が出来ました
あとは完成に向けてひた走るだけ!?
というわけで今回から見た目部分の改良でGUIを盛る編といきたいと思います

まずは右上に表示していた残り時間の表示がスコアの表示と同じじゃわかりにくいし、なんかしょぼいのでもう少し視覚的に残り時間がわかりやすいようにしたいと思います

完成イメージはこう
これをどうやって描画したらいいかなぁと考えました
やり方はいろいろでしょうが今回は丸いゲージの部分の画像をフルで用意して、それを扇形のclipPathでマスクして必要部分だけを描く方法を取りました
パーツを一個用意して回転させながら60個描く方法もありますが、clipPathの方法なら切れ目がないようなアナログ的なゲージにも対応できる思います
コード的には以下のような感じ
    int time; //残り時間
    int rect; //ゲージの大きさのRect
    Bitmap gauge; //フルゲージ画像
    Path clip = new Path();
    clip.moveTo(rect.centerX(), rect.centerY());
    clip.addArc(rect, 267 + ((60 - time) * 6), 360 - ((60 - time) * 6));
    clip.lineTo(rect.centerX(), rect.centerY());
    canvas.save();
    canvas.clipPath(clip);
    gauge.draw(canvas);
    canvas.restore();
このブログで以前、SurfaceViewで描画範囲を限定するでやった方法と同じですね
clipPathは描画したい部分の指定になるので、addArc()の開始角と終了角をずらしながらセットしてやります

わりといい感じにできました

2014年3月18日火曜日

Google Play Services 4.3発表 クロスプラットフォームなネットゲームの時代が到来か?

Google Play Services 4.3発表 - iOSとのマルチプレイヤーゲームに対応
http://iwire.jp/news/2014/03/18/003/index.html

主な変更点
・Google AnalyticsとGoogle Tag Managerがファーストクラスオブジェクトとして利用可能になる
・Google+を利用してゲーム内アイテムや通貨のやり取りを行う"Game Gifts"機能の追加
Drive API、Address APIの強化
・ゲームのカテゴリを追加、現行の17から20カテゴリへ
(追加されたのはおそらく"ウィジェット","ライブ壁紙","教育"、また"トリビア"が"雑学"に変更)

新カテゴリ一覧(2014/03/19)
カテゴリ名備考カテゴリ名備考
アクション
パズル
アドベンチャー
ファミリー
アーケード
ボード
ウィジェット新カテゴリ ライブ壁紙新カテゴリ
カジノ
レース
カジュアル
ロールプレイング
カード
教育新カテゴリ
シミュレーション
言葉
ストラテジー
雑学旧トリビア
スポーツ
音楽

マルチプレイ機能がさらに強化され、iOSとも繋がることが出来るようになるみたいです
Androidでネットゲームをいつか作りたいなぁとは思っていましたが、もっといろいろ勉強しなきゃですね・・・

2014年3月17日月曜日

新作Androidアプリ開発 テコ入れ編 何度もやりたくなる工夫

さてテストプレイ編であがった課題の解決も最後となりました

4.何度もやりたくなる気がおきない

さらっとヒドイ事いいますね、一生懸命作ってるのに・・・
しかしまあこれがユーザーの厳しい意見だということで、厳粛に受け止めて改良をしましょう

これについては今までのテコ入れでゲーム性、操作性等の改良により幾分良くなっていると思います
あとは得意の?プレイデータを蓄積して統計分析できる機能をつけます
これで何度もやる気がおきるのではないか!?という目論見
こんな感じに統計値やグラフで、過去の記録を見れるようにしていこうと思います

2014年3月14日金曜日

新作Androidアプリ開発 テコ入れ編 ゲーム性をなんとかする

気がついたらもう3月になっていた・・・早いところ新作アプリを完成させたい
テストプレイ編であがった課題の3つ目の対策です

3.60秒で何ゴールできるかというルールではスコアの頭打ちが早いのではないか

ゲームの根本的なところに課題が出てしまいました
まず直接的な対策として現在ボールのセットはシュートした後に高さがピークを越えた瞬間に次のボールをセットしていました
これをもっと早くの上昇中の一定高度を超えたところでセットするように変更
この変更で単純にシュートの回転率を上げることが出来るため、シュート数の増加になりスコアの上限があがることになります
まあ、あくまで理論的にではありますが・・・

そしてもうひとつのテコ入れとして1分間で何ゴールかというルールと別に、何秒で10ゴールを達成するかというタイムトライアルモードを作ることにしました
これで二通りの遊び方が出来るようになります
しかしアプリ名の1Min Basketball(仮)は変えないとならんかなぁ

2014年3月9日日曜日

新作Androidアプリ開発 テコ入れ編 見た目をなんとかする

さてテストプレイ編であがった課題の対策を続けたいと思います
今回はこれについて

2.ボールの動きがわかりにくい、特に高低差、ゴールしたのかどうか、たまに変な挙動

主に見た目の部分に手を入れていきましょう
まずはボールの高低差表現のためボールの高さによってボールの大きさを変えます
ボールの大きさは視点とボールの距離に比例するので式はこんな感じ


zoom : ボール描画ズーム率
z0 : 基底ボール高さ
z1 : ボール高さ
eye : 視点高さ

とりあえず視点高さを15mとして描画してみるとこんな感じ
 
まあ実際はこんなもんでしょうが、ゲームなので多少大げさに表現したほうがいい場合もあります
視点高さを9mにしてみます
 
ぐっと近づく感が出たでしょうか

次に背景に画像を入れていきます 1枚絵だと簡単ですが4:3比率の画面、ワイドな画面などに対応するため今回はタイル表示にします
こんな画像を用意して縦幅いっぱいで横に向かってタイル描画するだけ
タイル描画は以前ブログで紹介しました
SurfaceViewでの画像のタイル描画(繰り返し) 
こんな感じになります

次にさらに高低差感を出すのにボールに影をつけてあげます
影の位置はこのようにボールの位置とライト位置から上と下の三角形の比率で求めます

4つほどライトをつけてみた結果がこれ


ちょっと影が薄いかなー、改良の余地はまだありますがだいぶゲームらしくなってきました