FC2ブログ

イベントシステムの作り方 : アドベントカレンダー2018企画

みなさん、こんにちは。
ネコタです。

今回は、ツクールMVアドベントカレンダー2018という企画に乗っかって、記事を書いてみます。

今回の題材は、「イベントシステムの作り方

ツクールMVには、イベントコマンドと呼ばれるものがあります。

ゲームでは、様々なイベントコマンドを呼び出して、種々の演出が行われていきます。

このイベントコマンド。基本的には、会話とか場所移動とかアイテム取得とか・・・そういう所で使うことが多いです。使い道はかなり多岐にわたりますが、いずれにしろ、何かしらイベントを作る場合には必ず使用するものです。

これを上手に使うと、ゲームの根幹に関わってくる、ゲームをゲームたらしめる「システム」そのものまで作れるようになってきます。

何が出来るかと言えば、基本的には、画面上で起こる事なら何だってできます。

それこそ、やろうと思えば、シューティングゲームやパズルゲーム、アクションRPG、自作メニューや戦闘システムまで。ほんとに、なんでもできます(ただし、そこまで創り込むならプラグインの方が都合が良い)。


で、このイベントコマンドを使いこなすには、いくつか基礎を押さえておかないといけません。

システムの作り方を学ぶ前に、まずは、最低限4つの事を覚えてください。

・スイッチ(セルフスイッチ)
・変数
・条件分岐
・コモンイベント

この4つは、イベントシステムを作るうえで絶対必要になります。いずれも、イベントコマンドの最初のタブにある、使用頻度の非常に高いものです。


イベントシステムでよく使うイベントコマンド
tc40_001.png

赤枠で囲った部分は最低限必須のところになります。


また、出来るだけ早いうちに使いこなせるようになった方が便利なのが、以下の緑枠で囲ったものになります。

・ループ(ループの中断)
・イベント処理の中断
・ラベル(ラベルジャンプ)


イベントシステムで割と使うイベントコマンド
tc40_002.png


蛇足にはなりますが、青い枠で囲った部分は、使えるようになると幅が広がるイベントコマンドです。プレイヤーが選択する項目になるので、プレイヤー参加型のイベント分岐を作ることができます。これは、必要になったときに覚えれば大丈夫です。

イベントシステムでたまに使うイベントコマンド
tc40_003.png


他にも、使えるコマンドはいくつかありますが、それはさておき。
それぞれの解説に入りましょう。


■スイッチ(セルフスイッチ)


スイッチは、テレビのリモコンとか階段の照明なんかについてるアレと同じイメージです。ONもしくはOFFのどちらかの状態で管理されるものです。

ONだから何かが起こって、OFFだから何かが起こる、と決められているものではありません。これ自体は、ただONかOFFに切り替えられます。それ以上でもそれ以下でもなく、それだけです。

使い道としては、ONなら~したい(OFFなら~したくない)、という時のフラグとして使用できます。例えば、スイッチ1がONなら照明が点いている(OFFなら点いていない)という具合ですね。

セルフスイッチは、イベント固有のスイッチです。ツクールMVだと各イベントに4つまで(A,B,C,D)が割り当てられています。各イベント固有のものなので、基本的には他のイベントでON-OFFを切り替えることができません。そのイベント内で完結するような分岐を作るのに便利です。



■変数


変数とは、変な数 ではありません。
変化する数字の事です。

ツクールにおける変数は文字列も入れることができますが、それは置いといて。基本的には、色んな数字を入れておく箱のようなものです。

変数にはそれぞれIDが割り振られており、それぞれの名前のつけられた箱に任意の数字を入れることができる、というものです。ただそれだけです。

これの役割としては、物を数えたり、フラグとして管理したりすることができます。

例えば、手持ちの薬草の数をかぞえて変数に入れておいたり。4つ持ってたら変数1番=4みたいな。あるいは歩数を入れておいたり。50歩あるいたら変数2番=50みたいな。そんな感じ。

そうやって、数字を保管(格納)しておく箱です。

それと、この箱に入れた数字は計算したりもできます。変数1=4に5を掛けて、変数1=20にしたり。

変数に入れた数字は他の変数に出したり、別な数字を入れなおしたり(代入)、計算したり(足し算、引き算、掛け算、割り算)といったことができます。



■条件分岐


条件分岐は、色んな条件を設定することで、Aの時は~する、Bの時は~する、といったように処理を振り分ける分岐点です。

ここで、先ほど紹介したスイッチや変数を使うことが多いです。

