架空のアーケード・シューティングゲーム「ムーンショット」と、そのワンポイント攻略

Posted on

ドリームキャスト互換アーケード基盤「NAOMI」で2021年10月にリリースされない横スクロール型シューティングゲーム「ムーンショット」。今回はこのマイナーなゲームのストーリーを紹介し、そのワンポイント攻略についても行っていきます。

ストーリー

安心安全帝国」 ― 生きる苦しみと不安、虚無を根絶し、安心と安全だけが満ち、全員が活躍できる社会を約束するカルト国家。もともとは極東の小国だったが、自我をもつ国家制御AIムーンショット」が2050年に完成するとすぐに、各地へ宣戦布告。あっという間に制圧し、世界中へ勢力を伸ばした。

内部では時間の止まった理想の社会≪ユートピア≫が実現されていると喧伝されているが、実態は不明。
かろうじて残る国境線付近では今でも大小さまざまな「テロリスト集団」との戦闘が続いている。

そのうちの1つに、「一切皆苦」があった。AIの力を”活用”しても活躍できないとされ「お祈り」された人間、ネガティブであるとされた思考の持ち主、不安や虚無の存在を肯定しようとする元哲学者・思想家などが集まった混沌とした集団だ。

人工知能に対抗しうる最終兵器「天然無能」を開発することに成功した「一切皆苦」は、崩壊しつつある集団の最後の力を振り絞り、「安心安全帝国」への、最後の国家解体作戦を開始する。

一切快苦」の保有する最後の戦闘機、「無明」に、帰還のための燃料の代わりに「天然無能」を積みこむ。最後の挨拶を済ませたパイロットは、明るいLEDライトのきらめく「安心安全帝国」へ退路を捨て飛び立っていく。

 

敵は≪幸福≫。

生きとし生けるものに生きる苦しみを取り戻すための「正義」の戦いが、いま始まる。

ワンポイント攻略

8方向レバー、3ボタン。全5面+真の最終ステージ1面。一周エンド。

パターン要素の強いステージと、ランダム要素の強いステージが極端に分かれています。パターン要素の強いステージで自分なりの攻略パターンを早めに構築し、ランダム要素のために気力を温存しておくのが、基本的な攻略戦略となるでしょう。

真エンド条件は「5面終了時点までノーミス」と、かなり厳しめの設定です。真エンドを見たい場合、敵をなるべくすべて撃破して、いわゆる「スペシャルアタック」のゲージをこまめに貯め、少しでも厳しいと感じたら、すぐにスペシャルアタックを発動し、付随する無敵の効果で切り抜けましょう。

 

次からは、各ステージの簡単な紹介と攻略になります。

Stage 01 「テンシ」

これが、テンシ?人喰いの、間違いじゃないのか。

回収されたフライトレコーダーから

最初のステージ、「テンシ」。このステージでは「安心安全帝国」の国民である「テンシ」が無数に襲い掛かってくる。最初のステージであることや、全員とも優しそうな笑顔を浮かべていることに油断していると、すぐに「テンシ」たちの放つ高密度弾幕に制圧されてしまう。主人公の言葉どおり、「全員を殺す」という強い気概で挑んでいこう。

Stage 02 「ナカマ」

こちら無明、…
敵も無明だ…。

回収されたフライトレコーダーから

次のステージは「ナカマ」。前回プレイしたプレイヤーが鹵獲され、「テンシ」として”生まれ変わった”という設定で襲い掛かってくる。「ナカマ」であった「テンシ」の攻撃パターンは前回のプレイヤーの動きから学習・模倣されたものになるため、ゲームセンターで待っている間も前のプレイヤーのプレイは肩越しによく観察しておこう。

Stage 03 「コウノトリ」

誰でも作れるということは、
誰にも作れなかったということなのだな。

回収されたフライトレコーダーから

第三ステージ、「コウノトリ」。国家制御AI「ムーンショット」が、「望めば誰でも安心して子供を産み育てられる社会」という人間の願いにこたえるために作った、「テンシ」の製造工場だ。「テンシ」は完成するとすぐに高速弾を放ってくるので、完成する前にテンポよく破壊していこう。登場する順番は死んで覚えるしかない。

Stage 04 「デンシン」

一人と戦っているのか、
全員と戦っているのか、

わからない。

回収されたフライトレコーダーから

