直列と並列
今、RPGを開発しようとしてるんですが、
戦闘シーンとかマップでのキャラ移動とか作ってみると
一応動くんだけどなんかしっくりこないものを感じてました。
その理由が最近なんとなく分かった気がする。
STGやアクションでは、
自機・敵・弾・アイテム等それぞれのオブジェクトは全て各々のタイミングで並列に動く。
自機がショットを撃ってショットが敵に当たるまでの間にも
自機も敵も動けるし、敵が爆発してもその間ゲームが止まったりはしない。*1
しかし、RPGでは、
多くの場合それぞれのオブジェクトは一つのタイムラインに沿って動く。
戦闘時、コマンドを入力している間ゲームは止まっていて、
コマンドを入力し終えるとキャラが行動を始め、演出が再生され、ダメージ処理される。*2
会話中は会話を読むことしかできず、ボタンを押すと次の会話・もしくは演出が再生され、
会話が完了すると、移動したりメニューを開けるようになる。
ここの違いを、今まで正しく認識できてなかった気がします。
STG的な並列処理でRPGを作ろうとしてた。
RPGにももちろん並列処理はあるんですけど、
STGやアクションと比べると圧倒的に直列処理が多い。
この直列処理を楽に管理する方法をうまいこと編み出せれば、
RPGも意外と楽につくれるんじゃないか・・・・・・と思ってます。