例えば、照明が点いている(スイッチ1=ON)時、部屋を明るくする(照明が点いていない場合は部屋を暗くする)。薬草を4つ持っている(変数1番=4)の時、薬草が拾えなくなる(薬草が4つでなければ拾える)。といった具合に、条件が整ったか否かでその後の処理を分岐させることができます。

システムを作るときは、これを使うことが非常に多いです。



■コモンイベント


コモンイベントは、ゲーム上のどのマップでも起動するイベントの事です。また、イベントコマンドで呼び出せるイベント処理でもあります。

システムを作るときは、どちらかというと後者のイベントコマンドで呼び出すイベント処理として扱うことが多くなりますかね。編集の都合で。

まず、コモンイベントには、起動の条件となるスイッチと処理タイミング(自動実行、並列処理)が設定できます。残念ながら、条件に変数は設定できません。

処理タイミング(トリガー)を自動実行にすると、他に実行されているイベントが無いときに、条件を満たしていればコモンイベントの内容が自動で実行されます。基本的に割り込んだりすることはありません。

処理タイミング(トリガー)を並列処理にすると、条件を満たしている限り、他のイベントが実行されていても構わずコモンイベントの内容が実行されます。他のイベントの処理に割り込んでくることがあります。なので、バグの温床にもなりやすく、扱いに注意が必要です。便利なので、バンバン使いますけどね。表立って処理を見せず、裏方でガリガリ計算させたりなんだりする時など、用途は色々。


イベントコマンドで呼び出す場合には、処理の順番に従って呼び出されます。トリガーや条件は無視されます。




■イベントシステムを作ってみよう!


それでは早速、イベントシステムを作ってみましょう。

え、あれだけで何か作れるかって?
いや、無理でしょ(笑)

他にも色々使いますが、とりあえず、他のイベントコマンドは使いながら覚えていけば大丈夫です。

まずは、簡単なところで。採集イベントを作ってみましょう。

今回作ってみる採集イベントの仕様は以下のようなものです。

・調べるとアイテムが手に入る。採集場所からアイテムがなくなる。
・しばらく時間が経つと、再び同じ場所でアイテムが手に入るようになる。

このシステムなら、先ほど紹介したイベントコマンドでほとんど作れます。


では、イベントをちゃちゃっと作ってしまいましょう。

まずは、「調べるとアイテムが手に入る」「採集場所からはアイテムがなくなる」の処理です。


イベント:1ページ目
tc40_004.png

<トリガー>
決定ボタン

<実行内容>
スイッチの操作:#0317 【採集】01 = ON
文章:なし, ウィンドウ, 中
文章
文章         カンタリオンを採取した!
アイテムの増減:カンタリオン + 1


実行内容は、3つだけ。

・スイッチをONにして
・文章でアイテムを手に入れたことをアナウンスして
・アイテムを入手

これで、調べたらアイテムが手に入るイベントができます。

ちなみに、スイッチをONにしているのは、2ページ目に切り替えるためです。


イベント:2ページ目
tc40_005.png

<出現条件>
スイッチ: 【採集】01がON

<実行内容>
なし

このページでは、何も起こりません。ただ、画像が花から草に切り替わっています。

1ページ目で、花を調べることでアイテムを手に入れると同時に、スイッチがONされます。それにより、この何もないページに切り替わりますから、画像も草になります。これで、アイテムが採取されて無くなる演出が出来たことになります。


とりあえず、ここまで作ってみたら、一旦テストプレイをしてみましょう。

イベントの上に乗って決定ボタンを押してみて、アナウンスと共にアイテムが手に入ったでしょうか。その後、イベントは花の画像から草に変わったでしょうか。草の上で決定ボタンを押しても何も起こらないでしょうか。

確認できたら、次に進みましょう。




さて、それではここで問題

とりあえず、アイテムを採取するイベントは出来ましたね。ですが、このままでは、このイベントからは二度とアイテムを採取することができません。なぜなら、イベントはスイッチがONになったことで2ページ目に切り替わっているからです。

では、どうすれば、もう一度このイベントからアイテムを採取することができるでしょうか?



答えは、簡単。先ほどONにしたスイッチをOFFにします。すると、2ページ目は条件を満たせなくなり、出現できなくなります。2ページ目が出現できませんから、このイベントは次に条件を満たせる1ページ目(特に条件が無い)を出現させます。

1ページ目の実行内容は、調べられるとアイテムが手に入るイベントページですから、これで再び採取することができますね。



で、答えが分かりましたので、次に考えることは。

どういったときにスイッチをOFFにするか?

それを、今度はコモンイベントで作ってみましょう。



今回やりたいことは、一定時間が経ったらスイッチをOFFにするという仕様です。

コモンイベント
tc40_007.png
<トリガー>
並列処理

<スイッチ>
【採集】01

<実行内容>
ウェイト:59フレーム
変数の操作:#0447 【採集】待ち時間01 += 1
条件分岐:【採集】待ち時間01 ≥ 20
変数の操作:#0447 【採集】待ち時間01 = 0
スイッチの操作:#0317 【採集】01 = OFF

分岐終了


コモンイベントの条件は、先ほどイベントでONにされたスイッチ【採集】01を使います。

この設定で、イベントからアイテムが採取されると、自動でこのコモンイベントが起動されるようになります。

トリガーは並列処理にすることで、プレイヤーが操作不能になったり、他のイベントの進行を妨げるといったことが無くなります。



で、実行内容ですが。内容はそんなに多くありません。

・ウエイトを約1秒(=60フレーム)入れる
・変数を+1する
・変数が20以上になったら、変数を0にリセットしてスイッチをOFFにする(そうでないなら何もしない)。

このイベントの処理に1フレームが使われるので、ウエイトは60フレームから1フレーム引いた59フレームとしていますが、特に厳密にやる必要もないので60フレームでも構いません。


ちなみに、ウエイトとはです。何も処理せずに待っている時間のこと。


今回は60フレーム間を置いて変数を+1する、という処理を組んでいます。これを言い換えると、1秒待ってからその1秒を変数としてカウントする、ということになります。

そして、20カウント(20秒経過)したら~という条件分岐を組み、条件を満たしているときはスイッチをOFFに。条件を満たしていなかったら(まだ20カウントされていなかったら)スルーする。という処理になっています。



それでは、ここで一旦テストプレイをして挙動を確かめてみましょう。

イベントを調べて花を採取した後、20秒くらい待ってみてください。草が花に変わり、もう一度調べて採取できたら成功です。




これで、アイテム採取後に約20秒経ったら採集物イベントのスイッチをOFFにすることで再度採取可能にするという処理が出来ました。



さて、今回実装したかった機能を確認しましょう。

・調べるとアイテムが手に入る。採集場所からアイテムがなくなる。
・しばらく時間が経つと、再び同じ場所でアイテムが手に入るようになる。

というわけで、今回実装したいイベントの挙動は、これで完成ですね。

お疲れさまでした。




■おわり


いかがでしたでしょうか。

今回は、基本的な「スイッチ」「変数」「条件分岐」「コモンイベント」、この4つを使った簡単なイベントシステム採集システムを作ってみました。

こんな感じで、一連のイベントの挙動により一定の動作・演出を行うコマンド群のことをシステムと呼びます。

システム作りは、慣れるとそんなに難しくないです。難しくないんですが、アイディアは必要です。

最初に、どんな挙動のシステムが欲しいかなぁ~っていう想像をして、次に、それを作るにはどうしたら良いかな? どういう手順で処理を進めたらいいかな?

そうやって考えて、導き出すものなんですね。

最初のうちは勘違いしているものなのですが、先に知識(イベントコマンドの挙動)を沢山頭に詰めんでも出来る物という訳ではないです。まず、どんな挙動をさせたいか。ここをイメージすることが大事。

そして、それを実現させるための手順を具体的にイメージし、構築していくことが必要となってきます。


その後に扱っていくイベントコマンドそのものは、ぶっちゃけ、調べたり試したりしてれば勝手に覚えていきます。

あとはもう、ひたすら訓練しかありませんね。1つずつ作っては試し、トライ&エラーを繰り返していきましょう。そうすれば、いつの間にか大規模なシステムも出来るようになっています。


独学では、大体1年くらいかかると思います。私はそうでした。

でも、教えてくれる人っているのかな?




あ、私ですか?

うん、質問されれば答えますが、ツクールのイベントコマンドしか分かりません(笑)

ツクールMVはJavaScriptと呼ばれる言語だそうですが、そっちを知ってる方が色々出来ると思います。


一応、イベントコマンドを使いこなせると有利な点はありますけどね。

・どのPC版ツクールでも大体すぐに対応できる。それぞれのツクールはRubyだったりするそうですが、ツクールそのものは日本語か英語ですので。イベントコマンドの挙動なんて大体似たり寄ったりですから。