第四ステージ、「デンシン」。ここの「テンシ」は全員テレパシーを使って以心伝心している。一度倒した方法は次の「テンシ」には効かない。全ての「テンシ」を破壊できるよう、倒し方のバリエーションを事前に準備しておこう。

Stage 05 「ムーンショット」

頼む、持ちこたえてくれ。

回収されたフライトレコーダーから

最終ステージ、「ムーンショット」。名前通り、「安心安全帝国」の中枢にある国家制御用AI「ムーンショット」を破壊するのがミッションだ。気象をもコントロールする人工知能が、津波、地震、土砂崩れ、台風、ハリケーンなど自然災害すら用いてステージの地形を変形させていく。弾避けに使っているオブジェクトはすぐに破壊されてしまうから注意しよう。

Stage -1 「シアワセ」

脳が痛い。胸が痛い。視界もはっきりしない。意識が朦朧とする。
俺は、一体今まで何と戦ってきたのだ。

だが、まだ生きているというのだけは分かる。
まだ戦わねばならない事もはっきりしている。

回収されたフライトレコーダーから

そして条件を満たしたときにあらわれる真・最終ステージ、「シアワセ」。

人工知能」である「ムーンショット」に対抗する「天然無能」。その正体は「生老病死」であった。 この「生老病死」 を起動し、ブートが完了するまで、守り抜くのがミッションだ。残機がいくらあったとしても、死んだ瞬間に守りがほころび、ほぼ間違いなくゲームオーバーになってしまう。このステージではコンティニューもできないので、「人生は一度しかない」と念じながら最後までやりきろう。

参考資料

アナザーエンド

ラストステージは、頭のアンパンから餡が飛び散りきるまでに「安心安全帝国」の管理AI「ムーンショット」を破壊するミッションとなっている。ここだけはコンティニューできず、残基も自動的に0になるので、気合を入れて攻略しよう。たとえ、胸の傷が痛んでも。

https://sabbat.hexe.net/notice/ABuOy9yYFwEfd7EkrI

クリスマスはNoiz2saをAndroidで!

Posted on

おひさしぶりです。21日のニコニコ学会βは良かったですね。特に良かったのは研究100連発で、本職の人のすごさを見ると、私も何かつくりたいな〜って気分になります。私はボランティア(登壇者へのカンペ出し)として参加しました。凄い人を間近に見れるという特典付き(?)の嬉しいけど責任重大なお仕事です。イベント運営って大変ですね…。あと野糞の人は本気でマッドだ(褒め言葉)。

Noiz2saをAndroidに移植してみた!

Noiz2saはABA Gamesさんの開発した、アブストラクトな感じのシューティングゲームです。私はこのゲームがSTGに入り始めたきっかけだけあって、大好きです。

去年はWebに移植したNoiz2saを公開しましたが、今年はAndroidに移植したものを公開します。

クリスマス、そして年末年始といえばシューティングゲーム!ぜひお楽しみ下さい。敵の弾を避けて撃つ、指一本で遊べるシンプルなゲームです。

USBのゲームパッドをつなぐと、PC版と同様な操作で遊ぶことも可能です。

ダウンロードはこちらから

バッドノウハウFAQ

移植時のバッドノウハウを書きます

Q.リソースのファイルの拡張子がamrとかなのはなぜですか

このように置かないと、リソースが圧縮される時に圧縮されてしまい、AssetManagerからランダムリードすることが出来なくなってしまうからです。

あっコーナー分けた割に一個しか思い浮かばなかった…質問は随時受け付けています。

クリスマスはNoiz2saをChromeで遊ぼう!

Posted on

Native Clientは死んだんだ
いくら呼んでも帰っては来ないんだ
もうあの時間は終わって、君も人生と向き合う時なんだ


弾幕の海にたゆたう、アブストラクトシューティングNoiz2sa。

ChromeにNoize2saを移植してみた

Google ChromeにNoiz2saを以前移植して公開してあったのですが、こちらでは書きそびれてたので、クリスマスというタイミングに書くことにします。

ABA GamesのSTG “Noiz2sa”をブラウザで遊べるようにしてみました。

20121224

Chrome ウェブストア – noiz2sa

 ChromeのNative Clientという仕組みを使っていて、これを使うと比較的簡単にネイティブのゲームをブラウザ上で動かすことが出来るようになります!

GamepadのAPIがうまく動かないので残念ながらゲームパッドでは動く動かないのですが、キーボードでならガリガリ動くのでJoyToKeyでも使ってやってみてください!…だったら普通にWindows版で遊ぶ?そ、そうですよね…。

