2012年6月9日土曜日

リプレイ圧縮

リプレイの圧縮ロジックの実装が完了。
試しに1面~2面途中までの実際のプレイデータ(9241フレーム)で圧縮率を測ってみたところ
・圧縮前:46,269byte
・圧縮後:16,401byte <圧縮前の約35%>
という感じ。

だいたい、1/3ぐらい。
zipのアルゴリズムで圧縮した場合、平均して圧縮前の90%程度に圧縮できたので、zipには全然及びません。
まぁ、簡単なアルゴリズムで圧縮しているので、この程度です。
もうちょっとネバってアルゴリズムを改造するか若しくはgzipにすべきか又は諦めるか・・・
まぁ、35%でも圧縮できた訳ですし、サラリと諦めてゲーム本編の開発を急ぐのがベストか。
あまり難しいアルゴリズムにして、変なバグを作り込むのもイヤですし。

ようやく中ボス(2面)

ようやく、SHOT04(NOKOGI Rider)の2面中ボスを作成できるところまで進捗。

2面のキャプチャを公開するのは初。
背景のテーマはダンジョンで。(BGMのタイトルもダンジョンだし)
面毎に一応テーマらしきものを決めて背景画像を描く方向。
・1面:いかにもシューティングっぽい感じ
・2面:ダンジョン
・3面:地球(海にしようか上級にしようか)
・4面:箱
・5面:まだ決めてない

問題は私の作画センス。
それでも、背景については外部素材を使わずに作ります。

機体類もなるべく自分で描いています。
ただし、デッサン力が追いつかない部分はDOGA頼みですが。
DOGAもなるべくなら使わない方が良いので、デッサンだけ流用させて貰って色は自分で塗り直すとか、自分で描いたパーツとDOGAのパーツを組み合わせるとかして、DOGA単体で描いた時の上手さをかき消す努力をしてます。

他人の素材を使うと、妙にツクールっぽい感じがしてツマラナイものになります。
別にツクールで作ったものがツマラナイという訳ではないです。
むしろ、ログインのSOFCOMとかは好きでしたし。

ツクールで作られたものは、デフォルト素材を使っているものが多い。
それらがどういう訳か微妙なものが多く、下手でも全部自分で作ったものを主体で使っているものの方が面白いものが多かった気がしています。「究極バカげ~む 超ステキ編」とか。

2面中ボスの作成に入る前に、リプレイデータの簡易圧縮保存をやる予定ですが。
zip圧縮でも良いのですが、コードが汚れてしまうので、独自アルゴリズムで。

2012年6月8日金曜日

ネームエントリー画面

開発中のSTG(NOKOGI Rider)では、ハイスコア保存時はネームエントリーしない仕様にしたのですが、リプレイを保存する時は、ネームエントリーする感じにしました。

で、ネームエントリー画面を作成。

こういうシステマチックな画面なら、キーボードやコントローラよりもタッチパネルの方が簡単に作れます。

名前の領域をタッチすれば直接、カーソルを移動できます。

「←」や「→」のボタンでもカーソルを移動できますが。
「カーソルのボタンなんて要らないのでは!?」

と思われた方は賢明です・・・作っている途中で気付きました。

でも、無駄なスペースが発生するのがイヤなので、残しておきます。
カーソルボタンを削除した分、別の文字(ハイフンとかアットマークとか)を入れても良かったんですがね。
ただ、「一番下の列は制御系」、「上4列は文字系」という形の方が様式的に美しいかと。

iPhone/Android比較

私は、開発上の都合でiPod touch(iPhoneの代用)とAndroidの2台持ちをしていますが、
「iPhoneとAndroidだと、どっちが良いの?」
ということを知りたい人のための参考情報を書いておきます。
こういう比較記事は掃いて捨てるほどありますが、一応、私視点ということで。

ちなみに、iPhoneとiPod touchはだいたい同じです。
Wikipediaに載っていた相違点は以下。

  • 音声通話やSMS、 MMSが利用できる。
  • HSDPA (W-CDMA) などにより、無線LAN以外のデータ通信ができる。
  • 近接センサを搭載している。
  • デジタルコンパスを搭載している(3GS以降)。
  • LEDフラッシュを搭載している(4以降)。
  • バイブレータを内蔵している。

あとは、RAMサイズが若干違ったりします。(iPod touch=256MB/iPhone=512MB)
電話用途以外であればだいたいiPod touchでも同じことができるという認識で問題無いと思います。

