スペランカーの滑落判定
突然ですが『スペランカー』というゲームをご存知でしょうか。 史上最弱の主人公が遺跡を探検するアクションゲームです。 「最弱」たるゆえんは、ほんの数ドット、滑落しただけで死んでしまうのです。 弱すぎです。 ところで、先のteamSKYの忘年会の際に、
ジャンプの高さは死ぬ高さよりも高いのになぜか平気だよね
という話が。 あれあれ、どういうことだ? 結局、そのときは「ジャンプ時はフラグを立てる」ということで決着しましたが、いや、待てよ。 それだと、ジャンプによる降下中は、いくら降下しても死なないことになってしまう。 フラグではダメです。
というわけで、改めて考察しました。 暇人です。 アクションのいかんに依らず、足が地面から離れた瞬間に滑落の限界座標を計算、記憶。 アクションのいかんに依らず、足が限界座標を超えた場合は死亡と判定するのが正解くさいですね。
面倒くさ(苦笑) 明らかに普通のアクションゲームを作るのが楽なのに、なぜ、わざわざ、このような複雑なアルゴリズムを採用したのか。 とても「ゲーム性」などという綺麗事だとは思えない。
あの作品は、とにかくフィールドが複雑です。 制作側の意図した順序通りにプレイしないと不具合を起こしかねません。 例えば、最初のエレベータの縦穴で滑落、最下部まで到達してしまうと、一体、どうなるだろうか。 このような不測な事態を「例外」と言います。 あの複雑なフィールド中のすべての「例外」を潰すことは、骨が折れるし不可能に近い。
そこで「伝家の宝刀」を抜いたのではなかろうか。
順序通りに進まないヤツは、死んでしまえ。
『スペランカー』の場合は極端すぎて特に目立ちますが、この方法論は特別に珍しいわけではありません。 というか、ゲームに限らず、よく利用されます。 例えば「IE以外は門前払い」とか。 IE以外では制作側の意図通りに表示されないため、IE以外では見せない。 方法論としては全く同一。
まあ、ゲームでは許されても、今日び、ウェブサイトでは御法度ですよねぇ(苦笑)