特に何もしてないけどクロスプラットフォーム

NativeClientは、何もしなくてもクロスプラットフォームに対応していて、今回の拡張もLinux/Windows/MaxOSXで動きます。ちょうべんりー。ちなみに開発自体はLinuxでやってます。

NativeClientのしんどいところ

NativeClientはセキュリティ上の要請から、色々制限があります。普通に計算をさせる分には困らないですし、グラフィックやサウンドの出力も、NaCl Portsがあるお陰で普通に使う分には困りませんが、ファイルアクセスやネットへの接続などでは独自のライブラリを使わなければなりません。

今回ゲームということでネットワークは使っていないのですが、タイトルの「noiz2sa」のロゴ画像(ビットマップ)や弾幕の定義データ(XML)、BGMや効果音のファイルなど、比較的数は少ないもののファイルアクセスがあり、これに対処する必要がありました。

ファイルはすべてゲームバイナリ内に

Native ClientにはURLLoaderというクラスがあるので、これを使えば任意のURLの内容を取得できます。これをローカルファイルの代わりに使えば良さそうです…が、今回はゲームなのでローディングを避けたいのと、大した容量でもない(8MBくらい)なので、全部バイナリ内に入れてしまうことにしました。

具体的にいうと…

struct FileEntry{
const char* filename;
const size_t size;
const char* data;
};
extern const struct FileEntry gFileImages[];
extern const size_t gNumberOfFileImages;

Noiz2saNaCl/nacl/file_data.h at master ・ ledyba/Noiz2saNaCl ・ GitHub

というような構造体をつくって、

static const char ImageData[8810309] = [具体的なデータ>];
const size_t gNumberOfFileImages=96;
const struct FileEntry gFileImages[96] = {
{
.filename="boss/forward_3way.xml",
.size=818,
.data=&ImageData[0],
},
(ファイルのエントリをたくさん)
};

Noiz2saNaCl/nacl/file_data.c at master ・ ledyba/Noiz2saNaCl ・ GitHub

として全データを格納します。

これを読み書きするためのfopen、fread、fcloseなどの関数を独自に定義して

extern size_t nacl_ftell (FILE *file);
extern int nacl_fseek (FILE *file, size_t offset, int whence);
extern FILE *nacl_fopen (const char *filename, const char *modes);
extern size_t nacl_fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
extern size_t nacl_fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
extern int nacl_fclose(FILE *fp);
extern int nacl_feof(FILE *stream);
extern int nacl_ferror(FILE *stream);
extern void nacl_rewind(FILE *stream);
extern int nacl_fgetc(FILE *stream);
extern int nacl_fflush(FILE *stream);

最後にマクロで普通のfopenを乗っ取ります

#define fopen(n,m)  nacl_fopen(n,m)
#define fclose(f) nacl_fclose(f)
#define ftell(f) nacl_ftell(f)
#define fseek(f,o,w) nacl_fseek(f,o,w)
#define fread(p,s,n,f) nacl_fread(p,s,n,f)
#define fwrite(p,s,n,f) nacl_fwrite(p,s,n,f)
#define feof(f) nacl_feof(f)
#define ferror(f) nacl_ferror(f)
#define rewind(f) nacl_rewind(f)
#define getc(f) nacl_fgetc(f)
#define fgetc(f) nacl_fgetc(f)
#define clearerr(f) nacl_clearerr(f)
#define fileno(f) -1
#define fflush(f) nacl_fflush(f)

Noiz2saNaCl/nacl/storage.h at master ・ ledyba/Noiz2saNaCl

ソースコードを改変できるので別に乗っ取る必要はないのですが、NativeClientの元の記事がそういう感じで乗っ取ってたのでそうしときました。

ディレクトリ内のファイルを列挙するAPIであるreaddirなどもおんなじ感じで乗っ取っております。

この方法はGoogle先生謹製の記事を参考にしていて、ソースも一部拝借してます。Case Study: Porting MAME to Native Client – Native Client — Google Developers

さてどうしたものか

NativeClient、ファイルが絡むと一気にめんどくさくなります。既存の技術(Flashとか)を置き換えるには少し不便ですね。

GENETOSのBGMを差し替えられるパッチ作ってみた

