キャラクターだけ作ってみた。
2024/02/28
2024/02/22
川の流れのように
1981年にオルカからリリースされたリバーパトロール。
このゲーム大好きだった。
船底に穴が空いていて浸水しているボートを駆って川を上っていく。
浸水しているということはもたもたしていると沈んでしまう、ということで要するに制限時間内にゴールしろということ。
画面一番左にある黄色いバーが浸水量(=残り時間)を示している。
その隣の赤いバーがゴールまでの距離を示している。
操作性が独特で、ボタンを押している間は前進し、ボタンを離すと下に流される。
舵は前進している時(ボタンを押している時)にしか効かない。
ボタンを離すと加速は止まるが、しばらくは慣性で前進する。
このため、危ないと思ってボタンを離しても止まらずに岩などにぶつかって沈んでしまう。
この辺のクセのようなものを掴むと、この操作がとても楽しくなるんである。
逆に言うと操作が難しくて面白くないと感じる人も多く、人を選ぶゲームだった。
上流から流れてくる流木やドラム缶にぶつかったり、岩にぶつかったりすると沈没する。
またワニにぶつかると沈没はしないが浸水量が増える(残り時間が減る)。
2024/02/21
深く静かに潜航せよ
1979年にナムコがSUBMARINEというゲームをリリースしている。
すでにインベーダーやギャラクシアンなどが登場している年であるが、これはビデオゲームではなくエレメカのゲーム筐体なんである。
左45度に振っているので背景の書き割りや海の手前部分が見切れてしまっている。
Xの悲劇13
ガルバーラ(大きい方のピラミッド)を破壊したときの赤点滅が4つあるうちの2つしか表示されなかった。
CSSで付けた影が下図のように点滅部分を隠していたため。
なので影を変形して点滅部分を覆わないように変更。
マウス使用なのでチートではあるけれど。
2024/02/20
2024/02/09
Xの悲劇12
Area14のアンドア・ジェネシス出現前に現れるはずのブラグ・ザカート(ワープ出現して5発の弾を発射して消滅する黒い玉)が出たり出なかったりしてた。
ゼビウスでは1画面内に登場する空中キャラは6つまでという制限があるので、それに引っかかってる?と思ったが、他に何か飛んでるわけでもなかった。
で、コードを見直してみたら、出現確率が低く設定されてた。
出現確率が100%だとフレーム更新毎にキャラが出現することになるので低く抑えていたのをすっかり忘れていた。
そもそも確率で制御するのは間違ってるのだけれど(今回みたいに出現しないこともあるので)、処理が簡単なのでこのまま行く。
というわけでブラグ・ザカートの出現確率を少し上げておいた。
2024/02/07
Xの悲劇11
ゼビウスは当時としては画期的なリアルな配色で、それまでのゲームにはなかったメタリックなキャラの質感がとても良かったのだけれど、1歩進むと1つ新たな不満が出るのは世の常で、
「影が無いのは不自然」
と思ったものだった。
で、ふと「DOMでキャラ作ってるんだからCSSでなんとかできるんじゃ?」と考えて、やってみたらできた。
2024/02/06
Xの悲劇10
スペシャルフラッグのX位置がおかしかった。
かにかにクラブ>ゼビウスによると、スペシャルフラッグのX位置はこの図のようにして決まる。
画面横軸をバイト単位(8で割った整数値)とし、ソルバルウの位置も端数切り捨てでバイト単位にする。その上でソルバルウの左端から左方向に7バイト、ソルバルウの右端から8バイトの範囲にはスペシャルフラッグは出現しない。
このロジックを組んではいたのだけれど、計算を行うタイミングがおかしかった。
上図にあるようにスペシャルフラッグ出現直前にこのロジックによってX位置を決めなければならないのに、なんとこの計算をエリア切り替え時に行っていた。
つまりエリア1であれば森からエリア1の下端が出現した時に既にスペシャルフラッグの位置を決めてしまっていたのだ。
あかんがな。
というわけで修正した。
2024/02/04
Xの悲劇9
ブラスター(地上攻撃)がボタンを押しても出ないことがあった。
ブラスターは元々連射できず、着弾するまでは次の弾が撃てないのだが、着弾した直後はすぐに次の弾が撃てなくて地上キャラを撃ったつもりが弾が出なくて撃ち漏らすということが結構あった。
おかしいなと思ってコードを見たら、
//着弾後すぐに次弾を撃てないようにする
if( m_nCount >= 24 ) {
return false;
}
のコメントと着弾直後から0.4秒経過しないと次弾が打てなくなるコードが。
なんでこんな処理を入れたのかまったく記憶にない。
恐らくプレイ動画を検証していて次弾はすぐには撃てないのだと判断したのだろう。
でもたぶんこれは勘違い。
だって実機で次弾がすぐには撃てなくてイラッとした経験がないから。
なのでコメントとコードを削除した。
これで地上キャラの撃ち漏らしが減るはず。スペシャルフラッグも見つけやすいはず。
またアンドアジェネシスの4つの砲台(アルゴ)の当たり判定が厳しいようだったので、これも見直した。
シオナイトとかと同じように破壊不能に修正。
2024/02/03
Xの悲劇8
エリア14の1つ目のアンドアジェネシス出現前とエリア16の最後で出現するブラグザカートであるが、
ブラグザカート
ワープ出現して自機に向かって扇状に5発の弾を撃ち、その後消える
間違ってガルザカートを出現させてた。
ガルザカート画面上方から高速にやってきて、全方向に32発の弾と4発の誘導弾を発射し、その後消える
エリア14やエリア16でガルザカートが連発して来て、こんなに難しかったっけとは思ってたのだけれど、今まで調べてなかった。
資料を確認したらここで出るのはガルザカートではなくブラグザカートだった。
めっちゃ鬼仕様になっとったwww
これは定数の定義名を紛らわしくしてしまったのがそもそもの誤り。
ブラグザカートは OBJECT_BZAKATO
ガルザカートは OBJECT_GZAKATO
そりゃ間違えるって。
今は修正済み。
2024/02/02
アルフォスを作りたい4
マップを作り始めた。
開始直後の1画面分だけ。スクロールはしない。
アルフォスを作りたい3
文字を表示する画面だけ作った。
ここで「お?」と思うことあり。
プレイ画面の左端の黒い縦の帯である。
2024/02/01
アルフォスを作りたい2
フォントデータを作ってタイトル画面を再現してみた。
フォントは画像ではなく、指定した位置にピクセルがあるかどうかを1または0で表したデータを作って、それをプレーン毎に描画している。
一番上のタイトル「ALPHOS」、4行目の「NAMCO」、一番下の「ENIX」は文字が大きいが、これは小さい方のフォントを横方向に2倍に引き伸ばしている、いわゆる倍角である。
アルフォスを作りたい
ゼビウスを作ったのでアルフォスも作っておこう、と思った。
あの天才森田和郎が初代PC-8801で作ったゼビウスもどきである。
ゼビウスのコードを流用して作ればサクッとできると思うけど、それじゃあつまらない。
あの天才森田和郎が、クソ遅い初代PC-8801でも遊ぶに足りる速度を確保するために考案したパレットによる重ね合わせ、その後多くのゲームがそのテクニックを真似た、所謂G外し(RGBの3枚のプレーン中、Gのプレーンを独立させる)をやってこそのアルフォスである。
遊ぶ側からしたらまったく意味はない。
というわけで各グラフィックプレーンに見立てた3つのcanvasを用意してみたのだけれど、canvasにパレットなんて概念は無いから(そりゃそうだ)、色数を犠牲にしてマスク処理を行わずに重ね合わせを行う、なんてことしなくてもcanvasが複数枚あるならその時点でもう重ね合わせはできてしまっている。
これではいかん。
ワシはG外しがしたいんじゃあ。
色々考えたけれど、各プレーンはメモリ上に仮想的に持つことにして、重ね合わせた結果をcanvasに反映させるくらいしか思いつかない。
メモリDCに描いておいて実DCにBitbltするようなものであるな。これでG外ししたことになるのだろうか。
ちょっと行き詰まってしまったので、とりあえず起動画面だけ作ってみた。
まだグラフィックは使用しておらずテキストのみである。