・バージョンアップにより、バグることが少ないです。バージョンがいくらになっても、ツクール自体の機能で作っているので、イベントコマンドの挙動自体が変更されない限り大丈夫。ただし、内部のプログラム自体にバグがあるときは対応できません。お手上げです。言語読めないもん(苦笑)

それくらいですかね。



ではでは、今日はこの辺で。
ネコタでした。

よいツクールライフを!



※追伸※
ちなみに、今回のシステムは私が初めて作ったイベントシステムになります。なので、本当に初心者の頃に作ったものになります。

過去記事はこちら↓
採集システム

あの頃に比べれば、だいぶ技術力も付いてきたので、今回の記事はもっとスッキリした書き方になっています。

私はプログラマーではないので、あまりスパゲティコード(複雑に絡み合ったスパゲティのようなコード)を気にしたりはしないのですが、やっぱり技術力が付いてくるとコードも洗練されてくるようですね。

必要最小限だけで動き、後で見直しても分かりやすい綺麗なコードを作れるようになることは、自分の技術力を推し測るバロメーターにもなるのかもしれませんね。


↓お役に立ちましたら、クリックをお願いします↓
にほんブログ村 ゲームブログへ
にほんブログ村

にほんブログ村 ゲームブログ ゲーム制作へ
にほんブログ村
スポンサーサイト

2018/10/01 DarkestDungeon×ツクールMVコラボイベントゲームの開発後記

みなさん、こんにちは。
ネコタです。

9/30に、DarkestDungeon×ツクールMVコラボイベントゲーム「DarkestDungeonの住人が異世界に迷い込んでしまったけど」を公開しました。

そして、後悔しました(笑)

今回のゲームは、もともとはサンプルゲームに触発されて、「こんなシステムを作りたい!」と思って、作り始めたゲームでした。なので、システムの土台だけはどんどこ作っていったんですが・・・その他の部分は、手抜き過ぎました(笑)

なので、なんかこれ試作品じゃない?みたいな出来になっていると思われます・・・。

で、テストもバグ取りも十分にできず、遊んでみたらまあー・・・
その、なんていうか、バグが多すぎ、という・・・ね・・・。


システムの土台だけは創り込んだので、なんか頑張って手直しすれば面白いゲームになるんじゃないかなぁ・・・?
という気だけがしてます。

なんで、こんな形で公開したかと言えば、締め切りに間に合わせることが目的だったからなんですけども・・・。

「意地でも作って応募する!」という事だけを原動力に作りましたので。


今回の製作で学んだことですが、たしかに締め切りがあると、すごい捗ります。意地でも形にすることができます。

でも、副作用として、もうバグも何でもアリアリで、ちゃんと遊べる仕様かは別ですね(苦笑)

とりあえず動く、くらいのものでは、ちゃんとしたゲームとは言えないよなぁ・・・と思いました。


次からは、きちんと遊べるものを作れるようにならないとですね(^^;)

ではでは、この辺で。




一応、成果物なので、下にリンクを貼っておきます。
DarkestDungeonの住人が異世界に迷い込んでしまったけど
もしよかったら、遊んであげてください。

一部プラグインは使っていますが、大体のイベントはほぼコモンイベントで作っています。
工夫次第で、こんなこともできるんだなぁ、という参考程度にはなるんじゃないでしょうか。



2018/8/29 進捗

みなさん、こんばんは。
ネコタです。

最近は雨で、涼しいですね。このまま夏が終わってくれないかな。
さて、今日のツクールMV制作の進捗ですが、コラボイベント用ゲームのダンジョンに宝箱を設置するイベントを組んでいました。

コラボイベントは、アツマールに投稿なので、できるだけマップを多く使いたくない。そして、マップを使いまわすとなると、オブジェクトの配置をどのようにして変えていくかが問題になるんです。

というわけで、宝箱をあっちこっちに自動で移動させるイベントを組んでいたわけでした。

ではでは、今日はこの辺で。


pixiv FANBOX
https://www.pixiv.net/fanbox/creator/19846130
↑こちらもよろしくお願いします。

ゲーム制作日記<55> 簡易シンボルエンカウント

op.png



みなさん、こんにちは。
ネコタです。



いやぁ、暑いですね。というかもう、熱いですね。
溶けそう。

そんな中、なかなか更新できない日が続いておりますが、今日は暇を見つけて更新。


で、今回も恒例の『 コモンイベントで作るちょっとしたシステム 』 のご紹介でございます。