Posted on

 以前、フリーのSTGゲーム“GENETOS”の音楽を復号化する“Oreshiki Decrypter”を公開する時に書いた、GENETOSのBGMを差し替えるための改造パッチを公開する…と言いながら忘れていましたが、最近ソースコードのフォルダを眺めていたら発見されたので配布します。

ダウンロード

 け、結構前…。

使い方

 ダウンロードして出てくる「_patch_genetos.EXE」を実行するとパッチが適用されます。

 次に、BGMのファイルを次のように書き換えてください。

  • 最終面の「origin.mp3.ore」と「answer.mp3.ore」、エンディングの「rebirth.mp3.ore」はそのまま置き換えられます。“Oreshiki Decrypter”で差し替えたいmp3を暗号化し、そのまま置き換えてください。
  • それ以外は拡張子が変わった上で、拡張子以外のファイル名が4文字減ります。こんな感じ:
    • 「little_invader.mid.ore」を差し替えたい場合は「little_inv.mp3.ore」という名前のファイルを用意してください。
    • Oreshiki Decrypterを利用して差し替えたいmp3を暗号化した後、上記のようなファイル名に変更してBGMフォルダにコピーしてください。
  • 自機が進化した後のBGMに関して、最初の数秒間が再生されません†1。予め自分で数秒間分のブランクを挿入しておく必要があります、

パッチについて簡単な解説。

 内部では音楽を再生する関数はmidiを再生するものとMP3を再生する関数に別れています。どちらもファイル名と追加のいくつかの引数を取るもので、これを利用して、midiを再生する関数を書き換えてmp3を再生する関数にバイパスしています。

 ただしひとつ問題があって、midiを再生する関数は、ステージ開始時に一気にmidiをロードしてしかるタイミングで再生するBGMを変更する、という事ができるのですが、mp3の関数ではそれはできませんでした。この問題を解決すべくいろいろ試行錯誤した結果、自機が進化する瞬間の処理をフックしてMP3再生関数を呼んでBGMを切り替えています。

パッチ適用時の注意。

 メニューから普通にゲームを開始する時以外の動作に関してはうまく動かないと思われます。フリープレイでちゃんと動く事とかは考えてません。

  • †1: 原因はよくわかりません

GENETOSの音楽を聞こう!-“Oreshiki Decrypter”

Posted on

 なんか最近プログラミング・STGネタを投稿しなさすぎなので、たまにはそっち方面を投稿するテストw

 進化するシューティングゲーム”GENETOS”が最近一番の個人的ヒット作です!ゲームシステムがゲーム進行にあわせ進化してくという発想の斬新さ、STGの歴史をうまくまとめ上げた構成力、ドラマチックな演出、遊びやすい難易度…。そしてBGMです!特に最終面のBGMはステージ演出と相まって最高です!

 今回、そのGENETOSのBGMや画像ファイルに掛けられてる暗号を解除するツールを作成しました。ソースつき。

 また、このツールを利用することで、BGMを暗号化することもできます。BGMの差し替えも可能です!(※制限あり、後述)

ダウンロード

 ライセンスはGPL3です。(アーカイブ内のLICENSE.TXTを参照)

使い方

 GENETOSの、bgmフォルダ内の”○○○.mp3.ore”ファイル、または”○○○.mid.ore”を”oreshiki.exe”にドラッグアンドドロップすると同じフォルダに復号化されたファイルがでてきます。同様に、img内の.oreファイルも復号化できます。

20110123_01.png

 なお、soundフォルダ内に入っている効果音ファイルは実は暗号化されてないので、.wav.oreを.wavに変更するだけで再生することができます。

解説

 ファイルの先頭128バイトを、”oreshikioreshikioreshiki…..”という”oreshiki”がぐるぐると連続する文字列とxorを取っただけです。つまり、ファイルの大部分は平文ですw

 これを、再生直前に復号化して、再生が終わったら再び暗号化して再生できないようにする、という方法で暗号化しています。たぶんライブラリがメモリ上に展開されたmp3ファイルの再生に対応していなくて、その仕様と妥協しあった結果、でしょうか?

BGM差し替え

 .mp3ファイルや.midファイルをこのソフトにドラッグアンドドロップすることで暗号化することもできます!このソフトで暗号化したファイルを、元のBGMのファイルと入れ替えることでBGMの差し替えを行うことができます。

 ただしファイルフォーマットのチェックがシビアなのか、にこさうんど#等、ネット上から拾ってきたmp3はそのままでは再生に失敗することも多いので、一度wavに戻してからlame等で再エンコードして使うのを推奨します。

 さらに、この方法ではステージがmidiのステージはmidiのファイルで、mp3のステージはmp3ででしか差し替えることができません。プログラムを書き換えれば可能で、一応そのための改造パッチも作ってあります。もう少しテストした上で公開できそうなら公開する予定ですが、いつになるやら。