■アプリの安全性

割と「iPhoneの方が安全」という認識でまかり通っています。
が、iPhoneも結構微妙。

iPhoneのアプリは、Appleによる審査があります。
結構厳しいことで有名ですが、コードレベルでの解析が100%できるものでもありません。
なので、絶対に安全なアプリしか無いと思ったら痛い目を見ることになるかも。
レベルの低いクラッカーのアプリであれば、すぐに見つかって、マーケットから締め出されて終了ですが。

Androidのアプリは、審査に関してはザルです。
代わりに、マーケットから落とす時に必要な権限(パーミッション)が明記されています。
「ネットワーク通信する」とか「電話機のIDを読み出す」とか「通話をする」・・・などなど。
つまり、落とすアプリのパーミッションが問題無いかちゃんとチェックすれば、問題が起きることは無い筈です。
ただし、root化した端末であればパーミッションを無視して何でもできるからアレですが。
通常、root化した場合メーカー保障が受けられなくなるので、普通の人はまずやらないと思いますが。

iPhoneのアプリの場合、Androidのようなパーミッションの仕組みが無い分、危険。
Androidのアプリの場合、何も考えずにアプリをインストールすると、危険。
つまり、システムの安全性は、人的なシステムならiPhone機械的なシステムならAndroidに分があります。

■操作性

iPhoneだと1つしかボタンが無いから簡単。
Androidは3~4ボタンぐらいあるから若干複雑。
・・・という意見をよく見ますが、全ての操作が1ボタンで済む訳ではないです。。

Androidの3ボタンは、
①機能ボタン(アプリの各種機能を選択するためのボタン)
②ホームボタン(アプリを中断してホーム画面に戻るためのボタン)
③戻るボタン(アプリの操作を1つ前の状態に戻すためのボタン)
というものがあります。(実は正式名称は知らないので、正式名称は違うかも)

だいたい「どのアプリでも概ね共通する操作」があります。
iPhoneの場合、そういったボタンの配置がアプリによって区々なので、操作を覚えるのが面倒。
全てのアプリに共通する操作は「アプリを中断してホーム画面に戻る」のみです。

Androidの場合、上記3ボタンの範囲であれば、全てのアプリを同じボタンで同じ操作できる分、初めて触るアプリも概ね直感的に操作できる場合が多いです。

共通ボタン以外の操作性はアプリ依存。
なので、同じアプリであれば、操作性はAndroidの方が良いと言えると思います。


■ストレージ


普通の携帯電話は、外付けのSDカードをストレージとして使えます。
Androidも外付けのSDカードをストレージとして使えます。
iPhoneは外付けのSDカードが無いので、ストレージとして使えるのは携帯本体のメモリのみ。
なので、iPhoneで大容量のデータを扱う場合、無線LANディスクやクラウドが必須。

「SDカードぐらいついてて当たり前だろ?」
という風に思ってiPhoneを買った後でオワタ状態になった人を何人か知っています。
「よく調べてから買いましょう」ということかもしれませんが。
しかし、常識的に考えて有り得ないと思っていた時期が、私にもあります。
ただ、それでユーザの不満が爆発していないということは、許容範囲の事かな?という認識。

■どちらが良いか?

電話orメールしかしない人なら、ガラパゴス携帯がオススメです。
電池持ちが良いですし、余分な機能は何もついていないので。

アプリをガラケーと同じ感覚で使いたい人であれば、iPhoneがオススメです。
完全にガラケーと同じ感覚で使うと(アプリにできる事が多い分)ちょっと危険ですが。
先述のパーミッションの話が理解できる人の場合は、Androidの方がオススメです。

あと、「あくまでも個人の感想」ですが、個別のアプリの事情でいえば、

・2chをよく使う人 → Androidがオススメ
2chMateが便利です。(現状iPhone用には2chMate程使いやすいビューアが無い)

・ニコニコ動画をスマホで見る人 → Androidがオススメ
iPhoneだと、ブラウザからは見れないので専用アプリが必要ですが、専用アプリの使い勝手が悪い。
ブラウザの方が直感的に操作できます。
そして、Androidならブラウザから見れます。

・Caveシューティングをやりたい人 → iPhoneがオススメ
Android版は、種類が少ないし、対応機種が結構限られています。
ただ、Caveシューティングは結構電池を食うので、スマホよりもiPod touchでやった方が良いかも。

