イースの半キャラずらしの実装方法について考えてみた

ゲームシステム分析

イース 半キャラずらし

こんにちは。なおキーヌです。

ブログ毎日更新は275日目になります。

イースといえば半キャラずらしですよね!

ナンバリングが9までいきました。おめでたいことです!

イース8のときの進化もすごかったのですが、9になってもっと進化しました。

そんな3D空間でかっこいい剣撃アクションの時代にも関わらず、
私はスプライトを動かして敵にぶつかるだけの攻撃の考察をしようとしています。

なぜイースは主人公が剣士なのに視覚的に剣を振るゲームじゃなくて体当たりして攻撃するゲームなんだろうと
昔から思っていたのですが、原作の制約だったり技術的なものだったり時代背景があるのだと思います。(*本当の理由は後述)

現にイース3になったら横スクロールアクションになり剣を振るアクションゲームになり
4でまた体当たりゲームに戻っていました。

どうやら調べてみたところ、攻撃も会話も体当たりでできるゲームということで
ユーザーの敷居を低くするための手法だったそうです。

キャッチコピーは「今、RPGは優しさの時代へ。

そして公式からは

「優しいけど易しくない」

優しい(易しいと言っていない

ってやつですね。

そしてイースは元々剣を振るタイプのゲームになる予定だったそうですが、
剣を振るのは前すぎてボツになったとのことで体当たりにしたところ感触がよかったので採用という形になったそうです。

正直私からするとイースは他のRPGより難易度高く感じました(笑)

システムを理解すればなんてことはないんですが。

そんなイース、実はもなにも大体の人が知ってると思うのですが、
半キャラ(主人公のアドルのスプライトの半分)をずらして敵にぶつかるのが基本的な攻撃方法となります。

半キャラずらしはハイドライドというゲームが先に実装してたのですが、
イースはそのシステムを改良したものという感じですね。

この半キャラずらし、何も知らずに突っ込むと最初のフィールドでゲームオーバーになりかねないぐらいの重要さです。

本来なら攻撃するためのチュートリアルが入るか最初の町人からメタ発言的な会話から聞き取れるとおもうのですが
一切そんなことはありません(笑)

もしかすると説明書には書いてあったのだと思います。

当時のゲームはチュートリアルとか優しいものを実装すると
容量を圧迫してしまうのでレベルデザインがいかに大切かの勝負でした。

今回はそんな半キャラずらしを実装するための方法を考えてみます。

結論を描いておくと基本的には衝突判定で自分と相手の座標を調べ、
どれぐらい軸がずれているかを判別します。

半キャラずらしアタックの条件分岐方法

半キャラずらしアタックとはその名の通り半キャラ分をずらして攻撃することをさすのですが、
実はアドルのずらした方向によって与えられるダメージがかわるということです。

真正面のガチバトルになるどころか基本的にこちらが不利です。

剣を持つ方にずらすして体当たりするとダメージを大きく与えられます。

逆に盾の持つ方だと攻撃力は落ちてしまいますが、呪文などを防げるそうです。

この盾と剣の違いはMXS2版であった仕様なので、他のハードではない仕組みかもしれません。

プログラム的にいうと、ぶつかった時にプレイヤーが敵の半キャラ分(16×16チップだと8ドットずれた位置)ずれていれば
半キャラずらしが成立するということになります。

右にずれてるか左にずれているかで処理を変える

先ほどの項目でもちらっと言いましたが、アドルは剣と盾を持つ剣士です。

見た目的にアドルが下から敵にぶつかった場合、左にずれていたら剣で攻撃。

右にずれていたら盾で防御しながら攻撃。

MXS2版ではこのような仕組みが組み込まれていたようです。

確かにファミコン版のイースはなかった気がしますね。

基本的に半キャラをずらすとダメージをうけなくなり、剣の方にずらしたら与ダメが増え
盾の方にずらすと被ダメが減るということです。

今の性能のハードならほとんど制約がないので気にせず実装できますね。

攻撃を与えたらノックバックさせ受けたら自分がノックバック

体当たりのゲームはイースの前にハイドライドとかドルアーガの塔とかがあったのですが、
基本的に敵をすり抜けたりその場で倒すまで動けなかったりするゲームが多かったです。

イースはそこの穴をついて攻撃を受けた側がノックバックするという仕組みを取り入れました。

こうすることで見た目的にも攻撃してるんだな・攻撃を受けているんだなという情報が入ってきます。

実際のプログラムをみていないのであくまで私の考えなのですが
仕組み的には体当たりする時にステータスと乱数を利用してどちらがダメージを受けるか判定しているのだと思います。

正面でぶつかった時はアドルのレベルと攻撃力と防御力を考慮して相手の能力と比較して
こちらが大きく下回っていたら基本的に相手の攻撃を受けるだけになるわけです。

そして半キャラをずらしているとその計算式に補正が働いて基本的にこちらが有利になるように組まれているのだと思います。

このノックバックシステムがなければ多分イースの戦闘はかなり苦痛担っていたと思います。

ノックバックシステム、実際に作ってみると面倒臭いんですよね。

敵と衝突・プレイヤーを敵のいるマスに動かす・敵を1つ後ろのマスに移動させる。

敵の背後が壁だったり穴だったりした場合の処理も考えないといけないですし、
実際に実装するとなると条件分岐がかなり増えてきます。

しかしこの条件分岐こそがゲームを面白くする仕組みに繋がるので、
市販の人気ゲームはなぜ面白いのかって感じでプログラミング的に分析すると
ゲームクリエイターとしてのレベルも上がると思います。

こんな感じで半キャラずらしと一口に言ってもやることが結構多い処理。

自分のゲームに半キャラずらしを実装する時にどうやるんだろ?って時に参考になれば幸いです。

それでは。