MAGiC TOUCH - SSSA DevelopmentPostscript




*Super Star Shooter Advance (Project CYPRUS,Apr 5,2003)
[Index / Back]

Super Star Shooter Advance 開発後記
 世間の方々はGBA-Devに興味がないのかな? うちのGBA-Devのページもなんだかんだで1年半になるんですが、この間何の反応もない(いや〜、ほんとうにZEROなんですよね、あ、この間1通あったか) のが現状です。あんまり盛り上がってないなぁと思いつつ TechDEMO#00 から1年。読みづらい文章ですが、SSSA開発秘話をちょこっと紹介。と、そのまえに、Super Star Shooter とは、なんぞや?と思った方もおられると思います。それについてちょっと解説。

 Super Star Shooterとは、1991年に発表された SHARP X68000 用の同人ソフトでして、製作 The DOTMAP BROTHERS&音楽 POMP THE BASS。ゲーム内容は PC-Engine 用のシューティングゲーム Super Star Soldier内の タイムアタックモードを参考に製作されたものです。2(5)分間の間にどれだけの点数を稼ぎ出すかを競うタイムアタック形式のシューティングです。

 ちなみに、GBA版への移植にあたっては、この Super Star Soldier と、X68k版の Super Star Shooter を参考に、私なりのアレンジを加えました(たとえば、時間切れ間際のカウントダウンや、パワーアップゲージなど)。また、難易度等も自称ライトシューティングゲーマのワタクシ あんど を基準としてバランス調整をしてありますので、ハードシューティングゲーマーの方々にはヌルめに感じるかもしれません。

[ X68000,SSS ] & [ GBA,SSSA ] TITLE 比較
X68000版 (256x256dot)。
実機とはアスペクト比が違うので縦長ぎみ
GBA版 (240x160dot)。
比べてみると、かなり小さいことがわかる

