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の方が最新版になります。

2012年4月10日火曜日

平日不調

本業がそろそろ忙しい時期を脱したと思ったら、まだまだ色々と忙しい。
随分前から、「今がピークだ」と自分に言い聞かせながら仕事をしていますが。
しかし、中々ピークが終わらない。
恐らく、去年の6月ぐらいからピークが続いているので、そろそろ一年か。。。

ゲーム作りの方は、ゲーム根幹部分のシステムを調整中。

「タッチ専用」&「ソフトボタン無し」というスペックでシューティングを作ろうとすると、どうしてもボムを入れることができません。ただ、実は、個人的にシューティングにボムとパワーアップが本当に必要なのか、甚だ疑問です。パワーアップについては保留中ですが、少なくともボムは入れません。

ただ、回避処置が何も無いのもつまらないので、非タッチ状態を有効に活用して回避処置を設けています。
ちなみに、Android用のシューティングゲームはショットがオートなものばかりですが、私が開発中のものは、ショットはタッチ中のみオートで、非タッチ中はショットを打たない仕様になります。
常にフルオートでショットを出すのは、どうも間が抜けてる気がするので。


その非タッチ状態を活用した回避処置のことをAtomicLaserと呼んでいます。
そのAtomicLaserをどのようにスコア稼ぎ要素にするか・・・といった辺りを創意工夫中。

2012年4月8日日曜日

なかなか快調

なかなか快調です。
GWにテストバージョン(1面のみ&無料)をAndroidマーケットに流すのも無理では無さそうです。
現時点の画面は↓こんな感じ。

ただ、そろそろ情報処理技術者試験が近いので、勉強した方が良いかなぁ・・・
受験区分はプロジェクトマネージャで、実質2回目の受験。
2回目だから勉強しなくても良いか、2回目だからこそ勉強すべきか。

迷いどころです。
1回目なら迷わず勉強するしかありませんが。

去年、味見で受験した実績では、勉強をしなくても論文以外は何とかなった(論文がB評価で不合格だった)ので、論文の対策(=ネタの仕込み)だけは必要な気がしますが、そうやって高を括って受けると案外、午前や午後1で落ちそうな気がします。

ただ、焦って取る必要がある程のものではないから、開発作業を優先したいところ。
ついでに、本業であまりプロマネ的な仕事はしたくないから、下手に合格してしまうと墓穴を掘りかねない。
もちろん、受験料が勿体無いから受験はするし、受験する以上、最後まで受けますが。

受験する唯一の目的は、合格祝い金です。

同じレベル4の区分の中でも結構高いんですよね、この試験。
個人的には、スペシャリスト系(同じレベル4)の方が難しい気がします。
だけど、スペシャリスト系だと合格祝い金が大分安い。


 金、金、金! 騎士として恥ずかしくないのか!

と、言われてしまいそうですが。

2012年4月7日土曜日

敵アルゴリズム

ようやく、敵を登場させるシステムの骨組みが完成。

あと、敵の絵やらアルゴリズムもどんどん追加していくだけ。

敵のアルゴリズムは、スクリプト化する派とプログラムでいく派が居ると思いますが、私は後者。
以下のように、アルゴリズム関数を関数配列で管理して、キックする感じでやっています。
STGの場合、このやり方で作る方がスクリプトのシステムを作るよりも効率が良い気がします。

敵アルゴリズム以外の部分が、まだ、色々とできてませんが。
敵のドット絵とか。
上のキャプチャはSHOT03のドット絵の流用物なので、若干・・・というより、かなり浮いている。
(このままでは流石に使えない)


システム的な面では、爆破やら、敵弾やらがノータッチ。


とりあえず、爆破パターンのドット絵はSHOT02の頃から使っているものを流用しようとしていますが、爆破ギミックは少し凝らせたいので、結構時間が掛かりそう。個人的に、爆破はシューティングの華だと思っているのですが、割とそういう議論をあまり聞かない・・・と、思っていたら、2chに専用スレッドがあり、色々な意見が見れて面白かったです。色々と参考にしながら試行錯誤してみようと思います。

敵弾も割と重要だし厄介。
ちなみに、弾幕STGにするかは微妙です。
個人的に高速な弾を高速な自機で避けるのが好きなので。
ただ、高速な弾主体にすると、必然的に自機狙いや自機外し(つまり、真っ直ぐに飛ぶ弾)が中心になってしまうから、それは避けたい。今回はもっと多彩な弾を飛ばせるようにするつもりです。
ですが、アクション・パズルゲームにはしたくない。
アクション・パズルゲームが嫌いな訳ではないですが。(寧ろ、好きな方)

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

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