見出し画像

ぴゅう太でゼビウスっぽいゲームを作ってみた!ゼビウスは再現可能?その2

前回のぴゅう太 日本語G-BASICシミュレータのゼビウスを向上させました。グラフィックとプログラムを改善し、よりゼビウスらしい体験を提供できるようになりました。ただし、ぴゅう太BASICの制約も感じつつ、限界まで改善を試みました。

前回からの改善点

・アンドアジェネシスの登場を追加 ・ソルバルウ表示をスプライトから背景に変更しました ・難易度を向上させました ・グラフィックとプログラムを改善しました ・背景ステージの進行を改善しました

アンドアジェネシスの登場
敵はランダムに降りてくる

結論

以下の詳細説明をご覧いただければわかりますが、全体的にゼビウスらしい雰囲気は醸し出せるようになりました。ただし、ぴゅう太のプログラムの制約を感じる部分もあり、スクロールの実現には無理があるため、さまざまな箇所でゼビウスらしい演出に変更しました。
たとえメモリが豊富であっても、プログラムを増やしすぎると動作が遅くなり、ゲームとしての魅力が損なわれる可能性があります。この意味では、BASICでの再現はこれ以上難しいでしょう。

アンドアジェネシスとの戦いが厳しい
森のグラフィックが一番難しかった

ゼビウスなぜ作った?

最初は、ぴゅう太BASICの性能について知りたかったのです。実際のぴゅう太での開発が理想ですが、実機での開発は少々難しいこともあります。実機で開発する際は、非常にシンプルなゲームでないと難しいかもしれません。そのため、シミュレータを使っての開発が選択肢として考えられます。
MSXとほぼ同じレベルのゲームを制作できるか、あるいは、ぴゅう太BASICならではの優れたゲームが作れる可能性も考えられます。
ゲームの内容には依存しますが、ぴゅう太BASICの特長であるグラフィックツールを使用することで、ゲームデザインを初期段階から検討できます。プログラムは後から作成できますが、最初にグラフィックが備わっていると、開発がスムーズに進むことは確かです。

ゼビウスの醍醐味とは?

ゼビウスは当時、多くの謎に包まれたゲームとして知られており、ゲームを進めるにつれて不可思議な構造物やキャラクターが現れました。ナスカの地上絵、アンドアジェネシス、ソル、スペシャルフラッグなど、これらの要素から生まれるワクワク感が、プレイヤーを引き込みました。
このゲーム性を再現し、進行するたびにステージが変化し、プレイヤーに当たり前のゲーム性を超えた興奮を提供したかったのです。そのため、背景マップもステージの進行に合わせて変化するように設計しました。ただし、背景については改善の余地がまだあると考えています。

BASICシミュレータでゼビウスとは??

ぴゅう太 日本語G-BASICシミュレータで製作してます(リンク先です)
ぴゅう太の実機では、プログラムの微調整により動作可能な場合があります。ただし、これは完全な移植ではなく、背景や敵の動きなどが大きく異なることがあります。ゲームの雰囲気だけを再現する方向で制作しました。

やはりBASIC言語は遅い・・・

BASIC言語の遅さに苦労しました。そのため、本家ゼビウスとは異なる要素が多く含まれています。キャラクターサイズや画面サイズを縮小することで、画像処理が簡便になりました。
・1キャラクター 8×8ドット 1行2色制限
・背景 10×11キャラクターの画面
・アンドアジェネシス 32×32ドット 3色(3スプライト)

縦スクロールは目の錯覚を利用

ゼビウスは縦スクロールシューティングゲームであり、背景のスクロールがゲームプレイに欠かせない要素です。
しかし、シミュレータではマシン語を使用することができず、BASIC言語でスクロール処理を行う必要がありました。これは非常に遅い処理で、背景の110キャラクターを同時に処理する必要がありました。
この課題を克服するため、試行錯誤の末、背景を1行ずつコピー処理する方法を採用しました。この方法はスクロールを実現するのではなく、スクロールに似た演出を作り出すものです。具体的には、用意した背景を1行10キャラクターごとにコピーしているのです。

キャラクターと背景

敵キャラクターは動かない

ゼビウスの敵キャラクターは、基本的に2つのカテゴリに分かれます。地上の敵キャラクターと空中の敵キャラクターです。

  1. 地上の敵キャラクターは、通常1つしか動かない特性を持っています。この敵は基本的に地上に固定されており、プレイヤーに向かって移動することがあります。

  2. 空中の敵キャラクターは、ランダムに表示されるだけで、プログラム内で特別な動作を持ちません。この空中の敵キャラクターはスクロール処理によって自動的に画面から消え、しばしば9個以上が表示されたり、消えたりするパターンが繰り返されます。空中の敵キャラクターは、BASIC言語の処理速度が遅いため、動かすことが難しい特性を持っています。

