2006/11/15

続・こんなVRMだってアリなのでは?  電波ゆんゆん
一昨日の続き。その前に。

クリックすると元のサイズで表示します
<“スーパーはくと”でもどうぞ>

先だっての臨時トワイライトエクスプレスと同地点で撮影したスーパーはくと。以下の話とはなんの関係もないんだけども、益体もない話なのでサービスショットとして貼っときます。要りませんか、そうですか。


*     *     *

一昨日の話は、極論と言うか。VRMスクリプトで記述されるところの動作ロジックをハナからVRMの各部品に埋め込んでしまえ、みたいな話だったワケです。

で、これは、自分ではスクリプトなんて書けませんよー、という人にとっては魅力的かとは思うんですが、スクリプトを書ける人からすれば「そんなことしたら、自分好みの動作をする部品が作れないじゃねーか!」みたいな、けしからん話でもあるワケですよ、ぷんぷん。

これはあまりにヒドいし、I.MAGiCの中の人のノリから言っても現実的でないと思うので、折衷案を書いておきます。たとえばこんな感じ。

クリックすると元のサイズで表示します
<こんな風にスクリプト制御対象部品が3つあるとして・・・>

上掲図中には、信号“SIGNAL1”とセンサー“SENSOR1”“SENSOR2”があります。わかる人はわかると思いますが、gws/1.0規格自動運転スクロールにおける自動信号の定石配置です。

話を単純化するために、SENSOR2のみに注目します。コイツはボクが勝手に「換呼センサー」と呼んでいるもので、ここを通過する編成に「換呼する信号」を教える役割を負います。つまり、このセンサーを編成が通過すると、センサーイベントを介して編成のグローバル変数に「換呼する信号」が伝わり、続いて編成側のメソッドが実行されて信号灯火色に応じた速度変更が起こる、という仕組みです。

VarSignal 換呼する信号
get 換呼する信号 SIGNAL1

これを実現するために、SENSOR2には上に示したような(これだけじゃ、もちろんないですが)スクリプトが書いてあります。VarSignal命令で信号オブジェクト変数“換呼する信号”を宣言し、get命令でこの変数に信号“SIGNAL1”を代入しています。

VRM4のSCRIPTウィザード/スクロールで何が困るかと言うと、このgetする信号を名前で参照しなければならない点です。上掲図を見る限り信号機は1つしかないので話は簡単ですが、実際にはレイアウト上には信号機がもっとたくさんあるはずなので、これが存外面倒な作業になります。

ユーザーの立場から勝手を言えば「この名前の信号機」ではなく「この信号機」というように、直感的にこれを指定できると、非常に楽になるはずです。そこでこんな仕組みをVRMレイアウターに実装するってのはどうでしょう。

クリックすると元のサイズで表示します
<SENSOR2をクリックして選択すると・・・>

SENSOR2が白色反転されているのは従来のVRMレイアウター同様ですが、加えて水色表示で“換呼する信号”と表示されています。これが何かというと、選択した部品のスクリプトの中で宣言されているオブジェクト変数で、かつ、get命令で何かを参照しているそれです。つまり上掲サンプルコードの変数“換呼する信号”です。この例では当てはまるものが1つしかないのでこうなってますが、他にも同様のオブジェクト変数があれば、似たようなボックスが複数表示されるのだ、と考えてください。

クリックすると元のサイズで表示します
<架線を張る要領で「この信号」を選ぶ>

この“換呼する信号”にマウスカーソルを置いて、架線を張る要領でみょーんとドラッグすると水色の矢印が伸びていくとします。で、これが信号部品の同じく水色のコネクタにつながるワケです。ほら「この信号」を指せましたね。

このアイデアのメリットは、

(1)現行VRMの仕様には変更が加わらない。スクロールに対しても手書きスクリプトに対しても適用できる。
(2)部品を選択したときだけこの仕組みが発動するようにすれば、無駄にレイアウターのパフォーマンスを落とすことがない。
(3)現行のVRM4で採用されている技術の応用だけで実装できる。

と言ったところでしょうか。加えて、メニューから「全関係表示」とかすると、アクティブレイヤーに所属するすべての部品から水色矢印が参照先部品に向かってみょーんと伸びてくれたりすると、レイアウトの仕上げ時や問題発生時の解析に便利そうな気がします。

まぁ、実際には、この関係を結んだ後に部品名が書き換えられちゃったらどうすんの(被参照側はコンパイラが走る=ビュワーが起動されるまで、何処から参照されているか知らないはず)、だとか、UNDO処理面倒臭、みたいな課題はあるんですが、それはどういうポリシーで対処するかっつー決め事なんで、何とでもなるんじゃないでしょうか。

*     *     *

ボク的には、正直言って、どうでもいい話ではあるんですが。要するに言いたいのはアレですよ。スクリプトを何とかしろ、と公言するなら、せめてこういう前向きなアイデアを出そうよ、って話です。実現するかどうかは、読者諸兄のI.MAGiCに対する突き上げ次第じゃないですか?
0

コメントを書く

この記事にはコメントを投稿できません




teacup.ブログ “AutoPage”
AutoPage最新お知らせ