マップにイベントを配置してゲームシナリオを作る!
前2回に続き、今回は…
前2回は、基本レクチャーとして、マップ作成~PC移動&マップスクロールを解説してきたが、今回は、「レクチャーⅡ スクロールコントロールを行う!」~「レクチャーⅢ イベントの作成!」へとドドッと進めていく。‥とすれば、盛り上げるBGMは、ドラマティックなイベントBGMやら手強い中ボスとのバトルBGMといったところだろうか。では、気合入れてスタート!!
今回使用するflaは、イベントまで入れた「GameMapAdv」となり、そのflaを用いて進めていく。
レクチャーⅡ&Ⅲで使用する「GameMapAdv」解説
まずは、使用する「GameMapAdv」の解説から入る。実際に遊べるswfを載せたのでプレイして頂きたい。そして、続いてflaの解説を行っていく。
2キー: 上へ移動
8キー:下へ移動
4キー:左へ移動
6キー:右へ移動
5キー:押下時、足元にイベントがあればイベントが発生。
(1)「GameMapAdv」ゲーム&マップクリップ内解説
次のFla画面1は「GameMapAdv」のゲームクリップ内。今回はイベントが入るので、前回までより複雑な構造になっている。
マップクリップのフレーム1に記した、初期設定、フラグ、データは次の通り。マップコントロールやイベントが入ったため増えている。
レクチャーⅡ スクロールコントロールを行う!
実は、前回レクチャーした障害物の回避移動は、その内容難度からレクチャーⅡの予定だったのだが、マップ移動データの解説に伴う必要性から前回解説を行った。というわけで、このレクチャーⅡでは「スクロール開始判定」のみ解説することにした。
(1)マップスクロールを開始する境界範囲を作る!
下のFla画面4を見て頂きたい。この赤い枠は、マップのスクロールを開始する境界である。PCがこの境界範囲内で動き回ってもマップはスクロールしないが、この境界上で移動キーが入力されるとマップのスクロールを開始する。
なぜこうするかと言うと、PCが一歩動く度にマップがスクロールしていては、RPGという長時間プレイするゲームでは目が疲れてしまうし、イベントなどを解くためPCを画面中央で小まめに動かす必要がある際にも、いちいちマップがスクロールしていては鬱陶しく感じてしまう。こうした遊びやすさの配慮から、PCが画面中央辺りにいる場合はマップスクロールをしないよう、マップスクロールをコントロールしている。
このように、スクロールを開始する境界範囲を決めたら、PCがその境界まで進み、境界上で移動キーが入力されたらマップスクロールする仕組みを作る必要がある。今回のレクチャーでは、PCの位置カウンタを用意し、PCが画面中央にいる際には位置カウンタ「pc_ichi_ct_x」と「pc_ichi_ct_y」の値を0とし、一歩移動したらカウンタを±1、そのカウンタの値によって、PCが境界上か否か判るようにしてある。そして、PCの移動処理の中で、境界上か否かによってマップスクロールの可否を決めている。
(2)マップスクロールの可否判定処理
PCが境界上か否かによるマップスクロールの可否判定処理は、PCクリップの内部で行っている。これは、前回解説したPCの移動&マップスクロールの処理を拡張した形となる。
〔PCが前向き(↓へ移動)の場合〕
次のスクリプトによって判定処理している。
PCが前向きの場合、PCは下方向へ移動するので、PCの位置カウンタ「pc_ichi_ct_y(Y軸用)」を見て、値が3より小さければマップスクロールせず、以外ならスクロールさせている。
〔PCが後向き(↑へ移動)の場合〕
前向きの場合と逆に、値が-3より大きければマップスクロールせず、以外ならスクロールさせている。
〔PCが左向き(←へ移動)の場合〕
PCが左向きの場合、PCは左方向へ移動するので、PCの位置カウンタ「pc_ichi_ct_x(X軸用)」を見て、値が-3より大きければマップスクロールせず、以外ならスクロールさせている。
〔PCが右向き(→へ移動)の場合〕
左向きの場合と逆に、値が3より小さければマップスクロールせず、以外ならスクロールさせている。
レクチャーⅢ イベントを作成する!①
今回のようなマップ冒険ゲームの場合、フィールドやダンジョンといったマップ自体もゲームシナリオであるが、そのマップ上に配置されたイベントの数々を解いていくことによってゲームストーリーが作られていく。例えば、誰かに出会って重要な情報(というフラグ)を入手する。または、ダンジョンの奥で重要アイテム(というフラグ)を発見する。あるいは、重要ポイントを守るモンスターやトラップをクリアする(これもフラグ)等々…。
画面での見た目上は、人だったりアイテムだったりトラップやモンスターとの戦いだったりするが、その裏では「フラグ」という変数の値が0になったり1になったり、0→1→2→3…とカウントされていたりする。つまりは、フラグ(変数)の値によってイベントが発生済みか否か、どういった状態か内部的に把握するのだ。
今回の「GameMapAdv」では、マップ上に4つのイベントを配置した。
(1)イベント位置データを用意する
マップ上のどこにイベントがあるか。イベント位置の決定は、マップ移動データと同様な方法でイベント位置データを作成、これを用いてイベントの位置を決めている[1]。
データの数値については、0は、そこにイベントは無し。1~4は、PCがその位置にいる時に5キーが入力されると、対応するev1~ev4のイベントが発生する。これについては、次の(2)で詳しく解説する。
(2)「GameMapAdv」に配置したイベント
次のFla画面7は、マップ上に配置したイベントの内容と、イベントの発生に影響するフラグについて示したもので、前述もしたが、イベントとフラグは密接な関わりを持ち、イベントを作るにはフラグを理解して活用しなければならない。
…ということで、いよいよイベント作成の内容へ!で終わってしまって申し訳ないが、内容ボリューム上、この後は次回に続くとし、今回は終了。
次回、マップ冒険ゲームレクチャーのラスト! 冒険も大詰めだぁ~!!