はじまりは・・・2002年末・冬
12月もクリスマスが終わったころ、「思えば今年は夏休みもとらなかったなぁ」などと思いつつ、OSが飛んで まっさらのHDDに WindowsXP と DevKitAdv を組み込んでいました。一応正月休みは取れるということでカレンダーを見てみる。 12/28 〜 1/5 まで休みか…。1週間位なら何とか形になるかもと思いつつはじめたのがこのプロジェクトです。もともとのきっかけはIdleTalkのページ(#126参照)を読んでいただいた方はわかると思いますが、アレです。

 それはさておき、以前作ったDEMO#00からすでに1年。私的にこの1年は珍しく仕事も切れずに忙しい期間でした。この間にアマチュアGBA-Develop界でも活発にゲームなどの発表があるんだろうなぁとおもっていたのですが…なんか、ほとんど動きがなかったみたいですね。
 DEMO#00を作った当時、仕事が佳境だったためにWavを鳴らしてI/O周りをちょこっといじったくらいだったのですが、「このハードは、旧X68kでゲーム作っていた人間には垂涎かも」とちょっぴり感じていました。それもあったので、てっきりほかの方々も もっと盛り上がっているものかと。

 CYPURUS(CodeName)を開始したのは、正月休みに突入した12/28から。師走の忙しい時期なのに…。まずはゲームシステムのコア部分の作成。最初TechnicalDEMO#00 のコードを流用しようとしたのですが、使いまわせたのはGBAの初期化部分のみ。 DEMO#00 は 256color で作っていたのですが、これだといろいろと問題があるので、今回は 16color でいこうかなぁと。DEMO#00 のコードはあくまで GBA でのプログラムのテストを兼ねて作ったものだったので、内部的にはシステム化して動かしていたわけではなく、自機の動きなども所詮ベタ書き。使いまわせるところはありませんでした(見直してみたら、ひどいコードだったこと)。

キャラが出た。表示されている文字はキーの状態(bit)をチェックしているところ。01,02が自機。
[Dec28,2002]
CYPRUS のゲームコア部分は、だいたい3時間程度で作り上げました。シューティングゲームを作ったことがある方はわかると思うのですが、シューティングゲームのコアというのは案外小さいものです。各オブジェクトの動作、タイムテーブルによる敵出現ルーチン、そんなわけで、28日の夜には、ただの四角いキャラが画面を動いていました(HitCheckは後回し)。実はここからが大変だったのであります。

 ある程度動き始めると、まともなキャラクタがほしくなってきます。この時点ではただの四角い白いダミーキャラがなんとなく宇宙空間のような画面をなんとなく操作できるのみ(このとき背景BGはまだありません)。今回はSuper Star Shooter(以下SSSと記述)の移植ですから、キャラクタデータを何とかしなければなりません。と、いっても、SSSはすでに12年前のもの(恐ろしい)。当時、プログラムを作ったのは私ではないので、手持ちデータがあるわけでもないのです。と、なると…そう、Emulatorの登場です。SSSのX68k版のディスクイメージは持っていたので、Emulator上でSSSを動かしそれを画面キャプチャ。なんと原始的な。結局これで3〜4日つぶしました。

 さてさて、キャラがそろったのはいいのですが、これをGBA用にするのにまた問題が。16 color paletteを使えるbitmapエディタがありません。最初1からエディタを作ろうかとも思ったのですが、そんなことをすればそれだけで1月はかかるかなぁってことで、Googleで探す…。しかし時代はTrueColorの時代。ここで、X68k-Emu上で昔のツールを使おうかとも考えたのですが、これも後々面倒なのでパス。いろいろと探して見つけたのが、TEditなるツール(詳しくは、SSSA同梱のreadmeを参照してください)。ただし、GBA専用な訳ではないので、いろいろと不都合もありましたが…(笑)。そのあたりは自前でコンバータを書いてGBA用のデータにコンバートをして解決しています。

やっとBG MAPが出た。自機も出た。しかし、スクロールはしない。
[Jan04,2003]
これでやっとSSSのキャラたちが動き始めました。この時点ですでに年は開け、2003年の1月3日。ある程度キャラが動いたところで、次は地上物の表示にかかります。最初手打ちでMAPを作っていたのですが効率が悪いのでこれもgoogleでいろいろとMAPエディターを探す。が、見つからないわけですよ。どのエディタも汎用的には作っていなくて、自分のゲーム用に特化したものばかり。これはしょうがないですけどね。…でも、「なんでこれでシェアウェアなの?」っていうのがたくさんあったのは、ここだけの秘密。
 10個くらい探した後に発見したのが、その名を「俺マップエディタ」。名前が気に入った!(笑)で、webページを見させていただくとどうやらWonderSwan(WonderWitch)用らしい…一応念のため、ためしに使ってみると、BINGO!オーケーです。これいいです。こういうのを探していました。ということで、ありがたく使用させていただきました。TEdit/俺マップエディタの作者の方々にはこの場を借りて感謝、御礼申しあげます。このような役に立つツールを発表してくださってありがとうございます。

 しかし、ここで落とし穴にはまることに。正月ということで、しこたま酒を飲んだ後にBG(MAP)表示部分を作成しました。酔っ払い状態というのは、思いのほかプログラムの効率が上がったりします。ただし、強烈なバグを仕込むという弊害がありますが。なんと次の日には、地上物がスクロールしていました。驚異的なプログラムスピードです。酒に加えて、ちょうど年末辺りから医者からもらっていたビタミン剤が余っていたので、いつもより余計に飲んでいたのですがこれが効く効く。おかげで1/1〜1/5の間に寝た合計時間は8時間くらい…。ビタミン剤の効果で眠くならないんですよ。俗に言う不眠症?でも、これのおかげで久々に「たのしく」プログラムを組めました(やっぱり仕事じゃないって新鮮だなぁ(笑い))。

スクロールするようになった。まだ変だがBGとの判定も入った。
[Jan08,2003]
1月5日、当たり判定がついていないまでも、敵/地上物の表示という、見た感じ TechDEMO#00 に並ぶところまで1週間程度で完成しました。明日からは仕事が始まるので、それほどCYPRUSにかまってやれなくなります。

 1月6日、久々に仕事のC++のコードを見る。…いかん頭の中がC的思考になっている。1週間C言語漬けになっていた あんどの C脳は、すぐには C++脳には切り替わらないのでありました。こりゃ、リハビリが必要だな。この日から帰宅後はCYPRUSにかかりきりの生活が始まりました。

 空中物のHitCheckルーチンの組み込みは、自機/敵の座標周りの判定が同一座標上なので案外簡単にいきました。ただ爆発アニメがまだ入っていないため敵がパっと消えてしまうので、とてつもなく味気ない。次はBGとの判定。ここでかなり深い落とし穴にずっぽりはまっていることが判明。酒をしこたま飲んで書いてあるBGの表示/スクロールルーチンは、ある意味芸実的であり、ある意味他人が書いたプログラムであり、ある意味コメントが何も書いていないノリだけで作ってあるプログラムであり、ある意味トリッキーなことを平気でやっているプログラムなのです。マジックナンバーはやめようね>自分。
 ヒーヒーいいながら、数日前に組んだばかりの自分のプログラムをハックしつつ、自弾とBGとの判定を書きました。これがどうにもうまく動かず、ここで2〜3日消費。
なんとなく判定もついた。敵もちらほらと。だんだんとそれっぽくなってきたでしょ?
[Jan14,2003]
どうやらoffset計算にシフトを使っていたところと、各種計算の順番がうまくかみ合っていたなかったようで、ようやくBGとの判定がつきました。ここまできたら今度は自機のパワーアップに。これも思いのほかさくさく進み、なんとなく自機が動かせて、なんとなく当たり判定があって、なんとなく2〜3種類の敵が出てきてと、ここまで開始から約2週間。後半の1週間が、仕事後の作業だったということを考えれば、この期間内でここまで動いているのは、なかなかすごくないか?(と、自分をほめてみたりする)。

 ここまでくると次に欲しくなるもの。タイトル(すでに、ゲーム本編作りに少し飽きてきているので、一種の逃避行動)。実はタイトルがあるのってデバッグ効率が下がったりであまりよくないのですが(邪魔でしょ?)、なんとなく勢いでこちらに取り掛かりました。データはX68k版のSSSからもらってくる…。が、あたり前ではあるのですが、X68kとGBAでは画面サイズが違う。X68k版をキャプチャして、それをGBA用に縮小。特にタイトルの人物が大変でしたですよ。ドット修正だけで3日つぶす。ただ、作業自体なんだかむちゃくちゃ楽しかったのですが。

 タイトルもついた! あと必要なもの…音ですよ、音。実は音に関してはGB互換音源(PSGもどき)で行こうと思っていたのですが、どうにもかなしいので(一応簡易PSGドライバは書いて鳴らしてみたんですけどね…)、GBA用の音源ドライバを探すことに。いろいろ調べてみると、MOD互換のものをいくつか発見。MODというのは、AMIGAが発祥のPCM音源ドライバ。痒いところには手が届かないのですが、PSGよりはいいだろうと。そこで白羽の矢を立てたのが、Krawall Advance。こちらのWebPageのほうに、無料お試しバージョンのようなものがあったので、ためしにSSSAに組み込んでみる。あら…こんなに簡単に音が鳴って良いの? なんとなくサンプルを見ながら組み込んだところあっけなく鳴りました。
 最初はスピード的にどうなのか危惧していたのですが、CPUパワーの1〜2割程度しか食いません。これならいける!ってことで、非商用バージョンのシェアウェア登録をしました。

ボスを作った…が、見るも無残な姿に。
[Jan20,2003]
さて、これでサウンドドライバーはどうにかなりましたが、肝心の曲データは?MOD系のデータなんか作ったことがなかったので、この日からMODやMOD Editorに関することを調べまくり。KrawallAdvanceでは、MODの上位互換形式のS3M形式が使えるということなので、これでデータを作り始めました。オリジナル版のPOMP THE BASS謹製のMMLがあったので、それを見ながら曲データ作成の開始。
しかし…いくらMMLデータがあるといっても、ちとつらすぎ(苦笑)
 PCMデータなどもフリーのものをもらってきたりしてやっと出来たのが、タイトル曲でした。「う〜ん、なんか違わんか?」。それから試行錯誤を重ねて出来たのが現在の曲たちです。今回はほとんどがフリーの音色をもらってきたりしているので、自分ではあまり満足していないのですが…。

 その後も、敵の行動パターンを増やしたり、ランキングやオプション関係を作ったり、SRAM関係をいじったり。完成するまでの作業量としては、ゲーム部分が4割、その他の部分が6割といった感じです。ゲーム製作者の方はわかると思うのですが、「それっぽいもの」を作るだけならばそれほど力を必要とするものではないのですが、「きっちりしたもの」を作るには、見えない多大な努力が必要になります。
 たとえばタイトルからゲームへ入るときの画面フェード、ポーズへの対応、ソフトリセットの実装、これらは何気なく使える(使っている)ものですが、その内部的調整には、かなり時間がかかっています。
 みなさんもほかのゲームをやるとき等、ほんの少しでいいですからこのようなことに気にかけていただけると、ゲーム開発者としてはうれしいです。

OPTIONなんかも作ってみた(最初はこんなだったのです。完成版とはちょっと違います)。
[Feb11,2003]
SSSAの開発期間はなんだかんだで2.5ヶ月くらいかかりましたが、はじめの1週間以外は趣味の時間であったことを考えれば、早かったですね。なによりも、GBAのハードが素直な点(と、いうよりも、X68k似?)が開発効率を高めてくれた気がします。これで、ビックインディアンだったらなぁ(リトルインディアンで、結構はハマった)。ゲーム部分はほぼ一ヶ月で完成していましたが、DEMO用のKeyの乗っ取りや、SRAM関係でかなり時間を消費してしまいました。

 最終的にはボーナスの判定にはまったり、最後の最後までatanを作らなかったり、ボス/ミドルボスの作成や全体クラッシュのプログラムでバグが出たりとかしましたが、何とかここまで来ました。固定小数の判定ミスによるMAPの2重書きとかの致命的なバグ等がβ直前まであったのですが無事取れてほっとしています。当初の予定では、「判定などでスピードが足りなくなるだろうから、アセンブラをいじらなければいけないかなぁ」とも思っていたのですが、現状でもまだ少し処理には余裕があります。X68kより断然速いですね…。オールCプログラムなのに1/60割れないし。

 そんなわけで、内部的にはあまり最適化されていません。データ類も圧縮しようかとも思ったのですが、ベタで入っています。が、ちゃんと動いているのでOKですね。市販ソフトでは当たり前なSAVEDATAのチェックサムとか、データ2重化で片方壊れても修復可とか、・・・やってません! データ消えたらごめんなさい!

 実はソースも公開しようとか思っていたのですが、サウンドのコードの部分(Krawall Advanceのレジストバージョンを使用している)や、一部のデータ取り扱い部分が、某市販ゲームに使用したツールの発展系を使っていたりしますので、公開は控えさせていただきます。だいたい、その前に行き当たりばったりで書いているものだからソース汚すぎ…。

 久しぶりに最初から最後まで自分1人でやりました。これでやっと SSSA に時間を奪われず、暇な時間が出来ます(笑)。次に何か作るにしても、ドッターと音屋が必要だな。ま、当分仕事で時間がなさそうだけど(涙)。

 さぁ、あなたもゲーム作りに参加してみませんか? MAGiC TOUCH では、かわいい女の子のドッター屋さんと、かわいい女の子の音楽屋さん(22歳以下)を募集しています。さぁ、レッツ応募! (すいません、うそです)。


ありがとうの気持ち
Super Stor Shooter の移植を快く了承してくださった Tinyとも師匠。 ならびに、マニュアルの翻訳をしていただいたオクミユ嬢、各種開発ツールの作者様方には心から感謝いたします。ありがとうございました。

その他のこと
このTEXTを書いている最中、電波新聞社のマイコンベーシックマガジンが来月号を持って休刊という情報が入ってきた。21年間ご苦労様でした。ベーマガに一時的にでも関わりが持てた事は、子供時代からの夢が叶ったことでもあり、休刊に関してはさびしく思います。1984年〜1995年位(青春時代ですなぁ)は読み続けていたのですが、それ以降は遠ざかっていました。たまに書店で見かけて見たことはあるのですが、近年はVisualBasicのプログラムなどが少量載っているのみで、プログラムよりもその他のソフト紹介などのほうが多く、少し残念でしたが、現在のコンピュータ情勢を考えると仕方がないのかもしれません。
 しかし、このようなプログラムの入門書が無くなってしまうのは、今後のPC業界のことを考えてもいろいろと思うところがありますね。さまざまな他人のプログラムテクニックをこの本から学ばしてもらったりしましたし、それを今生かしつつ仕事をしていたりするわけで。たとえば…

10  X=10 : Y=10
100 REM -- Main Program --
110 LOCATE X,Y : PRINT " "; : REM Clear Me
120 ST=STICK(0)             : REM Get Stick Status
130 X= ((ST=4) - (ST=6))    : REM Move  Position (X,Y)
140 Y= ((ST=8) - (ST=2))    : REM (1=1) is -1
150 LOCATE X,Y : PRINT "@"; : REM Draw Me
160 GOTO 110
						
…とか。論理式ってやつですな。いやぁ、懐かしい(読みづらさもシミュレートしてみました)。たぶんすごくちらちら(@)すると思いますが。

 ぜひ全巻収録DVD-ROMなんて出てほしいんですけどねぇ。3万円までなら買います(笑)。いまだに昔のベーマガを引っ張り出して読んでいたりしますし。それに、いま勤めている会社が五反田近くで、毎日会社帰りはバイクで電波新聞社前を通っているので余計感慨深いです。


 
Super Star Shooter Advance に関するご意見ご感想お待ちしております。



p.s. 某有名・ゲームソフト開発会社へα版のSSSAを持って遊びに行ったときの会話

   A「今、こんなのつくってるんですけどね。」
   B「(SSSAプレイしながら)これ…、売る…の?」
   A「いえいえ、趣味で作ってるんで、完成したらWebでフリーで配ろうと思ってるんですけど。」
   B「え〜っ!ダメー!売ろうよ、これ。
     っていうか、タダでこんなもの配るなー! こっちの商売上がったりだー!!」
   A「あはは(苦笑)」(こう言ってもらえると、ちょっとうれしいけど)
   B「しかし、あんどさん、いろんな意味で相変わらずですなぁ」
   A「恐縮です(いちだんと苦笑い)」


[Cyprus/キプロス]
 地中海東部の島で英連邦内の共和国。女神 Venus の生地という伝説がある。 首都 Nicosia。
 W.R.C.御覧の方には、おなじみですね。

©Copyright MAGiC TOUCH All rights reserved.