2016年09月28日

接近コモンC

昨夜接近コモンが完成し、公開しました。

接近コモンについてはこちら


前からこのコモンを作るのに試行錯誤する過程を紹介していた記事の延長で、完成に至るまでのことを記録しておきます。

前の解説(?)記事を読むと、処理速度に悩んでいますね。
たしかにそうでした。そんな時期もありました。(遠い目)

でもそんなことは問題じゃなかったんですね。
それより根本的な過ちがあったのでした。
主人公がマップ上のある位置に行くと挙動がおかしくなる不具合があったんですが…。
それを解決しようと悩み続けたところ、驚くべき大失敗が明らかに!

ループ回数を数えていたコモンセルフ変数を、そのループ内で別のループの回数を数えるのにも使っていたのでした!
2か所で!同時に!別々の目的で!
一つの変数を使っていました…。
こりゃ不具合もでるわー。
というよりむしろ、それでも曲りなりには動いていたのが不思議なくらいですね。

ちなみにその変数につけていた名前は「一時変数1」。
こんな名前は気をつけないといけませんね。
「○○カウント用」とかちゃんとわけないとミスの元!

そういうわけで今回の教訓、
変数の使い分けを惜しむな!
ということを学びました。

で、その部分を修正したところ…。
処理が正確になったのはもちろんですが、驚いたのはとにかく処理速度が速い早い!

厳密に言えば、処理落ちしがちというのは今までと変わらないのですが、当面の問題であった更新頻度の遅さが解決しました。
それに正確に判定されるから気持ちいい!
通行不可マスは距離99を入れて判定していますけど、敵との距離が99以上になっても正確に判定されるみたいです。
これはいつか機会があれば通行不可判定の値を99よりもっと大きくしないといけませんね。
(機会ってなんだよ!やる気ないやん!ってツッコミが聞こえてきそうな気がした)

あと今回知ったこと。
動作指定で「XYに接近させる」の座標には通常変数とかが使えるんですね。
以前何かの時に、コモンセルフを入れて使えなかったからやむなく数値を直接入れて、8方向の分、8通りに条件分岐させた気がします。
何でコモンセルフだけダメなのかな。
動作指定機能はもとはマップイベント用に作られたのかもしれないですね。
それでコモンセルフは受けつけないという名残りがのこっているのかも、と推測。
まあそんなわけで今回はキャラの移動先を指定するのに予備変数を使いました。


それから、接近コモンとマップイベントの関係についても書いておきましょう。
ウディタで取得できる通行判定には、マップイベント込みのものと地形のみの二通りありますよね。
最初は使用者の設定でどちらでも選べるようにしようと思いました。
でもマップイベントって、動くじゃないですか。
まあ動かさなくてもいいんですけどね。
街中とかをうろつくモブキャラをよけながら接近させるなら、その時点のモブキャラの位置を毎回更新し続けないといけない。
それをやってみましたけど、とても重くなったので導入はあきらめました。
だって追うキャラが地形を判定して接近してくるのって、プレイヤーに「あのキャラ、ボクがどこにいるのかわかって自分で進路を考えて進んできてる!」って思わせるためじゃないですか。
ちがう?
ホラーゲームであれが好まれるのは、超越的な知能を持っていることをあらわすからかもな、と今思いつきましたよ。
ゲーム内のモブキャラの動きなんてたいてい反復とかじっとしたままとかランダムじゃないですか。
それが状況にあわせて最適解を判断できるなんて、
常識を超えてる!⇒理解の及ばないキャラかも!⇒なんだかちょっと怖い!
みたいな感情を誘発することが期待されているのかもしれませんね。
何の話でしたっけ?
通行設定の判定でしたね。
その自分で地形を読み取って考えて進んできてるはずの敵が、目の前に人が立っているというだけで、よけて通るということを思いつかず、その人が立ち去るまでずっと待ち続ける…。
そんなのおかしいですよね。ありえない。
茶番だ。
せっかくプレイヤーに「こいつは知能を持っているのか?」と思わせかけたのに、「なんだやっぱりアホやん」と思われてしまう。
これじゃ接近コモンを使う意味は全くないですね。
プレイヤーを幻滅させ現実に引き戻してしまうくらいなら、むしろ下手な小細工は最初からやめたほうがいい。
歩行グラの位置なんて細かいことでプレイヤーに何らかの体験を与えようとするのでなく、別の方法を考えたほうがいい。
と、そこまでコモンを作った時に考えていたかどうかは覚えていませんけど。
(きっと今あとから思いついたのでしょう)
ともかくコモンの説明書には「動いて」「すり抜けない」マップイベントは置かないように誘導するような書き方をしておきました。
まあそれでもおきたい人は置くんでしょうけどね。
それはそれでいいです。

それから、コモンを公開するというのは使えるようにするということです。
いくら接近コモンとはいえ、接近しました、はいおしまい、では使えない。
追いついた時の処理を入れる方法と、コモンの起動条件を設定する方法を一応用意しました。
両方とも満足できるできばえではないんですけど…。