久々にジャンピングフラッシュ

Posted on

 ちょっと久しぶりに元祖飛びゲー、ジャンピングフラッシュ!(初代PS/95年)をやってみました。もう発売から15年経つんですねえ。幼稚園に入る前ぐらいからやってたかな。体力ギリギリでラスボスを倒した時の緊張感は未だに覚えてます。

 一言でいえば、コミカルな空中箱庭を、ウサギ型ロボットにのって空中散歩するゲームです。三段ジャンプでぴょんぴょんと空中を飛び回れ、敵を倒さず操作してるだけでも楽しいゲームです。全く他に類が無く、今見ても斬新だと思います。動画では乗り物酔いする人も居るので、ぜひ実際にプレイしてみてください。

 キャラクターもデフォルメされてて可愛いんですよー。自機のウサギ型ロボット「ロビット†1」とか、頭にやしの木が生えたクラゲみたいなムームー星人†2とか、応援しか能のないAIのクマゴローとか、どことなくやる気のないキーウィ(左)とか、キモかわいいゴキブリのゴッキーくんとか。敵もみんな可愛くて、挙げたらキリが無いです。

 かなり近くのオブジェクトしか描画できなかったり、やはり今見るとテクスチャがかなり荒かったりするので、そこらへんを改善してフルHDでリメイクするだけでも相当面白くなると思うんだけどなあ。とはいえ、あの絶妙な操作性を再現するには当時のプログラマが居ないと話にならないと思いますが、開発元のシュガーアンドロケッツも消失した現在、それは難しいのかも…。

 このゲームがこのまま忘れ去られちゃうのは、日本のゲーム業界の損失だと半分くらい本気で思ってます(笑) だって面白いよ、このゲーム!PSアーカイブでも遊べるらしいからみんな遊んでみてね。

ジャンピングフラッシュ
ソニー・コンピュータエンタテインメント (1995-04-28)
売り上げランキング: 14436
おすすめ度の平均: 4.0

4 PS初期の名作ゲーム。
5 皆、こういうの知ってるのかなあ…?
3 いいですよ

 ステージとステージの合間にはいる、ボスを操作していたムームー星人が飲み屋で愚痴をこぼすシーンも可愛いくておすすめです。

Jumping Flash!2 ~アロハ男爵大弱りの巻~
ソニー・コンピュータエンタテインメント (1995-04-28)
売り上げランキング: 7413
おすすめ度の平均: 4.0

4 ジャンプ、ジャンプ

 2もオススメです。ゲームデザインが十分に完成されているのか、続編というよりは、追加ステージと思った方が良い感じです。

ロビット・モン・ジャ
ロビット・モン・ジャ

posted with amazlet at 10.06.05
ソニー・コンピュータエンタテインメント (1999-10-14)
売り上げランキング: 15442
おすすめ度の平均: 3.5

3 首が・・・
4 酔うかも

 3では今までのシリーズのようにステージやボスを攻略していくのではなく、宇宙市役所が市民のお悩みを解決する!というミッションクリア型の内容に変わっており、気の抜けたストーリーと相成って今まで以上にのんびりーとしたゲームになりました。PS3で上手く動かないのが難点(数分操作すると操作が効かなくなる)です…。パワーダウンは否めませんが、それでも面白いですよ。

 あ、あと終盤のとても暗くて足場が見えないステージは、テレビの輝度を上げるとクリアしやすくなりますよん。どうしようもなくクリア出来ないときは適度に上げてみると良いかも。

ウサギで思い出した

 今週のキルミンずぅの「うさぴょん星人のコスプレぴょん」で死んだ リコとポチ姉も言ってくれんかのー

  • †1: なにこれ!マジで欲しい!!
  • †2: 一時期プレステのマスコットでしたな

巫女が死ぬとファイルが消える東方作った

Posted on
ゆっくりしていってね!!!・・・と
言いたいところだが、
君等(のファイル)には消えてもらう。
実は今まで君たちが巫女だと思っていた
残機の正体は、
ハードディスクの肥やしになっている
マイドキュメントの.docファイルだったのだ。
君等は何も知らずに
作りかけのレポートを削除していたのだよ。
しかしそれは、
私の筋書どおりなのだ・・・
あとはゲームを強制終了させれば
私の計画は完成する。
これからは私の最強の
特別戦闘部隊をもって
君等を抹殺するので
よ ろ し く。

巫女が死ぬとファイルが消える東方作った

ついカッっとなって作った†1。後悔はしていない。

巫女(じゃなくても可)が死ぬ度に、マイドキュメントのファイルがランダムで一つずつ消えていきます。消すファイルが無くなった場合、ゲームがアプリケーションごと終了します。もうこれは死ぬ気で練習するしかないねー

 

パッチダウンロード

すいません公開できません m(_ _)m

公開して割れゲーに紛れて流されると色々ヤバイwのでwwwwww

原理

簡単に言うと、巫女が死ぬ処理に無理やり割り込んで、ファイルを消す処理をくっ付けてるだけです。だから、洞窟物語の「どこでもセーブ」パッチと技術的にはほとんど同じです。ただ、こっちの方が追加されてる処理が多くて複雑ってだけです。

