メガマンスタイルの画面スクロールデザイン


25

NESの古典的なMega Manシリーズでは、非常に特殊なスクロール手法を使用しており、実装に頭を悩ませています。基本的に、レベルはすべて同じサイズの「画面」に分割されます。いくつかの画面は互いにスムーズにスクロールし、より広い遊び場のように見えます。一部の画面では、プレーヤーが画面の端に到達するまでカメラのスクロールが停止します。画面の端に遷移すると、次の画面が表示されます。1つの画面に複数のトランジションを設定することもできます。たとえば、1つの画面に移動するラダーがありますが、別の画面に進むこともできます。

これらの画面遷移はどのようにモデル化できますか?

ロックマン画面遷移図

  • 画面0は、プレーヤーが開始する開始画面です。
  • 画面0〜3は水平方向に滑らかにスクロールし、プレーヤーには1つの連続したフィールドとして表示されます。
  • 画面3とそれに隣接する画面4と5の間には遷移があるため、カメラが画面3の右端または上端を超えて進むことはありません。
  • プレーヤーがトランジションエッジのいずれかに移動すると、ユーザー入力は一時的に無効になり、カメラは新しい領域に移行し、その後ユーザー入力が復元されます。

  • ブルースクリーン(画面5)では、水平方向のスクロールのみが無効になっているため、垂直方向の遷移のみが可能です。

  • 緑色の画面(画面6)には画面5に戻る垂直方向の遷移がありますが、画面7への水平方向のスムーズスクロールも可能です。

編集:部屋の観点からトランジションを実装すると、これにつながります:

部屋構造実装図

矢印付きの小さなノッチは、遷移が発生する可能性のある領域です。各領域には「方向」があり、部屋の可視領域のすぐ外側にあります。プレーヤーがリージョンにヒットするとすぐに、トランジションが開始されます。


1
この動作は、Metroidシリーズの2Dゲームにも存在します。
スパー

はい、基本的に同じです。違いは、IIRC Metroidが一部の部屋/シャフトで垂直のスムーズスクロールを許可したのに対し、Mega Manは決して垂直のスムーズスクロールを許可しなかったことです。常に移行がありました。
ザック人間

これは「フリックスクリーニング」と呼ばれています。
ブレッキ

回答:


21

必要なのは、スクリーンではなく部屋のコンセプトだと思われます。画面1〜3は1つの部屋になります。たとえば、部屋は任意のサイズと形にすることができ、画面の倍数のサイズに制限することもできます

カメラは、プレイヤーが境界線に近づきすぎるまで(画面幅の半分)、指定された部屋を通過します。プレーヤーが境界を越えて別の部屋に移動すると、遷移の視覚化を実行します。

各部屋には、別の部屋のアクセスポイントにマッピングされる一連のアクセスポイントがあり、移行ポイントを作成します。


提案をありがとう。これは私が最初にやりたかったことですが、トランジションに対処しようとすると精神的な障害になります。たとえば、部屋の左端に上部からの入り口があり、右端の上部に出口がある長い部屋があるとします。これに対処する方法は、移行をトリガーできる小さな領域を定義することだと思います。
ザック人間

もう少し:「部屋」という概念は、私が現在ゲームに持っているものです。部屋のサイズは任意ですが、部屋から部屋への移行方法はまだ定義していません。
ザック人間

1
@Zack:カメラはプレイヤーの周りを追います。カメラの境界は、プレーヤーのいる部屋の外側の部屋と決してオーバーラップしてはなりません(つまり、ビューポートの右端がこの部屋の右端にある場合、カメラは右に移動できません)。プレイヤーが部屋の壁を通り抜けて隣の部屋に移動する場合、カメラが新しい部屋に安全に入るまで素早くカメラを追跡させます(この動きは、構造の上下/左右のみを気にするだけです)。オプションで、プレーヤーが部屋の壁まで歩いた場合、自動制御を使用して、完全に新しい部屋の中に入るように前方に強制的に移動させます。
doppelgreener

1
@Zack:あなたの質問の編集は、私が考えていたものと相関しているようです。プレイヤーの位置は、これらの移行位置の特定の部屋(垂直の壁ではy1とy2の間、または水平の壁ではx1とx2の間)からしか移動できず、移動するとすぐにその位置を次の部屋に配置します-「往復」ループを回避し、視覚的な移行を実行します。
TreDubZedd

1
また、各部屋の周りの「境界線」を考慮することもできます。これは通常、再生できない領域です(遷移領域を除く)。再生不可能な境界線には常に「壁」グラフィックスが含まれるように部屋をグラフィカルに設計できますが、遷移領域は部屋の残りの部分と同様に開いたままになります。プレーヤーが(再生可能な)境界線を完全に横断するのを待つことで、過渡的な「重複」を偽造できます。次の部屋では、新しい位置が境界線とまったく交差しないようにします。
TreDubZedd

-8

画面サイズのチャンクで構成される大きなスムーズスクロール領域の概念は、特定のサイズのチャンク(1つのメモリページなど)にデータを保持することでパフォーマンスを向上させることができる従来のコンソールの深刻なリソース制限の成果物です。現代のゲームでこのようなシステムを使用する理由はほとんどありません。


7
私は、元の開発者タイル、スプライトなどをロードするためにこの方法でスクロールを実装する必要があることを理解してます。質問で説明したスクリーンベースのシステムを実装する必要はありません。またはスクロール移動。
ザック人間

4
-1-プレイエリアを不連続なチャンクに分割することは、ロードには関係ないかもしれませんが、それでもプレイヤーに特定の場所の感覚を与え、エリアを精神的にマッピングするのに役立ちます。

@Joeそれは私の答えにどのように関連していますか?複数の画面サイズのチャンクに具体的かつ直接対処します。チャンクが不連続であるかどうかについては何も言いませんでした。
スパー

私はあなたの答えを支持しなかったことをあなたに知らせたかったのですが、それが私の質問に答えるとは本当に思いません:「これらの画面遷移をどのようにモデル化できますか?」
ザック人間

@ザックありがとう。それはあまりにもはるかに負になる場合、私はそれを削除しますが、それは時-3にとどまる場合、私はそれの適切なたとえではない直接的な答えだと思うので、私はそれを残しておきます
SPARR
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.