2012年4月16日月曜日

todo

本日は有給休暇。
試験後は必ず有給休暇を取っていますが、試験が半ボイコット状態なので、若干後ろめたいです。

敵弾や敵&敵弾との当り判定、自機の爆破などを実装。
敵弾は、敵と概ね似たような感じの別のデータで管理することにしました。
あとは、
・ザコ敵の種類を追加(現状3対のみ。1ステージ8種類ぐらい欲しい)
・敵弾の種類を追加(現状、自機狙い/自機外しと固定方向弾の2種類のみ)
・中ボス
・ボス
・ゲームオーバー処理
・ステージクリア処理
・スコアシステム
が主だった作りこみ系の作業か。

ちなみに、ランクはEASY/NORMAL/HARDの3種類。
EASYは、「ナメんな!」というぐらい楽にするつもり。
HARDは、「ふざけんな!」というぐらい難しくするつもり。

そういえば、まだAndroidで一回もコンパイルしたことが無いので、そろそろ、一度実機で検証をしてみる必要があるかも。前回、InvaderBlock2を初めてWindows→Androidに移行した時、色々とトラブったので。
特に、入力系統が想定通りにできるかどうか、早めに確認しておかないとマズイことになります。

2012年4月15日日曜日

タイトル画面

タイトル画面(仮)を作成。
概ね、InvaderBlock2と同じメニューになります。
実は、普段ゲームを作るとき、タイトルはゲーム本編が完成後に作っているのですが、後で作る方が面倒なので、先に作っておくことにしました。先に作っておく方が、色々と便利。

まだ、画面上の何処をタッチしてもゲームスタートにしかなりませんが。
評価版では、プラクティス以外全部使える状態にするつもりです。


全然関係ありませんが、今日は情報処理試験でしたが、午前2のみ受験して帰宅。
次の秋は、午前1を受けなければいけないけど、割と朝には強いので問題ありません。
なんというか、時間配分を間違えました。
微妙に時間が掛かる計算問題が2問ほどあったのですが、ウッカリそれらをじっくり解いてしまい、後半猛スピードでとりあえず全問回答・・・という典型的なダメパターンでした。明らかにサービスっぽい問題が後半に多かったのですが、そういう問題にジックリ時間を取らなかったから、イージートラップに引っ掛かってしまったものが多そう。あと、用語で微妙に記憶が曖昧なものも多かったです・・・これは、単なる勉強不足。
こういう場合、恐らくギリギリ6割に届かない程度の解答率になるので、時間が惜しいと思い帰宅。
午前が落ちていて、午後が手応えあり・・・というパターンは避けたいところです。
午前は即日で公式回答が出る&合格ラインが決まっているので無常です。(昔は相対評価でしたが)
仮に午前が受かっていても微妙な気分になりますが。

Androidアプリの「許可」について

Android端末を使っている知り合いが、アプリの許可(パーミッション)について知らなかったことに驚きました。

許可(パーミッション)の情報は、GooglePlayとかでアプリをダウンロードする時に表示されます。
インストール済みのアプリについては、アプリの管理画面から確認することができます。

ちなみに、私が配布しているアプリで使用している許可は、
・INVADER BLOCK 2 → ストレージ
・VGS Chiptune music → なし
です。

ストレージというのは、SDカードへのファイル書き込み許可です。(以下)

ストレージ
USB ストレージのコンテンツの変更/削除、SD カードのコンテンツの変更/削除
USBストレージへの書き込みをアプリに許可します。SDカードへの書き込みをアプリに許可します。

※ストレージの許可は、スコア&リプレイをSDカードに記録する目的で付与しています。

危険な許可の代表例は、「携帯のステータスとIDの読み取り」とか、「連絡先データの読み取り」など。
私のアプリでは(不要だから)設定していません。

連絡先の管理をするアプリであれば、「連絡先データの読み取り」(&書き込み)が必須なので、連絡先の管理をするアプリをダウンロードする場合、「発行元が本当に信頼できるか?という点を、利用者の責任で十分に確認してからダウンロードする必要があります。

今、世間で「the Movie」なるタイトルを冠するアプリが、連絡先の情報を抜き取って何処かに送りつけていた事件が起こってますが、それらアプリが「連絡先データの読み取り」の許可を必要としていることは、ダウンロード時に表示されていたようです。

私はそれらのアプリをダウンロードしようとしたことが無く、プレスから得た情報ですが。(ソースは以下)
http://www.itmedia.co.jp/enterprise/articles/1204/13/news113.html

もちろん、アプリの発行元が悪意をもって情報を抜き取っていたことはほぼ確実だと思うので、悪いのはそのアプリの発行元だということはほぼ間違いないと思います。ただ、ネットワークアクセスをするにも関わらず、ネットワークアクセスについての許可が表示されなかった点はAndroidの脆弱性だと思いますが。

また、「利用者に何も過失が無かった」とは言えないように思います。
アプリの許可(パーミッション)について、「何故こんな許可を必要とするのか?」という疑問があるアプリは、一切ダウンロードすべきではないです。
特に、「連絡先データの読み取り」については、「利用者本人だけでなく、利用者の友人や家族などの情報へのアクセスをアプリに許す」ということを意味しているから、十分に注意する必要があります。

あと、Googleもそういう点(不可解な許可の設定)については、審査すべきだと思います。
もちろん、目視での確認が必要になるので、相応のコストが掛かると思いますが、それは必要支出だと思います。
その程度の審査でも、やっていれば今回のケースは事前に防げた可能性が高いので。
(動画を見るのに連絡先を参照する意味が全く無いので)
もちろん、人間による審査だから100%確実ではないかもしれませんが、「審査を行っている」という点が重要。
今のままでは、「審査すら行っていない」という点で、Googleに過失責任がある気がします。