アイデアは「【自己責任】敵機を撃つとHDDのファイルが削除されるシューティングゲームが登場」から貰い、ファイルが消える条件を反転させて一般のゲームに実装した形になります。ルールとしてはこちらの方が緊張感があって良いと思うのですが、どうでしょうか(笑

知らず知らずの内に悪意のある処理が行わせる事が可能

今回は実験なので、ファイルを削除した際にウインドウを表示して削除した事が分かるようになっていますが、もちろんそうした表示処理をすべて消してしまう事も可能です。その場合、プレイヤはファイルが消されていることにおそらく気づかないでしょう。

この実例で、P2P等にこうして改造したゲーム等の実行ファイルを流すことで、ダウンロードした人が全く気づかないうちに悪意のある処理を実行させることが可能という事が分かったと思います。もちろんUACが不要な範囲内で、ですが、それでも個人情報を流出させるには十分です。

現在、キンタマウイルスのようなファイル名を偽装するような手口がよく知られていますが、このファイル名を偽装したウイルスを実行させる方法には引っかかった場合大抵すぐ気づくという難点があります。

しかし今回の手法ならもっとナチュラルに実行させる事が可能でしょう。ゲームと一心同体ですから。

感想と今後の展望

今回、パラサイトルーチンは全部手書きアセンブラですw

正直全部アセンブラで書くのは、まあ…たまにやる分には楽しいがしんどすぎるw 今回はファイルの列挙を行う処理ということで再帰処理が入ってるんですが、スタック操作がなかなか大変でした。まあその分今後解析を行う際の参考にはなったかな、と思いますけどね。

アプリの最後の方にdllのファイルをそのままくっ付けておいて、パラサイトルーチンはdllを分離して実行させて、処理に割り込んだ時の処理はdll内の関数を呼ぶだけ、みたいな感じで、任意のDLLが呼べたりすると楽ですね。もうこんなにたくさん書きたくないわ…。

ふと気づいた

これただのファイル感染型ウイルスじゃね?(

今までずっと「本物のファイルに紛れてるキンタマウイルス」という線で考えてたので気づかなかった。

みんながみんな全く疑うことなく実行しているだろうと思われるP2Pのゲームに入れるのは効果的だと思うが、P2Pの大半の人間はDL専門だとすると拡散させにくいという気はする。特定のファイルだけ気をつければいいならハッシュ指定とかで防げちゃうだろうし。

あ、あと

五月祭お疲れさまでした え、ああ、ちゃんとさきゅばすも作ってるよ 仕様書も無い言語の言語処理系って難しいな…。ニワン語はプロトタイプ型オブジェクト指向ってことでいいの?

  • †1: 製作時間は3時間程度

「スターフォックスアサルト」謎のヘッダファイル

Posted on

 今回も蔵出しです。おおよそ3年前のネタですが気にしません。誰か書くかなーと思って放置してたんですが、やっぱり誰も書かなかったので書く事にしました。海外あたりで書かれると思ったんだけどなあ…。

スターフォックス アサルト
任天堂 (2005-02-24)
売り上げランキング: 763
おすすめ度の平均: 3.5

2 哀しいかな…
2 これホントにスターフォックス?
4 良作ですが・・・
4 一長一短といったところか
5 これは面白い

ゲームデータ内に開発用のデータが残っている?

 GameCubeにておおよそ3年くらい前に発売され色々と話題になった「スターフォックスアサルト」ですが、実はゲームデータの中にC言語用のヘッダファイル「_shottype.h」が入ってます。

 その中には

  • 同じフォルダ内に存在する「_en_shot.bin」のデータ構造を示していると思われる構造体定義
  • 構造体中の数値の意味を表すと思しき定数定義。
  • それらへの豊富なコメント

 が含まれており、少しCをかじった程度だった3年前の私†1でも容易にそれらを用いてデータ表を作る事が出来ました。その結果、おそらくこのデータは敵・味方の攻撃データを示すものと思われました。

 まずはそのデータを示します。CSV形式です。

 「アンドロフ」はきっと突っ込み待ちなんだと思います。まあそれは置いておいて。SE番号のテーブルで説明が一切無いのは最初からです。全部空白だったんだもん。また、最初のテーブルでも終盤が空白になっていますが、これはショットタイプの定義が168個あるのに対し、実際のデータは129個分しかないためです。これがどういう意味なのかは分かりません。

 ところどころの数値はゲームをやっていたときの感覚と合致するんですが、ところどころ怪しいです。ブラスターが貫通する事になっていますし、エフェクト番号なんて全然合っていません。

 しかし、チャージブラスターは二段階までは直接ダメージ、三段階目(最強)では誘爆ダメージってあたりが妙にリアルです。完全に間違いとも思えません。

 また、追尾性能の項なのですが、GameCubeのCPUであるPowerPCでは微妙にFloatの形式が違うため、そのまま16進数で表示させています。ですが、Wikipediaの記事を読んでもらえば分かるとおり、今回の表に出てくる数値はどれも殆ど0に近いです。

 その上、「ホーミング」の追尾性能の欄が0x00000000(=0.0f)だったり、そもそも出てくる数値が0x00000000と0x000000e0の二種類だけ、と怪しさ満点だったため、これ以上は追求しない事にしました。

 いまいち信憑性が怪しかったので一旦お蔵入りさせて、海外あたりで解析されるのを待ってたんです…が、全然情報が出てこなかったので、三年越しという事にはなりますが、今回掲載する事にしました。オチがなくてゴメンネ。

 これを読んだあなた。どうか真相を暴いてください。それだけが私の望みです。(お約束)

結局、このヘッダファイルは何だったのか

 単なるミスであると言う可能性はつまらないので除外しておきます。

 私の結果は実は間違いで、本当は正しいデータを取得できるのだとしたら、スタッフはネットユーザにこのデータを見つけてもらいたかった、という事に当然なるのでしょう。ですが、このデータによって対戦の幅や戦略が深まるとはあまり思えません。「ポケモン」ならともかく、アクションゲームであるこのゲームにはあまりそういった情報が必要とは思えません。しかし、スタッフがユーザに内部の情報を与えて盛り上げようとしてたのなら、ゲーム初のCGM(笑)の先駆者だったかもしれません。

 もしかすると、あえて間違ったデータとヘッダファイルを与えて、こういう感じの記事が上がってくるのを待ってたのかもしれません。

 ポケモン赤緑の「サントアンヌ号横のトラック」、金銀の「金のはっぱ」「銀のはっぱ」、「シロガネ山のレッド」、ルビーサファイアにおける「トクサネの白い岩」、レジ***の点字、ダイヤモンド・パールにおける謎の洋館のように、本質的にはあまり意味の無いデータを与え、ユーザをもてあそんでただけかもしれません。つーかポケモンその手の多すぎだろw

 ネットユーザがこういう感じで「あーでもない」「こーでもない」ってあたふたしてる姿が見たかったのかもしれませんね。この可能性が一番面白そうだな。

 いやーホント気になるんで誰か真相を暴いてください。

  • †1: でも今と比較してあんまり進歩してないかも^^;

RAY-KUDRYAVKA X 前期のBGMを抜き出すツール

Posted on

 秋葉原に行く予定があったので、当然夜逃げのサクセス現場見てきました。

 PCサクセスには行ったことが無かったので、そこらへんの店員に聞きましたが、「閉まってますよ」と神妙な表情で場所を丁寧に教えてくれました。聞いてすいません。

 やっぱり人が集まってましたよ。「やっぱ集まってたかwwww」って言いながら写メールとってる人とかw

説明

 個人的にイチオシなゲームのひとつ、 RAY-KUDRYAVKA X 前期のBGMを切り抜きます。何のことは無い、単にEXEファイルからOGG形式のBGMを切り出すだけのプログラムです。しかもファイル位置全部打ち込んである超頭の悪い。

 Javaで書いてあるので、俺Linuxだから遊べなくて悔しい、というような人もBGMだけは楽しめます。

ダウンロード

動作環境:Javaが動作するすべての環境

使い方

 中のreadmeを参考に。

余談

 Cで書いてリソース取得した方が早かった気がする。でも特定OSでしか動かせないソフト嫌いだから使わない><

 いやあ、ホントは他のシリーズもRAY-KUDRYAVKA heXaまで(たぶんレイクドリャフカ?も)なら抜き出せました。XORでちょこっと暗号化かけてあるだけで、そんなに難しくないと思います。練習に最適。暗号化もおなじ手順でいけるので、BGMの差し替えも可能。これ以上あってるBGMを探すのも大変だと思いますけどね~。

 が、なんか公表したらヤヴァイ気がするので無しということで><

 個人的に言ってくれればもしかすると・・・ごにょごにょ。

エグゼリカがDCで発売?

Posted on

 一週間ほど前に頭を金具にぶつけてケガをしてしまいまして、大分血を流してしまいました。近くの救急病院で手当てを受けたのですが、傷をふさぐ目的で金具を入れられました。金具です。ホッチキスみたいなやつです。

 糸で縫う場合は頭を剃らなければ成らないため、たしかにこっちの方が楽です。文明の利器です。一瞬で痛みはなくなりますが、グサっと何かが刺さるのが感覚的に分かります。結構怖い^^;

 最初は違和感バリバリだったんですが、数日もたつと結構馴染んでくるというか、何とも思わなくなってきました。人間の適応能力は素晴らしいという事なのかも知れませんが、頭が痒いときに触ると痛いため掻けないのがかなりつらいです。つまりは今です^^;

 人体に金具といえばUFOよりも斑鳩の森羅を思い出す今日この頃です。森羅、つまりは飛鉄塊(戦闘機)乗りには、過度の加速度に耐えるために「箍(たが)」と呼ばれる鋼の塊が体中至る所に埋め込まれているというアレです。なんかちょっと現実味が沸いてきました。刺さってるだけですけど。

 しかし、箍と皮膚の接合部分はどうなってるんでしょう?インプラントみたいに皮膚がくっついて来るなら良いですが、常にケガしてるのと同じように血が滲んでるんでしょうか。コワス。それなら寿命も短いよなぁ。あと鋼って錆びないんですかね。防錆したところですぐ剥がれちゃうだろう。人体に酸化鉄がバンバン入ったら危険だよなぁ。寿命が短いのもさらに納得。

 さて、ドリキャスといえばシューティングギャルゲーです。やっとタイトルに戻ってきました。まさか頭のケガの話をここまで引っ張れるとは思ってませんでした。頭痒い。けど掻けない。

 このゲーム、出始めの頃に秋葉で見かけて、アンカーシュート(砲丸投げ)をまったく使わずに4面まで進んで、初めて後ろにたくさんのギャラリーがついたぐらいしか印象無いです。アンカーシュート使わないと普通の弾幕シューでしたね。ああ、あとアレだ。リザルト画面のスクm(ry。ボタン連打しても中々次のステージに行かなかった記憶が・・・。

 本当に発売らしいです。見てください、ハード欄を。GCでもXBOX360でもPS3でもWiiでも(以上発売順)なくDCです。まさか出るとは思ってなかった。

 斑鳩(2002年)ですら「最後のDCゲーか?」と言われていたのに、まだ出るような事があるとは。最後のDCゲーなら買いなんですが、悩んじゃいます。

 私個人としては、DCゲーはこれで終わってしまって良いのではないか、むしろ終わらせるべきではないかと思います。シューティングとギャルゲーが合わさったこの作品。まさにドリキャスの末期の歴史を見事に象徴し、最後のタイトルとしてふさわしいじゃないですか。良ぃー意味でぇー(ねぎぽに最近見てないなぁ)。

反省

 ネタがないからって無理に書くとこうなります。考え直そう・・・。ポケモンがやっと終わったので、ネタに出来そうです。予告しておいて実現しなかった確率は間違いなく97%を超えていますが。