もうずっと髪の話ばかりでしたが、たぶん今回で最終回。
「イベントで髪付きキャラを出す時どうする?」という話です。
もちろんツクールにキャラチップの髪を表示する機能なんてありません。
じゃあどうやってイベントで髪付きの仲間を出すのか?ってことですね。
三択です。
1)髪だけ別イベントを作る
2)イベント名やメモ欄を活用する
3)他の手段を取る
さて。
答え合わせです。
もちろん1)を選んだ人はいないですよね。
この世で最も愚かな選択の一つだぞレオリオ。
イベント同士が重なった時のプライオリティ問題、同期タイミング、大量の条件分岐によるイベント作成の労力、諸々を考えると絶対に選んではいけない。
じゃあ2)はどうでしょう。
発想としてけっこう出てくる人が多い選択肢だとおもう。
一見するとこのテキストボックス2種はいろいろ使えそうに見えてくる。
ツクラーなら誰もがこれを見て「何かに使えそう」と思ったことでしょう。
たぶん昔の自分なら喜んで使ってただろうなぁ…
メモ欄にactor_1とか入れてユニット情報拾ってマップ処理のupdateで髪画像出せばええやんとか思ったでしょうね。こりゃ便利だな~って。
じゃあ仮にそのメモ欄でユニット情報を拾ったとしましょう。
もしイベントの途中で他の仲間画像に変える時はどうする。
メモ欄を途中で書き換えるスクリプトを作って常にメモ欄を監視させて変更があったら髪を変えるとか?メモ欄はセーブされないからそのマップで使ったらゲームの中断再開とかできないし、そういうケースもどんどん対応させる?
賢明な方はもうお気付きでしょう。
メモ欄を使うとどんどん新しい処理が増えていくんです。
これがいわゆるメモ欄の巧妙なトラップである。
メモ欄に頼ってたらあれもメモ欄これもメモ欄って処理がどんどん増えてスパゲティコード化していく。だから最初から無いものと考える。これ基本。
はっきりいって、メモ欄に頼ると処理がスマートではなくなる。
ということで選択肢3)
まあシンプルに画像名で指定するやり方が良いでしょう。
こうやって特定のファイル名の空画像を用意して、イベント画像を指定する時に選ぶだけ。通常のイベント画像と同じ感覚でやれるメリットは大きい。
イベント初期状態のキャラ画像はもちろん、移動ルートの設定でキャラ画像を変える時も自立移動のルートカスタム時もやり方は通常と変わらない。
メモ欄と違ってスクリプトコマンドで~とか一切いらん。だからスマート。
上の例ではcRole_mainGirlってファイル名になってますね。
これを選ぶと女主人公が髪付きで表示されます。ID指定ではありません。
こっからが今日の日記の本題です。
ここからが重要。
今までの話は前座です。
ツクールってね。
基本的にインデックス管理が多いんですよ。
アクター〇番とかエネミー〇番とかピクチャー〇番とか。
メッセージの制御文字もさ。
\N[1]でアクター1番の名前とか\P[2]で仲間2番目とかなってるでしょ。
えぬもそれに慣れちゃってさ、帽子世界はインデックス管理してました。
アクター1番はドーラから始まって12番目にメシュレイア。
IDで呼び出すから数字は不動。それで何も疑問はなかったんです…
でもある日突然、気が付いた。
あ、これ駄目なやり方やんって。
番号=IDでキャラを紐づけしたら駄目だったんですよ。
何が駄目なのか、帽子世界のイベント例で説明しましょう。
玩具工場のクレーン前で仲間を待機させるイベントがありました。
あそこで待機させる仲間をイベントで表示させていたわけですが。
あれの中身ってこれなんですよ。
これは何をしてるのかというと、東と西のクレーン待機IDという変数を二つ用意してそこに仲間2人目を代入し、仲間になる可能性のあるIDの数だけイベントページを用意して分岐させてるんです。
仲間になる可能性のある人数だけ総当たりなんですよ。
これもし仲間50人もいるRPGだったら50ページですよ。もうアホかと…
当時は何の疑問も感じてなかったんです。
ID管理が当たり前だったから、こういう作り方を何の疑問もなくやっていた。
だからスイッチとか変数とか基幹システムとかどんどん増えていくんですね。
帽子のスイッチいくつか今見たら640個だってさ。こんなん把握しきれんわ…
もちろんツクールは悪くありません。
ツクールは小規模なRPGの製作を想定した設計になっているというだけです。
短編であればむしろID管理の方が楽でしょう。
ただ、大規模なゲーム製作にはシステムレベルで向かないってだけなんです。
そこで思い付いたんですよ。
番号(=ID)ではなく、役割(=role)で管理したらどうかと。
「ID〇番を変数に代入して分岐」というIDで識別する考え方ではなく。
「〇〇という役割のキャラ」を作り、直接出力するという考えです。
玩具工場の例だったらfactoryLとかfactoryRとか適当な役名の配列を作って、そこに仲間データを放り込む。呼び出す時はfactoryLとかRをキーにすればどこからでも呼び出せるわけです。
仲間15人分15ページ全部いちいち手作業でイベント画像をファイル名一覧から選んで設定する必要はありません。role画像を1回選ぶだけで済む。
仲間の数が3人だろうが15人だろうが100人だろうが1回で終わり。
ユニットのIDは何番でも良い。
マジェはツクールみたいにアクター〇番はコイツという判別はしないから、汎用ユニットのIDは男が全員1、女は全員2なんですよ。別に何番でも構わない。
例えばID管理だと帽子世界のバトルトーナメントで決勝のケリーがジャニス相手だとセリフ変わるってイベントを作る時、まずジャニスがID5番であることを覚えているのが前提で、主人公IDとかいう変数を別に作ってその変数を見て5番だけ条件分岐かけて…とかいう作り方になるんですよ。
でね、もしケリーがジャニスじゃなくて別の主人公をライバル視するってイベントを作りたいと思ったらまた別途ケリーライバル変数とかいうのを作ってそこに主人公ID入れて…ってなるでしょ。ほらどんどん変数が増えてく。
これがrole管理になるとどう変わるのかっていうとね。
KellyRivalとかいうrole作ってそこにライバルにするキャラぶち込むだけ。
名前もキャラチップも顔グラも全部KellyRivalを拾ったら勝手に表示されるから誰が何番で~とか覚える必要はないしキャラチップ画像の分岐もいらない。
そもそもID管理の制御文字がさぁ…分かりにくいし使いにくいし…
「お前はあの時の〇〇か。武闘家か何か知らんがその鉄の爪を二度と振れないくらいコテンパンにしてやるぜ!」とかいうセリフはパッと作れないでしょ。職業とか装備の制御文字なんて無いし。
じゃあ制御文字をモリモリ増やしまくった超強力文章拡張スーパープラグインとかを入れた結果、\H[xx]とか\L[xx]とかパッと見て意味分かる?って話なんですよ。ID〇番が誰か把握してるの前提だし、NやPやHやLが何を意味しているのかさっぱり分かんないでしょ?
オマケに変数5番に入ってる数字IDのアクターの名前とか出せないし、仮にスクリプトで改造したらただでさえ見づらいこの制御文字にまた制御文字が入れ子になっちゃうでしょ?\H[\V[xx]]とかさ。まったくスマートではない。
だからね。
もう番号で管理するのやめよ?って話なんです。
role管理なら文章表示も直接コードを叩くからパッと見て意味が分かる。
_KellyRival_unitName_とか_KellyRival_unitClassName_ とかなら、誰の何を表示してるのか読めるでしょ。変数で入れ子になる事もありません。
で、話をマジェのキャラチップの髪に戻します。
イベントで指定する画像名が、このrole名になっているわけですね。
例えば「主人公と一番付き合い長い汎用ユニット=longRelationship」とか。
「重要イベント&戦闘に参加していた汎用ユニット=greatEventer」とか。
「毎回画像が変わる使い捨てのイベント用モブ1人目=mob1」とか。
スイッチや変数で分岐する必要は一切なく、ただrole名の画像を選べば良い。
画像だけじゃなくて名前も二つ名も顔グラも全部のデータはroleから取る。
これがもしID管理だったら…
まずIDを変数で記録してイベントでページごとに違う画像を用意してIDごとに分岐させて…とかいうクソ面倒な作り方になっちゃうんですよ。
まあとりあえずキャラチップの髪画像はこのrole管理システムのオマケで処理してます。顔グラも全く同じやり方で髪付きが表示できます。
もうID拾ってイベント分岐させてページ数ごとにイベントコマンドで画像を手作業で設定していって…とかいう作り方とはオサラバします。
も~イベント分岐地獄はいいや。も~たくさん。
2/11までの拍手お返事です。
■再現できない不具合とかは放置するし手を抜くトコは抜くんですけどね…
でもここは手を抜けないなって部分はどうしても気になっちゃう
■淫乱ピンクは最低でもおっぱいがおっきくないと…
■このアマァ~…どこ当ててんだオラァっていうヤクザの当たり屋も難しい
■良い結果は反転できるのに悪い結果は反転できない困ったやつである
■光速ピンクといえばライトニングさん
■節子そいつはランダムネームジェネレータで作られた汎用ユニットや!
■ザァ~コォ~♥ザァ~コォ~♥ザコザコザァ~コォ~♥朝か~ら~ザァ~コ~♥(ひじょうにきけんなフレーズで煽ってくるメスガキ)
■さっすが~オズ様は話がわかるッ!とどっちにするかまよった
■ザザザザザザザァ~~コォ~♥ザザザザザザザァ~~コォ~♥朝か~ら~ザァ~コ~♥(まだきけんなフレーズで煽ってくるメスガキ)
■全ての淫乱ピンクが集まるといわれる夢の海域…オールピンクかサンジ!
■もう最終回じゃよ
■分かりやすさが欲しいですね、作る側なら
システムがどんどんゴチャっていくのは帽子世界で懲りました
■シキは無印から人気あったから新約で作るのにすごく緊張した主人公でした
期待感が高かったから…
■いつのまに!
個人制作者なら無視したり、仕様として
開き直るような細やかな不具合さえも、
妥協せずに直そうと精進する辺りが、
隊長の隊長たる所以だと思う。