2012年4月14日土曜日

マップエディタやら

ゲームを作成する上で欠かせないツールがマップエディタです。
InvaderBlock2のようなゲームであれば不要ですが。

マップエディタ自体、色々なものがタダで配られています・・・が、独自開発推奨です。
そこそこ便利な機能が揃っているものも多いのですが、エディタ自体に手を入れないといけない事が結構多いので、ある程度凝ったゲームを作ろうとすると、既製品では開発効率が大分悪くなってしまいます。

私が使っているマップエディタも独自開発品です。
実の所、去年、SHOT03を完成させた後に作りました。
SHOT03は、適当なフリーのエディタを使っていたのですが、色々と大変だったので。

画面は↓こんな感じです。

実は、マップエディタのくせにDirectX9を使っています。
お陰で、ゲームと同じ画面効果(マップのアニメーションとか)をリアルタイムで確認できます。
あと、マップエディタとイベント(マップ上のNPCやら仕掛けなど)を配置する機能もあります。
(イベントは画面中の四角で囲まれた数字の部分)

今回作っているシューティングは、このエディタを使ってますが、お陰で色々と助かっています。
元々、アクションRPGを作る為に作ったエディタなので、STGを作るのに使う分には無駄機能が多いですが。
少なくとも、レイヤーとか自動海岸とか当たり判定とかは要らない。

逆に必要な機能がまだひとつも無いから、STG用としてはかなり完成したツールかもしれません。
このエディタ自体は非公開なので、第三者の意見が無いから、本当に完成しているかは不明ですが。
こういうエディタには完成が無いから、公開するのは中々厄介です。(主にメンテナンスが)
ノーメンテナンス宣言をして配る分には良いかもしれませんが、公開した以上、ノーメンテナンスだと逆宣伝効果が働きそうなので、公開することは無いと思います。

海外でのDL状況

Windows版InvaderBlock2を海外(CNET)で公開してそろそろ1週間ですが、Android版のダウンロード数に変化はなし・・・。InvaderBlock2は、シューティングというカテゴリになると思いますが、やっぱり、海外では所謂FPSじゃない普通のシューティングは人気無いのかな(と、思いつつシューティングを作ってますが)。

若しくは、CNET版が全然ダウンロードされていないとか。
(CNETでのダウンロード数はWeeklyで把握できるようなので、まだ分かりません)

InvaderBlock2はそんな感じですが、同時期に無償で公開した、独自波形メモリ音源のサンプル音楽集(VGS)はそこそこダウンロードされました。全く何も宣伝していませんが、トータルで50本ぐらい。


やはり、フリーは強い。


ちなみに、デベロッパコンソールで国別のダウンロード数を確認できます。
InvaderBlock2のダウンロードは日本のみですが、VGSは色々な国でダウンロードされました。
1位は米国で2位は日本です。

その辺りは想定通り。

3位がインドネシアというのが興味深かったです。
4位以下は概ね色々な国が横並びなので、日米以外ではインドネシアが突出してます。
インドネシアでは、Androidが凄く普及しているのだろうか・・・
と、思ったのですが、AndroidよりもBlackBerryの普及率の方が高いようです。

インドネシア人の心を掴む英語の紹介文が書けていたのだろうか?
インドネシア語はよく知りませんが、ヒンディー語(インドで一番メジャーな言語)とかは、日本語と文法が結構近いから、日本人が書いた英語が読みやすいとか・・・インドのダウンロード数はゼロですが。

謎です。

2012年4月11日水曜日

自機の方向を向く砲台

自機の方向を向く砲台のアルゴリズムを実装。

VGE(独自ゲームエンジン)には回転機能は無いので、砲台の絵を18パターン用意しました。
(18パターンということは20度単位ということになります)

その18パターンの砲台で、自機の方向を向かせるアルゴリズムがちょっと厄介でした。
アルゴリズム自体は、至極簡単なんですが。
自機と砲台の中心点間の角度を求め、単位度数で除算し、求まる番号=パターン番号です。
(その辺りの情報はぐぐれば色々出てくるので省きます)


問題は、C言語の数学ライブラリ(math)にどの程度のプラットフォーム誤差が生じ得るか・・・ということ。数学ライブラリは、インタフェース自体が標準化されていても、内部の計算式で微妙に方言があることがあります。
なので、Windows/Androidクロスプラットフォームで開発している場合、使用すべきではないです。
結局、アークタンジェント(+その算出の過程で使う平方根)を自前実装しました。

あと、サイン・コサインあたりも、標準ライブラリではなく自前で実装。(それらは単純なテーブル)

もちろん、扱う数値情報は固定小数点のみだから、物凄く高速です。
なので、沢山弾を出すことができます。

Invader Block in CNET Download.com

Windows版の「INVADER BLOCK 2」が無事、公開されました。
http://download.cnet.com/Invader-Block/3000-2095_4-75699783.html?tag=main;dropDownForm

CNETのスタッフ(?)により、表示タイトルが「Invader Block」へ修正されてしまったようですが。
- 全部大文字というのは、ヘン。
- タイトルに2が付いてないやんか?
あたりの事情かな。
まぁ、大した問題ではありません。

申請~アップロードまでに掛かる時間は、概ねVectorと同じぐらいといった感じのようです。
ダウンロード数がデイリーかリアルタイムかは不明ですが、Web上で確認できるのが良いです。
ただ、CNET側に独自のインストーラが組み込まれるのがちょっとアレですが。

Vectorの場合、月次でメールで報告という方式 or 申請して報告を貰う方式なので、面倒。ついでに、例のクラッキング問題で、月次メールが来ないらしいので、国内では果たして何本ダウンロードされたのかが不明です。

あと、Vectorは、アップロード申請もできない状態だったので、CNETの方が最新版になります。

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

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