今回ご紹介するのは、『簡易シンボルエンカウント』です。

シンボルエンカウントは過去にも作ってみました(http://nekotaminontan.blog.fc2.com/blog-entry-31.html)が、結構複雑な内容だったと思います。

そこで、今回はもっと機能を簡素に、そして手軽にシンボルエンカウントを導入できる方法は無いかを模索してみました。




仕様


今回紹介するシンボルエンカウントの特徴ですが、以下の機能を備えています。

・単純にプレイヤーへ近づきます。触れたら戦闘開始です。

・倒したら、その場で30フレームかけて消えます。300フレーム(5秒)後に、同じところに出現します。出現時には音が出ます。

・逃走した場合、その場で180フレーム(3秒)半透明になって停止します。3秒経つと元に戻って索敵を開始します。

・敵はプレイヤーの平均レベルによって自動的に選択されます。シンボルの見た目とはあまり関係ありません。その代わり、コピペだけでどこのダンジョンにも配置が可能です。


(拡張機能)
・索敵ページ、戦闘ページ、勝利後処理ページ、逃走後処理ページの4つに分けて作成しているため、それぞれのページで改変可能です。やろうと思えば、索敵ページを編集したり、移動を制御するイベントを設置することで高度な索敵を可能にすることもできます。

・コモンイベントの内容を編集することで、もっと細かなグループ選択を設定できます。

・コモンイベントの内容を編集することで、出現時や消失時の演出を設定できます。


今回の仕様は以上となります。
一見それなりの機能がありそうですが、内容は大分簡単です。


それでは、まずは準備するものを確認していきましょう。



準備するもの


【必須】
・イベント
・コモンイベント ×4
・変数 ×3(+1)


【推奨】
・創作工房春巻様のデータベースサンプル・ネオ


今回のブログ公開にあたり、創作工房春巻様よりデータベースサンプル・ネオの紹介許可を戴いております。このデータベースサンプル・ネオですが、アクターやエネミーデータ、アイテムや装備、マップデータといった基本的なデータベースが整っており、中編規模の作品をすぐに作れるように用意してあるという優れものです。

そして、今回のシンボルエンカウント作成は、これをそのまま使っておりますので、真似していただければすぐにシンボルエンカウントを導入できるようになっております。

ぜひ、併せてご利用くださいませ。



作り方


それでは、イベントの内容と作り方を説明していきます。まずは、コモンイベントから作っていきます。


コモンイベント
tc39-006.png


コモンイベントは全部で4つ。それぞれの役割ですが、

・【戦闘】トループ決定・・・敵のIDを振り分ける。
・【戦闘】平均レベル算出・・・パーティの平均レベルを算出する。
・【エフェクト】ゆっくり消失・・・イベントの消失演出の処理。
・【エフェクト】ゆっくり出現・・・イベントの復活演出の処理。

となっています。

では、順番に説明していきます。


コモン:【戦闘】トループ決定

≪実行内容≫
条件分岐:【仲間】平均レベル ≤ 4
変数の操作:#0011 【戦闘】トループID = 乱数 2..7
ラベルジャンプ:①

分岐終了
条件分岐:【仲間】平均レベル ≤ 8
変数の操作:#0011 【戦闘】トループID = 乱数 11..16
ラベルジャンプ:①

分岐終了
条件分岐:【仲間】平均レベル ≤ 12
変数の操作:#0011 【戦闘】トループID = 乱数 20..25
ラベルジャンプ:①

分岐終了
条件分岐:【仲間】平均レベル ≤ 16
変数の操作:#0011 【戦闘】トループID = 乱数 29..34
ラベルジャンプ:①

分岐終了
条件分岐:【仲間】平均レベル ≤ 20
変数の操作:#0011 【戦闘】トループID = 乱数 38..43
ラベルジャンプ:①

分岐終了
条件分岐:【仲間】平均レベル ≤ 24
変数の操作:#0011 【戦闘】トループID = 乱数 47..52
ラベルジャンプ:①

分岐終了
条件分岐:【仲間】平均レベル ≤ 28
変数の操作:#0011 【戦闘】トループID = 乱数 56..59
ラベルジャンプ:①

分岐終了
条件分岐:【仲間】平均レベル ≤ 32
変数の操作:#0011 【戦闘】トループID = 乱数 65..70
ラベルジャンプ:①

分岐終了
条件分岐:【仲間】平均レベル ≤ 36
変数の操作:#0011 【戦闘】トループID = 乱数 74..79
ラベルジャンプ:①

分岐終了
注釈:パーティ平均レベルが 37 以上の時
変数の操作:#0011 【戦闘】トループID = 乱数 83..88
ラベル:①


今回、使用しております創作工房春巻様のデータベースサンプル・ネオにおける敵グループデータでは、レベルごとにグループ作成されております。上記コモンイベントの内容はそれに合わせてIDの振り分けを行っています。

内容ですが、算出した平均レベルによって敵グループIDをランダムに選択しています。なお、敵グループにある「ミミック」は宝箱の罠として利用することを考慮して選択肢から除外させていただいてます(ID:60-61)。



コモン:【戦闘】平均レベル算出

≪実行内容≫
変数の操作:#0012 【仲間】レベル = 0
変数の操作:#0013 【仲間】人数 = 0
条件分岐:ハロルドがパーティにいる
変数の操作:#0012 【仲間】レベル += ハロルドのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
条件分岐:アレンがパーティにいる
変数の操作:#0012 【仲間】レベル += アレンのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
条件分岐:テレーゼがパーティにいる
変数の操作:#0012 【仲間】レベル += テレーゼのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
条件分岐:リョウがパーティにいる
変数の操作:#0012 【仲間】レベル += リョウのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
条件分岐:ヴァイスがパーティにいる
変数の操作:#0012 【仲間】レベル += ヴァイスのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
条件分岐:フレデリックがパーティにいる
変数の操作:#0012 【仲間】レベル += フレデリックのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
条件分岐:エリザがパーティにいる
変数の操作:#0012 【仲間】レベル += エリザのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
条件分岐:セリーヌがパーティにいる
変数の操作:#0012 【仲間】レベル += セリーヌのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
条件分岐:マーシャがパーティにいる
変数の操作:#0012 【仲間】レベル += マーシャのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
条件分岐:ルキウスがパーティにいる
変数の操作:#0012 【仲間】レベル += ルキウスのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
条件分岐:ウェンディがパーティにいる
変数の操作:#0012 【仲間】レベル += ウェンディのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
条件分岐:ノエルがパーティにいる
変数の操作:#0012 【仲間】レベル += ノエルのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
条件分岐:イリアがパーティにいる
変数の操作:#0012 【仲間】レベル += イリアのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
条件分岐:ダグラスがパーティにいる
変数の操作:#0012 【仲間】レベル += ダグラスのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
条件分岐:アヤメがパーティにいる
変数の操作:#0012 【仲間】レベル += アヤメのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
条件分岐:レオナがパーティにいる
変数の操作:#0012 【仲間】レベル += レオナのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
条件分岐:オリバーがパーティにいる
変数の操作:#0012 【仲間】レベル += オリバーのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
条件分岐:ピーターがパーティにいる
変数の操作:#0012 【仲間】レベル += ピーターのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
条件分岐:アニエスがパーティにいる
変数の操作:#0012 【仲間】レベル += アニエスのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
変数の操作:#0012 【仲間】レベル /= 【仲間】人数
変数の操作:#0014 【仲間】平均レベル = 【仲間】レベル


今回使用しております創作工房春巻様のデータベースサンプル・ネオのアクター全員の条件分岐を記載しています。これにより、作中でどのアクターがパーティーに居ても、現時点でのパーティーにおける平均レベルを算出できるように作っております。なので、作中で全員を使うことが無くとも、とりあえずこの通りに内容を入れておけば、勝手に計算してくれます。

最初の変数操作で、変数の内容を0にリセットするのを忘れずに。

あと、最後に平均レベルを別の変数にしていますが、変数【仲間】レベルをそのまま使用しても構いません。その場合は、【戦闘】トループ決定の条件分岐で使う変数も修正してください。

一応、ここでは他のイベントなどでレベル関連を扱うことがあるかもしれないと思い、念のため変数を分けているだけです。


コモン:【エフェクト】ゆっくり消失

≪実行内容≫
移動ルートの設定:このイベント (ウェイト)
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:252
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:244
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:231
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:213
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:190
移動ルートの設定:◇すり抜けON
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:162
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:129
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:91
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:48
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:0


イベントを30フレームかけて、ゆっくりと消失させていく演出用コモンイベントです。好みに合わせて編集して構いません。

さりげなく、「すり抜けON」が入っておりますが、これはイベントの組み方次第ではなくても大丈夫です。一応、透過度が低いときにすり抜けられると変かな、と思って途中でいれてるだけだったりします。



コモン:【エフェクト】ゆっくり出現

≪実行内容≫
移動ルートの設定:このイベント (ウェイト)
移動ルートの設定:◇不透明度:3
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:11
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:24
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:42
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:65
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:93
移動ルートの設定:◇すり抜けOFF
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:126
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:164
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:207
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:255


イベントを30フレームかけてゆっくり出現させる演出用コモンイベントです。好みに合わせて編集して構いません。

これも、さりげなく「すり抜けOFF」が入っていますが、透明度が高いうちに通れなくなると不自然かなと思って途中に挟んでいるだけです。


コモンイベントの説明は、以上になります。



それでは、シンボルエンカウントの作り方に入りましょう。


今回のシンボルエンカウントは、全部で4ページ構成です。


EV:1ページ目
tc39-001.png

<トリガー>
イベントからの接触

<実行内容>
注釈:索敵ページ
セルフスイッチの操作:A = ON


任意の画像に設定し、<トリガー>をイベントからの接触に変えておきます。

今回の自律移動タイプは「近づく」にしております。頻度や速度は初期設定なので、何となくプレイヤーに向かってノロノロ歩いてきます。ここを「ランダム」にすると、ただウロウロするだけになります。ここは、好みで変更してください。

プレイヤーに接触すると、イベントの内容が走りセルフスイッチAをONにします。

セルフスイッチAがONになると、戦闘用のページに切り替わります。



EV:2ページ目
tc39-009.png

<トリガー>
自動実行

<実行内容>
注釈:戦闘処理ページ
移動ルートの設定:このイベント (ウェイト)
移動ルートの設定:◇プレイヤーの方を向く
コモンイベント:【戦闘】平均レベル算出
コモンイベント:【戦闘】トループ決定
戦闘の処理:{【戦闘】トループID}
勝ったとき
SEの演奏:Collapse1 (90, 100, 0)
コモンイベント:【エフェクト】ゆっくり消失
セルフスイッチの操作:B = ON

逃げたとき
セルフスイッチの操作:C = ON

分岐終了


イベントがプレイヤーに接触することで切り替わるページです。ここでは、戦闘する敵グループを決定し、戦闘を開始します。

最初に向き変更の操作を入れていますが、稀にバグで、チラッと接触した後に元の方向を向きなおすことがあるので、念のためこのコマンドを入れておいてます。

内容は、最初に作成したコモンイベントでパーティの平均レベルを算出、その後に戦闘グループのIDを決定して、イベントコマンドで戦闘を開始します。雑魚戦闘を想定していますので、基本的には下の画像のように、逃走可にチェックを入れておきます。

tc39-010.png

この時、敗北可にチェックを入れておけば、負けても全滅しないでイベントを起こす仕様にできます。今回の仕様では、敗北可にチェックを入れていませんので、負けたらゲームオーバーとなります。

あとは、それぞれ勝った時と逃走した時で演出を入れ、セルフスイッチで分岐させます。

勝ったときには適当なSEを入れ、最初に作成した演出用コモンイベントを入れた後にセルフスイッチBをONにして、復活待機ページに移行させます。なお、消失演出はこのページに記述してください。理由は後述します。


逃走した時は、そのままセルフスイッチCをONにします。逃走した場合の演出もありますが、今回はページ切り替え後に演出を入れております。理由は後述します。


EV:3ページ目
tc39-008.png

<トリガー>
並列処理

<実行内容>
注釈:戦闘勝利後ページ
移動ルートの設定:このイベント (ウェイト)
移動ルートの設定:◇不透明度:0
移動ルートの設定:◇すり抜けON
ウェイト:300フレーム
SEの演奏:Darkness2 (50, 100, 0)
コモンイベント:【エフェクト】ゆっくり出現
セルフスイッチの操作:A = OFF
セルフスイッチの操作:B = OFF


戦闘勝利後のページです。ここでは、復活までウエイトで待機させ、時間になったら効果音と共に現れるようにしています。

内容としては、まず不透明度を0にし、すり抜けONをかけておきます。

その理由ですが、この待機ページの状態でプレイヤーがマップ移動を行った場合を想定しなければならないからです。

ウエイト中にプレイヤーがマップ移動を行い再び戻ってきた時、イベントは待機状態から開始されることとなります。ここの最初に消失演出を入れている場合、何もしていないのに消失演出が開始されてしまいます。また、最初に不透明度0+すり抜けON処理をしないと待機中のシンボルエンカウントが突っ立っていることになります。

なので、上記の不透明度0+すり抜けON処理を忘れずに入れておきましょう。

一応、イベントが開始した瞬間はチラッと居ることにはなるのですが、並列処理なのでフェードインしている間に消えてくれると思います。もし、この不具合が不安であれば、初期位置を画面外になるように調節しておくと、一瞬で処理してくれることなのでチラッと見えることも無いでしょう。


で、その後の処理ですが、ここで入れるウエイトが再出現までの時間になります。プラグインなどで弄っていなければ60フレーム=1秒ですので、300フレーム=5秒となります。短いと思えばフレームを増やせばいいでしょうし、長いと思えば短くすることでインターバルを調節できます。

あとは、演出でSEとコモンイベントを入れています。上記のとおりに入力すれば、効果音と共にゆっくり出現してくれると思います。

最後に、セルフスイッチをOFFにして最初のページに戻してあげてください。



EV:4ページ目
tc39-004.png

<トリガー>
並列処理

<オプション>
向き固定
すり抜け

<実行内容>
注釈:逃走後ページ
移動ルートの設定:このイベント (ウェイト)
移動ルートの設定:◇不透明度:120
ウェイト:180フレーム
移動ルートの設定:このイベント (ウェイト)
移動ルートの設定:◇不透明度:255
セルフスイッチの操作:A = OFF
セルフスイッチの操作:C = OFF


逃走後に移行するページです。半透明の状態で3秒待機します。3秒後に、元の状態に戻って再度プレイヤーに向かってノロノロ歩き出します。

一応、すり抜け状態なので向き固定を入れなくても大丈夫だと思いますが、念のため入れてます。すり抜けなのに向きが変わると嫌なので。でも、忘れても困らないはず。

このページの最初に、半透明にする処理を入れていますが、これも先に述べた通り。この処理が入らないと、マップ移動後に戻って来たとき半透明になっていないためです。

今回は、逃走後のインターバルをウエイト180フレーム(=3秒)としていますが、これも調節していただいて構いません。あまり短いと、逃げたのに即戦闘となってしまって厄介なので、少なくとも60フレーム(1秒)はあった方が良いと思います。

あとは、時間になったら元の不透明度に戻して、セルフスイッチをOFFにし最初のページに戻してあげます。



以上、シンボルエンカウントの作り方でした。



終わりに


今回のシンボルエンカウントの作り方講座は、いかがでしたでしょうか。

一番大変なところは、戦闘グループIDの振り分けだけで、他は記述も少ないし、比較的簡単な仕様だと思います。

私は、こんな感じに、ただウロウロして倒したら一定時間で戻ってきてくれる程度のシンボルエンカウントで十分だと思っています。やろうと思えば、○マス以内に近づいてきたときに追いかけて――なんてこともできなくはないと思いますが。面倒くさいので、そういうのはいらない派です(笑)

ちなみに、複製するときはコピペするだけです。画像は適宜変えてください。今回の仕様だと、実際に戦うエネミーの画像とシンボルエンカウントの画像がリンクしていないため、マップの雰囲気に合わせた画像を使うだけです。

もし、ダンジョンやエネミーのタイプで画像を変えたい場合には、コモンイベントの【戦闘】トループ決定の内容を編集したり、複数の敵グループ選択用のコモンイベントを作り適宜内容を変更するなどすると良いでしょう。そこら辺は、好みの問題ですね。

ちなみに、敵グループをトループと呼んでいるのは、ツクールXPの名残だったりします(笑)
”隊”、”群れ”という意味らしいです。



ではでは、今日はこの辺で。
ネコタでした。





↓お役に立ちましたら、クリックをお願いします↓
にほんブログ村 ゲームブログへ
にほんブログ村

にほんブログ村 ゲームブログ ゲーム制作へ
にほんブログ村

ブログランキング・にほんブログ村へ
にほんブログ村

近況報告 5/20

続きを読む

プロフィール

猫民のんたん

Author:猫民のんたん

ネコタ:ゲーム作りが趣味の薬剤師。本職とゲーム作りの2足の草鞋を履きこなそうと日々奮闘。

毎週曜日or曜日に更新予定。
-------------------------

ミノン:ゲーム作り初心者で2児の母。前職はSE/PG。子育てをしながらゲーム作りを行おうと、日々奮闘中。

育児中のため活動休止中

最新記事
最新コメント
月別アーカイブ
カテゴリ
フリーエリア
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR