2012年2月24日金曜日

私信

色々とGoogle系の作業が増えてきたので、ブラウザをIE9からChromeに変更。
このブログは、Chromeの方が大分書き易いような気がしないでもないです。
ニコニコ動画等はちょっと微妙に重くなったかも。

ちなみに、ブログをYahooから移行して2週間ぐらいですが、その期間のアクセス統計を見ると、
・国内のアクセスが多かった頃→IE率が高い
・米国からのアクセスが先週ドカッとあったとき→Chrome率が高い
という感じでした。

何故、米国からのアクセスが有ったのかは不明。
亜米利加人が興味を持ちそうなネタを書いた覚えは無いですし。
謎です。
ただ、米国ではChrome率の方が高いのかな。

それはさておき、InvaderBlock開発は本日はノータッチ。
来週の月曜日に有給を取得したので、土曜日~月曜日に一気にサウンド系統+その他諸々の細かい部分を完成させて、その次の週ぐらいから配信開始が目標。

ちなみに、InvaderBlockの価格設定ですが、まだ未定。
1$以下にするのは確定ですが。
色々と悩んでいます。

2012年2月22日水曜日

指が疲れなくなった

ちょっとした工夫により、InvaderBlockがタッチペンを使わなくても指が全然疲れなくなりました。

そもそも、何故、疲れたのか?
という点について、考察が甘かった。
実は、肉体的に疲れたのではなく、精神的に疲れていたようです。

元々の仕様は、タッチの変化(スライド)量をバーの移動量としていました。
つまり、下図のような感じ。


だから疲れた訳です。「nピクセルもスライドしなければ、バーがnピクセル動いてくれないっ!!><」
という感じで、精神的に。
一応、指を動かす動作で肉体も疲労しますが、精神的な疲労の方が一般的に厄介。

そこで、タッチしている位置をターゲットとしてバーを移動させる形に仕様変更(バーの移動量をタッチで示すのではなく、バーが移動すべき位置をタッチで示すように変更)したところ、Androidでプレイしても全然疲れなくなりました。

ゲーム画面中では、目標位置がパッと見て分かり易いように、タッチしている間、青色のラインを表示する感じにしました。

公開準備は焦る必要がなかった

一応、Androidマーケットへアプリを公開するのに必要な準備を一通り済ませました。
即日でできるから、焦って今やる必要はなかったかも。
第一、まだアプリは完成してないし。

昔、Vectorでシェアウェアのプログラムを公開するための手続きをやったときは、2週間ぐらい掛かった気がしたので、前もってやっておきました。

Androidの場合、開発アカウント作成、販売アカウント設定、口座情報の登録がそれぞれ分かれていて、開発アカウント作成(※25ドル必要)と販売アカウント設定は即日でできます。

口座情報の登録完了には、デポジット確認が必要なので、3~5営業日程度掛かるかもしれませんが、恐らく振込み発生のタイミングで問題無い状態であれば問題無い筈。
なので、有償アプリであっても、即日公開が可能じゃないかと思います。

ちょっと大きな問題

小一時間ぐらい、Android版のInvaderBlockを遊んでいて気付いた問題・・・
スライドしまくっていると指が疲れる。

ん~・・・仕様です。
タッチペン推奨ということで。
こればっかりは、どうしようもない。(仕様だけに)

ソフトウェア的なボタンを実装しているゲームも結構有ります。
でも、私が遊んだ限り、ソフトボタンは使い難いものばかりだったので、気が乗らない。
何というか、「押している」感が無いので、精神的に不安定になります。

音を鳴らして誤魔化しているものもあるけど。
でも、やはり聴覚というのは、触覚と比べて脳に伝わる刺激が弱いものだから、申し訳ない程度の解決要素にしかなりません。

iPod TouchやAndroidで決定的にマズイのは、十字キー+4ボタン程度のゲーム・インタフェースをハードウェア的に標準搭載していないこと。
まぁ、ゲーム機ではないから、当然ですが。
(私はゲーム(開発)でしか使ってないけど)

2012年2月21日火曜日

動いた

スクリーンのタッチ検出処理を実装したところ、完全に動作するようになりました。
まだ、音は出ないけど。
ちょっとパッド(バー)の位置が下過ぎたので、指と重なって邪魔だったから、ちょっとだけ上の方に移動する程度の修正をしました。
体感的には、Windows版と概ね同じ感覚。
こうなることは想定済みでしたが、完璧です。
これでようやく、Androidで遊べます。

あとは音をつければ本当に完成。
そろそろ、Androidマーケットに登録する手続きを調べたほうが良さそうです。

色がおかしかった原因

先ほどの記事で、色がちょっとおかしかった原因が判明。
凡ミスでした。
スプライトの仮想VRAMをAndroidBitmapに設定するのは、ちゃんとAndroid用のパレットテーブル(16bitカラー)を咬ませていたのに対し、BGの仮想VRAMを設定するときに誤ってWindows用のパレットテーブル(32bitカラー)を咬ませていたのが原因。

という訳で、修正して実行したところ、問題解決。
AndroidでもちゃんとWindowsと全く同じ画面が表示されました。

ちなみに、現時点でのVG-Engine+InvaderBlockのソースコードのファイルは次のような構成になっています。

それぞれのファイルの意味は、
  1. Android.mk: ndk-buildをするためのmakefile
  2. com_suzukiplan_IBLOCK_IBLOCK.h: javahで生成したJNIヘッダ
  3. game.c: InvaderBlockの処理
  4. NUL: ndk-buildをした時に生成されるゴミファイル
  5. vge.h: VG-EngineのAPIを使うためのヘッダファイル
  6. vge_a.c: VG-Engine本体(Android版)
  7. vge_w.c: VG-Engine本体(Windows版)※Android版ではビルドしない
  8. vgeapi.c: VG-EngineのAPI
  9. vgeint.h: VG-Engine本体とAPI間で共用する内部データ定義等のヘッダファイル
灰色の網掛け部分は、私が作ったファイルではなく、自動生成物です。
今回のVG-EngineのAndroid対応で作っているソースはvge_a.cのみ。
その他のソースは、Windows版から1行たりと修正していません

要するに、Windows版とAndroid版の動きは全く同じです。
なので、今後、InvaderBlockV2のスクリーンショット等を掲載するときは、Windows版のものを載せます。

(補足)
先ほどの記事では、(テンションが高かったため)携帯でタブレットの写真撮影をし、メールでPCに飛ばし、それを載せていたのですが、私の携帯は従量課金制なので勿体無い。ついでに、携帯のSDカードは、バッテリーを外さないと取れないという、素晴らしく使い難い設計(iida製のPLYという機種)なので、SDカードに保存したデータをPCへ持ってくるのも面倒くさい。

2012年2月20日月曜日

初画面表示~テンションが上がらざるを得ない

きたぁーーーーーーー!!!


はじめて、Androidの画面にInvaderBlockのタイトルが表示されました。
ただ、パレットのbit演算(24bit→16bit変換)をミスっているらしく、画面の色が変な感じですが。
それでも、画面が概ね想定通り表示されてくれたので、テンションが上がらざるを得ません。

フレーム速度は、63~62fpsで安定しています。
音声処理を追加したとしても、VG-Engineの性能面での問題は全く無さそうです。

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

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