ゲープロ講座セッション2:戦術型SLGの移動アルゴリズム(1)
- 戦術SLGのコンピュータルーチンはAIそのもの |
こんにちは、鷹月ぐみなです。講座のスタートを待ち望んでくれていた人はどれくらいいたかな?どきどき。それでは早速セッション2を始めようと思います。最初と言う事で、どのジャンルから入ろうかなといろいろ悩みました。簡単なところでSTGやパズルあたりから始めようかとも思いましたけれど、結局、以前からの要望数がもっとも多かった「戦術SLG」という難関から始めることにしました。覚悟しててね(笑)。……とはいえ、鷹月もルーチンは1度しか実装した経験がなく、あとはデコンストラクションから得られたチップスを再構成しただけなんで、どこまで実用的かの判断は皆様に委ねます。
|
はじめに、戦術型SLGって具体的に何をさすのか、っていう説明からしておきますね。ゲームで言うとラングリッサーやシャン・グリ・ラ、ファーランドストーリーなどがこれにあたります。定義としては、「戦うユニットのコマをマス上を動かし、有利な状況で戦いを挑み相手を撃退するゲーム」と言った所でしょうか。これに対して戦略型SLGというものもあり、こちらは「地域地域を舞台に、相手を制圧していくタイプのSLG」と言った所です。後者はえてして戦闘に入ると戦術型SLGに入るケースが多いです。後者の例は「銀河英雄伝説」「シュヴァルツシルト」「信長の野望」「三国志」などなど。 それで今回は、戦術型SLGの移動アルゴリズムの講義なんですが、移動ルーチンこそがシステムで最も重要なウェイトを占める場所なんで(そもそも移動は戦闘に直接繋がるので)、じっくりとやっていきたいと思います。大体5回くらいになるかな?このセッションは「戦術SLG講座その1」とでも題して、あまり難しくない話からしていくことにしましょう。今回はプログラムソースもなしです。 |
SLGの基本は「相手の動きを読み、お互いのステータスと相談しながら行動する」事だと鷹月は思ってます。実際少しでもやりこめば、相手の行動パターンなんて読めてしまうのです。だったらその考え方をそのままプログラムに……全然いかないからこそ、SLGのフリーソフトが極端に少ないんですよね(^^;)。これ、プログラムを多少知っている人でもお手上げなんです。半分以上アルゴリズムの問題ですから。 たとえば「基本的に敵はプレイヤーキャラ{PC}に向かってくる」のはシューティングだろうとアクションだろうと変わらない原則なんですが、SLGでこれを単純に実行してしまうと、大変なことになります。 (画面は鷹月が開発しているMAPエディターにて制作。しかし手抜きなキャラだ……) たとえば、擬似3D迷路を探索する際の有名な方法「右手法」なるものがあります。これは、障害物にぶつかる度に右側の方に動きながら壁沿いに進んでいけば、最終的にどこにでも行ける、というもので、かならずしも有効とは言えませんが、迷路ゲームで迷う人はかなり重宝する考え方です。それをこの状況に使ってみましょうか。
《試行》
なるほどこのアルゴリズムを与えれば、微妙に妖しい動きはしますが確かにPCの元に辿りつきます。では、たまたま右側のルートがふさがっていた場合はどうしましょう? ここで、マップをボードゲームに置換えて、あなたは敵を操作することにします。そしてが一歩ずつPCに近づく所を想定してみましょう。普通、先程の敵のような無様な動作はせずに、しっかりとPCの元にたどり着く事ができます。意識的にか、あるいは無意識的に、いくつかの事を考えているのです。それは大抵、次の通りです。
・マップを見て、行き止まりの方には動かない。 そして実は、市販ゲームのSLGなどのプログラムは、ほぼこのアルゴリズム通りに実装しているのです。でも、こんな抽象的な概念をどうプログラムすればいいのでしょうか、と思うでしょう。しかしそこはそれ、コンピューターに向いた「再帰処理」という考え方を用いれば、実は結構単純に実装できるのです。正解はこうです。
《試行》
「単純じゃないってば」と思われたらごめんなさい(^^;)。これはプログラムに落とすと結構単純になるんですよ〜。ちなみに今回は敢えてプログラムでは書きません。実際にエレガントな動作をさせるにはもうちょっと手を加える必要がありますが、これでも充分に機能します。
今回はこれくらいにしておきます。 |
次回は「ケース」についてあらいざらい考えていこう……と思っていましたが、とりあえず先にプレイヤーの移動ルーチン処理だけ実装を確かめて、ソースを解析しちゃおうと思います。 SLG移動ルーチン講座(1)、いかがだったでしょうか。為になった点、分かりにくい点、要望などありましたらお寄せ下さい。 - 鷹月ぐみな |
□ Session3:戦術SLGの移動アルゴリズム2 (1999/11/8)
|