ぴゅう太のグラフィックは厳しい
先に進むと海面ステージへ

難易度

難易度はゲームバランスにおいて非常に重要な要素です。本家ゼビウスは難易度調整が素晴らしく、プレイヤーがゲームを進めるにつれて難しさが増していく仕組みが評価されています。通常、ゲームは進行するに従って難易度が上昇する傾向がありますが、このゲームでは以下の条件によって難易度が変化します。

  1. 敵を連続して撃つと、敵が上昇する動きを見せます。

  2. 時間が経過すると、敵が降下する傾向が強まります。また、ソルバルウ衝突の確率も上昇します。

現在も難易度の微調整を行っており、難易度が変わることでゲームプレイが大きく影響を受けるため、適切なバランスを見つけるのは難しい作業です。どの難易度が最適か、正しい答えを見つけるのは難しい課題ですが、プレイヤーが楽しめる挑戦を提供することが目標となっています。

アンドアジェネシスは破壊できない
ゲームオーバー

ぴゅう太のゲーム開発機能

ぴゅう太は1982年に登場したゲームパソコンで、メモリ容量が制限され、スプライトはわずか4つ、カラーパレットも16色という厳しい制約があります。さらに、BASIC言語の処理速度も比較的遅いです。一見すると、高度なゲーム開発には向かない性能ですが、実はゲーム製作を前提として設計されたパソコンで、驚くべきゲーム開発機能が内蔵されています。
・背景エディタ
・キャラクターエディタ
・BASIC言語の特殊な命令
・4つの効果音
ぴゅう太 日本語G-BASICシミュレータで製作してます(リンク先です)

BASICシミュレータ開発画面

なぜゼビウスを作ろうと思ったか?

以前、ぴゅう太でさまざまなゲームを制作してきました。しかし、ゼビウスを真剣に再現しようという熱意は当初ありませんでした。ゼビウスに対して特別な思い入れがあるわけではありませんでした。
しかし、ある時、単純な縦スクロールがBASIC言語で実現可能かというアイデアが浮かびました。もし縦スクロールができるなら、ゼビウスのようなゲームも制作できるのではないかという考えが湧きました。
そんなひらめきから、試しにゼビウスを作ってみることを決意しました。制作を始めると、すぐに縦スクロール処理の遅さに直面し、かなりの工夫と努力が必要であることが明らかになりました。

ぴゅう太はゲーム開発マシーンだった!

ぴゅう太は、現代で言えばUnreal Engineのようなものと考えることができます。ぴゅう太はゲーム製作に特化したマシンであり、背景エディタ、キャラクターエディタ、そしてBASIC言語など、すべてがゲーム開発に最適化されたシステムを備えています。特にBASIC言語は、少ないコードでゲームの処理を実現できるため、効率的なゲーム開発に向いています。
例えば
セル(a)=セル(b)
これだけでキャラクターが自由に表示できるのである。
セル(a) aを0~767で変更するだけで、座標に自由に表示できる。
セル(b) bはコピー元のキャラクター座標。
背景キャラクターはセル(0~767)で指定する。
キャラクターを右に移動させるとき+1
キャラクターを左に移動させるとき-1
キャラクターを下に移動させるとき+32
キャラクターを下に移動させるとき-32

ぴゅう太BASICの特徴の1つは、乱数を生成し変数に代入できることです。以下のようにして、0から10までの整数乱数を変数Aに格納することができます。

A = ランスウ(10)

ぴゅう太BASICは整数型の乱数生成に特化しており、その点が注目される特性です。

ぴゅう太はスプライトを最大4枚しか同時に扱えない制約があり、またBASIC言語の処理速度からしても4つのキャラクターを同時に動かすことが限界です。この制約はシステムの設計において重要な要素であり、スプライトを重ねる特殊な命令も存在します。例えば、「アニメ2=アニメ1」といった命令を使用することで、スプライトのアニメーションを制御することが可能です。

ぴゅう太では、ゲーム制作に役立つ効果音が事前に4つ用意されています。これはゲーム開発において非常に便利な機能です。

  1. オト イチオン (効果音1)

  2. オト ニオン  (効果音2)

  3. オト サンオン (効果音3)

  4. オト シオン  (効果音4)

これらの効果音は、ゲームの演出やインタラクションに活用することができます。

ゲームファイルの注意点

ぴゅう太 日本語G-BASICシミュレータで製作してます(リンク先です)
シミュレータをダウンロードして各ファイルを読み込んでください。

この記事が気に入ったらサポートをしてみませんか?