追いついた時の処理については並列だからヘンです。
ウディタ同梱のサンプルゲームに入れると夕一が接近してくるんですけどね。
追いつかれた時の処理をオンにしていると、ゲーム開始するとさっそく来るんです、夕一が。
ウルファールがくるっとまわって口上を述べてる間に夕一が到達し、ゲームオーバーとか表示させやがるのです。
これは…。
あ、そっか。
別のコモンに追いつかれた時の処理を入れて、接近コモン内の「追いつかれた時の処理」としてはコモンの予約をすればいいのか・・・。

まあそれ以前に、ウルファールがしゃべっている間にも夕一が接近し続けるというのが普通のゲームとしてはおかしいですよね。
これはどうしたらいいのかな?
動作指定で接近移動させている部分に、システム変数の「イベント実行中?」の分岐をかませればいいのかな。
何か違うような気もしますけど。

などとぼくはどうしてここにそんなことを書き連ねるのか。
ウディタ開いて触ったらすぐわかることで、改善できたらバージョンアップすればいいだけなんですけどね。
完成して公開して、製作から解放されたその解放感がウディタからぼくを遠ざけるのかもしれない。
ウディタもコモンも好きだけど登録作業は好きでないかも。緊張するし。
とか、そんなことはどうでもいいですね。

後書いておくことは、と。
ソフトニシンさんに教えてもらった「ルート検索」「最短経路探索」の二つのコモンを確認しました。
「ルート検索」の方は、導入を試みましたが、ReadMeをどう読んでもぼくには残念ながら理解できませんでした。
コモンやDBを入れるとか変数呼び出し値とか引数とか、それは分かるんだけど、じゃあどういう時に何をしたら何がどうなるのかわからず、ぼくには使えませんでした。
でも6年も前、おそらくそのようなシステムがまだ公開されてなかった(のかな?)時期に公開された意味は大きい、きっと素晴らしいコモンなのだろうと思いました。

もうひとつの「最短経路探索」は、これまた素晴らしかったです。
仕組みは全然わからないけど、ちゃんと敵が接近してきました!
でもこれ、完全初期状態から作られたシステムなんですね。
これを借りた人が自分のゲームにどう使えるか、ちょっとわかりません。
しかもこれは作者さんが今作っているゲームのシステムだというし…。
それならこれを借りて同じ仕組みのゲームを公開する(しかも作者さんより早く?)のはちょっとためらわれますよね。
まあいいんですが。

話はそれますが、ぼくは自分を自作システムを作れる人と思っているけど、完全初期状態をみると頭の中も真っ白になります。
基本システムって何だろう。
その中枢部分はやっぱり戦闘ですよね。
そんなもの使わないほうが作りたい戦闘をよっぽど簡単に作れるというのはよくわかるのですが。
ぼくの場合fairysongなんかはほとんど基本システムは使わなかったんじゃないかなあ。
でも使わないにしても、やっぱりコモンの上の方にダダーっと並んでいてくれないと不安です。
何がデフォルトで何が基本システムかを分けて考えていないからでしょうね。
歩行処理とか、基本システムなくてもできるんでしょう?
わかっているようで実の所なにかよくわかっていません。
基本システムをそのまま使ったゲームなんて今さら作らないよーと思ってますが、それでもぼくはれっきとした基本システム派なのでしょう。

話を戻しまして、ともかく結論としては、今回ぼくが接近コモンを作った意味は大いにあったと思いました。
難しいのが平気な方や古いバージョンのウディタを使う方は「ルート検索」。
システムを自作できる方は「最短経路探索」。
基本システムを使う初心者の方はぼくの「接近コモン」。
が、それぞれおすすめかもしれません。

まあぼくの偏見で言うと、接近コモンを使いたいのは、大体が初心者の方じゃないでしょうか。
それが悪いと言ってるんじゃないですよ。
ホラーで。追っかけさせたいっていうのは。
ゲームを何作か作って、どんなゲームを作ったらどんな反応がもらえるかわかってきた時に、それじゃあ、今度は追っかけられるゲームを作ろうか、とは、なかなか一般的にはそうはなりにくそうには思います。

ぼくとしては、追っかけるゲームを作りたいと思った人が「ウディタなら(接近コモンやその他のコモンを使って)追いかけが簡単にできるらしい!」と知ったことがきっかけでウディタにはまり込み、二作目以降に力作を作り、それをぼくが楽しく遊ばせてもらえたならばうれしいです。
あ、接近コモン作者として何か余計なことを書いちゃってるかなぁ?
まあいつものことだしいいか。

現在、接近コモンを導入したい方にはメールを使ったサポート強化キャンペーンを実施中ですので、追いかけさせたい方、導入が難しかった方はご連絡くださいね。

何だかいろいろなことを書きました。
この文章の乱れ具合を見ても、接近コモンがいかに難産だったかをお察しいただけるのではないでしょうか。
製作を終えたぼくをこんな風にしてしまう、そんなコモンでした。
それでは失礼いたします。



posted by じゃ。 at 22:43| Comment(0) | 雑文 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: