アクションパートとイベントパートの機能の分離についての考え方
Posted: 2014年3月27日(木) 07:53
おはようございます。横スクロールアクションRPGを製作しているネカというものです。
今回は、具体的なバグや不具合に対するを質問するというよりは、どちらかというと皆様のさまざまな意見をご教授
いただきたく投稿させていただきました。
まず、私がC++を用いて制作している横スクロールアクションRPGは
・実際にプレイヤのドット絵キャラクタを動かす「アクションパート」と
・立ち絵を使ってプレイヤ同士が会話をしたり(ADVのようなイメージ)、会話の合間にキャラクタのドット絵をイベントに合わせて動かす
「イベントパート」
の二つからなります。
イベントは、プレイヤが特定の位置に到達したら実行されます。
以前の私は、アクションパートからイベントパートに入る際、「アクションパート」に「イベントパート」をかぶせるイメージをしていました。具体的には、マップチップやプレイヤはアクションパートですでに存在するので(具体的にはマップチップクラス、プレイヤクラス等が)、そのオブジェクトをそのまま利用していき、アクションパートにはない動作をイベントパートで補間をしていくといった形です。
しかし、この場合には、いくつもの欠点があります。
例えば、『ゲームの序盤でプレイヤがラストボスに挑むのだけれど、ラストボスに攻撃がはじかれてしまい(キィンというSEなどを発しながら)まったく歯が立たず、逆にラストボスの攻撃にプレイヤが吹き飛ばされてしまう。』
といったイベントがあるとします。
挙げられる欠点としては、
・「アクションパート」ならばプレイヤは攻撃を受けるとHPが減り、「イベントパート」ならばダメージを受けてもHPが減らない、というIF分岐
が必要
・イベントは、イベント中に必要な全てのオブジェクトに対して、アクセスができる必要があるため、オブジェクト指向のカプセル化を崩してしまう
前置きが長くなって申し訳ないですが、つまりは、「アクションパート」と「イベントパート」は完全に分離をしたほうがいいのではないかということです。
少なくとも、今回作成するゲームでは「イベントパート」で必要なことはドット絵の画像がアクションパートと同じように動いて見えることだけですから(イベント中にプレイヤがレベルアップするといったようなシステムが係る処理は必要ない)、そもそもプレイヤやラストボスといった区別をつける必要すらないように感じます。
そのため、イベントパートでは、「キャラクタを動かすというよりは、もっと単純に画像を動かしているだけ」を意識した処理を
させようかと考えています。
挙げられる欠点としては、アクションパートで読み込んだ画像を再び読み込まなければならないという点がありますが、プログラム中で
もしイベントパートなら、のIF分岐でソースコードが汚れてしまうことを考えると些細なことかなと思います。
まとまりに欠けた内容ではありましたが、私の「アクションパート」と「イベントパート」に関する考えは以上となります。
繰り返しになりますが、皆様なら、どういった処理で実装されるのかをご教授していただければと思います。
また、私の今回の記事に関してゲームプログラマとして根本的にアイデア(実装方法)の考え方が下手である等のご指摘
もいただけるととてもうれしく思います。
それでは、皆様の意見をお待ちしております。
今回は、具体的なバグや不具合に対するを質問するというよりは、どちらかというと皆様のさまざまな意見をご教授
いただきたく投稿させていただきました。
まず、私がC++を用いて制作している横スクロールアクションRPGは
・実際にプレイヤのドット絵キャラクタを動かす「アクションパート」と
・立ち絵を使ってプレイヤ同士が会話をしたり(ADVのようなイメージ)、会話の合間にキャラクタのドット絵をイベントに合わせて動かす
「イベントパート」
の二つからなります。
イベントは、プレイヤが特定の位置に到達したら実行されます。
以前の私は、アクションパートからイベントパートに入る際、「アクションパート」に「イベントパート」をかぶせるイメージをしていました。具体的には、マップチップやプレイヤはアクションパートですでに存在するので(具体的にはマップチップクラス、プレイヤクラス等が)、そのオブジェクトをそのまま利用していき、アクションパートにはない動作をイベントパートで補間をしていくといった形です。
しかし、この場合には、いくつもの欠点があります。
例えば、『ゲームの序盤でプレイヤがラストボスに挑むのだけれど、ラストボスに攻撃がはじかれてしまい(キィンというSEなどを発しながら)まったく歯が立たず、逆にラストボスの攻撃にプレイヤが吹き飛ばされてしまう。』
といったイベントがあるとします。
挙げられる欠点としては、
・「アクションパート」ならばプレイヤは攻撃を受けるとHPが減り、「イベントパート」ならばダメージを受けてもHPが減らない、というIF分岐
が必要
・イベントは、イベント中に必要な全てのオブジェクトに対して、アクセスができる必要があるため、オブジェクト指向のカプセル化を崩してしまう
前置きが長くなって申し訳ないですが、つまりは、「アクションパート」と「イベントパート」は完全に分離をしたほうがいいのではないかということです。
少なくとも、今回作成するゲームでは「イベントパート」で必要なことはドット絵の画像がアクションパートと同じように動いて見えることだけですから(イベント中にプレイヤがレベルアップするといったようなシステムが係る処理は必要ない)、そもそもプレイヤやラストボスといった区別をつける必要すらないように感じます。
そのため、イベントパートでは、「キャラクタを動かすというよりは、もっと単純に画像を動かしているだけ」を意識した処理を
させようかと考えています。
挙げられる欠点としては、アクションパートで読み込んだ画像を再び読み込まなければならないという点がありますが、プログラム中で
もしイベントパートなら、のIF分岐でソースコードが汚れてしまうことを考えると些細なことかなと思います。
まとまりに欠けた内容ではありましたが、私の「アクションパート」と「イベントパート」に関する考えは以上となります。
繰り返しになりますが、皆様なら、どういった処理で実装されるのかをご教授していただければと思います。
また、私の今回の記事に関してゲームプログラマとして根本的にアイデア(実装方法)の考え方が下手である等のご指摘
もいただけるととてもうれしく思います。
それでは、皆様の意見をお待ちしております。