・ツイッターをやる人 → Androidがオススメ
私はツイートしない(ROM専)でツイッターを使っていますが、ガジェット(ホーム画面から記事を見ることができる機能)が便利。iPhoneだと、いちいちアプリを起動する必要があるので面倒。

便利さという面では、iPhoneよりはAndroidの方が良さ気。
あと、Androidでテザリングを設定すれば、iPod touchでも外出先で通信できるので、2台持ちにしたい人の場合、Android+iPod touch以外の選択肢は無いと思います。

追記(25-Sept, 2012):
iPhone5でテザリング対応したっぽいので、iPhone5+Zシリーズという選択肢が増えたかも。

2012年6月7日木曜日

dotエフェクト改善

SHOT04(NOKOGI-Rider)では、ドットでエフェクトを入れています。
かなり古典的な手法ですが、軽いし、パレットアニメーションすれば割と綺麗なので現役です。
下図だと、真ん中あたりのショットを敵に衝突させた時の衝撃波や、自機のエンジンから噴出している燃えカスなど、使い所を挙げればキリがない程度に使っています。

この座標管理を整数から実数に変更してみたところ、かなり疎らにバラけてくれるようになり、綺麗に表示されるようになりました。実数とはいっても、floatやdoubleではなくshortで固定小数点方式ですが。(実数は処理効率が悪い上に、メモリ効率も悪いから全く使っていないです)

使い所を挙げればキリがない程度に使っていたから、修正が微妙に大変でしたが。

2012年6月6日水曜日

実機ビルド

今日はあまり時間が無いので、ここまでできたシステム周りを実機(Androidのスマホ)で動かす為にビルド。
普段、VGEのエミュレータでしか動かしてなくて、それで99%問題無い・・・
・・・と、高を括っていたら、Android固有のバグを幾らか発見。

当然のことですが、やはりシステム周りを弄った場合は、十分に実機テストをしないとマズイ。
ゲーム本編もエミュレータ(@Windows)と実機ではだいぶ感触が違うし。
もちろん、一通り完成したら実機で叩きまくる予定なんですが、完成していなくても週1ぐらいで実機用にビルドして会社の休み時間などにデバッグすべきかも・・・Android用のコンパイルは無茶苦茶遅いから面倒ですが。

NDKとSDKのビルド+署名で1回のビルドにつき1分以上掛かるから、独自のエミュレータを設計して、それで動くゲームを作る開発環境にしないと、とてもじゃないけどゲームを作る気になれないレベルの遅さです。(ちなみに、Windows版VGE用のビルドであれば、差分コンパイルが1~2秒弱、フルビルドでも10秒前後のコンパイル時間)

単に、私が開発機に使っているマシン(Atom機)が遅すぎるだけなのかもしれませんが。

2012年6月5日火曜日

リプレイスロット=8

リプレイ機能の実装がほぼ完成。
あとは保存する時のネームエントリー処理を実装するぐらい。
ロード画面は↓こんな感じ。

リプレイの保存の仕組みはInvaderBlock2と同じ。
ゲームオーバー後にSAVE REPLAYを選択して、保存するスロットを選べばそこに保存されます。

ただ、保存できる数は、8個にしました。(InvaderBlock2は16個)
理由は、スマホの画面では16個だと細かすぎて押し難かったので。
代わりに、PRACTICEモードでは、難易度(RANK)、機種(NOKOGI-Rider)、ステージ別にハイスコア獲得時に自動保存するので、PRACTICEでの保存数は45個。

リプレイ機能に関しては、どちらかといえばゲーム本編の方はオマケ。
リプレイ機能の最大の目的は、PRACTICE用です。

しかし、Androidだと「ストレージ」という概念がLinuxと同じファイルシステムの仕組みで存在するから、ユーザ向けに「リプレイデータはxxxディレクトリに保存してますよー」的な情報開示をしておけば良い訳ですが、iPhoneだとそういった部分はどうなるのやら。まだ、iPhoneの開発環境の仕様は調べてないから、よく分かりませんが。(恐らく、iPhoneはストレージ周りがかなり弱いから、そこら辺で色々と仕様的にAndroid版と同じにできない可能性が高いと思っています)

合理的ではないものを作りたい

ここ最近、実機版の東方VGSの開発が忙しくて、東方VGSの曲追加が滞っています。 東方VGS(実機版)のデザインを作りながら検討中。基本レトロUIベースですがシークバーはモダンに倣おうかな…とか pic.twitter.com/YOYprlDsYD — SUZUKI PLAN (...