「マップメイキングテクニック」の編集履歴(バックアップ)一覧に戻る

マップメイキングテクニック - (2013/02/20 (水) 06:59:48) の編集履歴(バックアップ)


マップメイキングテクニック

1ランク上のマップメイカーへ


XMLの編集

ジョイントやバグ技を扱う際に、mapeditorでは設定できない数値を要求する場合がある。その時はXMLと呼ばれるスクリプトを直接編集する。XMLの取得はマップエディタのSave/Load/Testを参照。
XMLはメモ帳で編集する。Copy map to clipboardを実行するまえに、編集したい項目(たとえばグラウンドの反発を-1にしたいのなら、そのグラウンドのfriction)を他とかぶらないであろう数値(円周率でも虹嫁の誕生日でも)に書き換えておくとメモ帳の検索機能を使って簡単に見つけだすことができる。

viprin move
xmlの座標を一括して移動させることができる。
値を無記入でもxmlを見やすく改行してくれるので使い勝手がよい。



マップセッティング

XMLの先頭、<C><P ~のすぐ後にくる部分を編集する。複数設定する場合は半角スペースに注意。
サンプルコード、備考
画面外を隠す Ca="" <C><P Ca="" L="1600" F="1" /><Z><S><S Y="373" T="6" P="0,0,0.3,0.2,0,0,0,0" L="1600" X="800" H="53" /></S><D><T Y="347" X="801" /></D><O /></Z></C>
ナイトモード N="" <C><P N="" /><Z><S><S Y="230" T="0" P="0,0,0.3,0.2,0,0,0,0" L="130" X="400" H="20" /></S><D><DS Y="204" X="400" /></D><O /></Z></C>
スクローリングマップ L="1600" 1600の部分がマップの全長。800~1600の範囲で書き換え可能。800より小さくすると少し変わった動きをする。サンプルコードは「画面外を隠す」を参照。
強制スクロール defilante="速度,加速度" <P defilante="10,4" L="4800" />

強制スクロールマップでは設置したシャーマンオブジェクトが変化する。
  • ルーンはブースター
  • ボールはチーズ
  • 左回転青ネイルはスプリング
  • 右回転青ネイルは即死髑髏

スクロールマップの限界は1600。強制スクロールにかぎり4800が限界となる。


見えないグラウンド

Froi's Invalid Rotation
角度が36000を超えると見かけ上の角度が-8で固定されたままになるバグを利用する。
ウォークスルー <C><P /><Z><S><S Y="220" T="0" P="0,0,0.3,0.2,36090,0,0,0" L="60" H="200" X="400" /></S><D><DS Y="100" X="400" /></D><O /></Z></C> 角度が36090のグラウンド。実体は水平
インヴィジブルウォール <C><P /><Z><S><S Y="220" T="0" P="0,0,0.3,0.2,36090,0,0,0" L="200" X="400" H="20" /></S><D><DS Y="100" X="400" /></D><O /></Z></C> 実体は垂直
36090の値を変えることで実体の角度は反映されるが、36000以上であるかぎり見かけの角度は変化しない。

Greendyj's Invalid Ground Color Glitch
rectangleグラウンドの色、通常6ケタの十六進数を8ケタにすることでグラウンドが見えなくなる。
エディター上でも輪郭がつかめなくなるので、マップを投稿する直前に編集するとよい。
ダイナミックグラウンドにも運用できるがネイルはつかない。
<C><P F="0" /><Z><S><S Y="255" T="12" P="0,0,0.3,0.2,0,0,0,0" L="400" o="ffffffff" X="400" H="100" /></S><D><T Y="155" X="400" /></D><O /></Z></C>


離れた複数のダイナミックグラウンド、シャーマンオブジェクトをネイルで固定して連動させる

Rype's Rotation Glitch
※修正され、現在は使用不可能
時にわずらわしいことだが、ネイルは対象のダイナミックグラウンドの角度が0の時点で存在する場所に置かなければ反映されない。
逆にいうと角度が0の時点でダイナミックグラウンドが存在する場所であれば、ネイルを置いた後にグラウンドの角度を変えてしまっても機能する。
<C><P /><Z><S><S Y="140" T="0" P="1,0,0.3,0.2,90,0,0,0" L="20" X="400" H="200" /></S><D><DS Y="110" X="400" /></D><O><O Y="240" P="0" X="400" C="6" /><O Y="240" P="0" X="400" C="14" /><O Y="200" P="0" X="400" C="11" /></O></Z></C>


エスカレーター

ウォーターエレベーター
※修正され、現在は使用不可能
ダイナミックグラウンドの重さをマイナスにし、そのグラウンドの真ん中に水を設置するだけ。
水をダイナミックグラウンドの真ん中に置かなければ機能しない。
重量をマイナスにしたダイナミックグラウンドは動かないので、基本的にはノーマルなグラウンドのように設置してかまわない。
<C><P /><Z><S><S Y="230" T="4" P="1,-1,20,0.2,0,0,0,0" L="30" H="150" X="400" /><S Y="230" T="9" P="0,0,,,,0,0,0" L="10" H="10" X="400" /><S Y="300" T="0" P="0,0,0.3,0.2,0,0,0,0" L="300" H="40" X="400" /></S><D><DS Y="265" X="300" /></D><O/></Z></C>
摩擦を調節することでぶつかったときの揚力を変化させることができる。
上に乗ると月まで吹っ飛ぶ。こちらの揚力はおそらく調節できない。
ウォーターエレベーターを天井にして下からぶつかると一定時間張り付く。こちらもよく使われる仕掛け。

Invalid Restitutionを利用したエスカレーター
※修正され、現在は使用不可能
Invalid Restitution、つまり反発を無効な値(-1)にしたグラウンドを利用する。
ウォーターエレベーターと違い、これを利用すれば横向きにも上向きにも、若干工夫が必要だが下向きにも設置できる。
<C><P /><Z><S><S Y="396" T="1" P="0,0,0,0.2,0,0,0,0" L="272" H="10" X="330" /><S Y="375" T="0" P="0,0,0.4,.,0,0,0,0" L="10" X="461" H="50" /><S Y="371" T="0" P="1,99999,9,.,0,1,0,0" L="262" X="308" H="40" /><S Y="375" T="0" P="0,0,0.3,0.2,0,0,0,0" L="50" H="50" X="545" /><S Y="249" T="0" P="1,999999,2,.,0,1,0,0" L="100" H="220" X="719" /><S Y="127" T="0" P="0,0,0.3,.,0,0,0,0" L="100" X="719" H="20" /><S Y="259" T="0" P="0,0,0,0,0,0,0,0" L="10" H="284" X="774" /><S Y="390" T="3" P="0,0,0,20,0,0,0,0" L="100" H="20" X="719" /><S Y="325" T="8" P="1,99999,0,24,45,0,0,0" L="16" X="172" H="16" /></S><D><DS Y="336" X="220" /></D><O /></Z></C>
反発-1のダイナミックグラウンドを、反発-1のノーマルグラウンドにぶつけることで力が発生する。
ダイナミックグラウンドのfixed rotationを有効にすることと、重量を最大値にすることを忘れないように。
縦に置くと重力の影響をうけるので力が変化する。
横に置いたものは最大重量のダイナミックグラウンドをぶつけてきっかけをつくる。ぶつけたあとのこのグラウンドの行方に注意。
こちらも要求する挙動を得られるように摩擦を調節する。


モーター

Tktkj's Water Rotation
シャーマンオブジェクト、ネイルのモーターでは要求するだけの力がえられない場面がある。
そこでわれらがtktkj氏の名前を冠したこの仕掛け。クソスレをたてたくなるような見事な永久機関。
<C><P /><Z><S><S P="1,999999,0.3,0.2,0,0,0,0" L="200" H="10" X="400" Y="220" T="0" /><S P="0,0,,,,0,0,0" L="10" H="10" X="400" Y="220" T="9" /></S><D /><O><O X="405" P="0" C="11" Y="220" /></O></Z></C>
ネイルのモーターよりもずっと強い回転力を得ることができる。
<C><P /><Z><S><S H="200" X="400" Y="300" T="0" P="1,999999,0.3,0.2,0,0,0,0" L="10" /><S H="10" X="400" Y="300" T="9" P="0,0,,,,0,0,0" L="10" /><S X="105" H="10" Y="300" T="13" o="324650" P="1,0,50,0.2,0,0,0,0" L="120" /><S X="255" H="10" Y="385" T="12" o="1d18d4" P="1,0,0.3,0.2,0,1,0,0" c="4" L="300" /><S X="-10" H="10" Y="185" T="0" P="0,0,0.3,0.2,0,0,0,0" L="100" /><S X="405" H="10" Y="185" T="0" P="0,0,0.3,0.2,0,0,0,0" L="460" /><S X="705" H="10" Y="300" T="13" o="324650" P="1,0,50,0.2,0,0,0,0" L="120" /><S X="815" H="10" Y="185" T="0" P="0,0,0.3,0.2,0,0,0,0" L="100" /></S><D><T Y="180" X="-5" /></D><O><O P="0" X="405" C="11" Y="300" /><O P="0" C="11" X="105" Y="300" /><O P="0" C="14" X="400" Y="385" /><O P="0" C="14" X="110" Y="385" /><O P="0" C="12" X="705" Y="300" /></O></Z></C>
ダイナミックグラウンドの重量を調節することで勢いが変化する。
ちなみに、ダイナミックグラウンドはすべて水に浮く。シャーマンオブジェクトのアンビルとカノンだけは沈む。
<C><P /><Z><S><S P="1,999999,0.3,0.2,0,0,0,0" L="200" H="10" X="400" Y="220" T="0" /><S P="0,0,,,,0,0,0" L="10" H="10" X="395" Y="220" T="9" /></S><D /><O><O X="405" P="0" C="11" Y="220" /></O></Z></C>
水の位置を変えることでスイングさせることができる。


ダイナミックグラウンドを左上送りにする

Invalid Friction Setting
※修正され、現在は使用不可能
扱いが難しいがメカニズムマップに欠かせない仕掛け。
ダイナミックグラウンドの摩擦を-1にする。
IFグラウンドに関してはこちらに詳しい。http://d.hatena.ne.jp/Nyokki/
摩擦-1のダイナミックグラウンドが、摩擦のあるダイナミックグラウンド、シャーマンオブジェクトに触れると双方が左上にワープし、無効化される。
<C><P /><Z><S><S Y="375" T="6" P="0,0,0.3,0.2,0,0,0,0" L="800" X="400" H="50" /><S Y="228" T="0" P="1,0,0.3,0.2,0,0,40,0" L="50" X="400" H="50" /><S Y="50" T="8" P="1,0,-1,0.2,0,0,5,0" L="50" X="400" H="50" /></S><D><T Y="350" X="400" /></D><O /></Z></C>
ネズミもワープしてしまうので注意。
さらにはIFグラウンドが、摩擦のあるノーマルなグラウンドに触れるとバグを起こしてネズミが全滅するので注意。
<C><P /><Z><S><S X="540" H="20" Y="310" T="8" P="1,1,-1,0.2,0,0,30,0" L="20" /><S X="520" H="100" Y="180" T="0" P="0,0,0.3,0.2,0,0,0,0" L="20" /><S X="770" H="100" N="" Y="180" T="0" P="1,0,0.3,0.2,0,0,0,0" L="60" /><S X="430" H="20" Y="240" T="0" P="0,0,0.3,0.2,0,0,0,0" L="200" /><S X="770" H="100" Y="265" T="1" P="1,0,0,0,0,1,30,0" c="4" L="20" /><S X="625" H="100" Y="181" T="0" P="0,0,0.3,0.2,0,0,0,0" L="150" /><S X="540" H="200" Y="200" T="1" P="1,1,0,0,0,1,30,0" L="20" /><S X="760" H="20" Y="240" T="0" P="0,0,0.3,0.2,0,0,0,0" L="80" /><S X="100" H="20" Y="240" T="0" P="0,0,0.3,0.2,0,0,0,0" L="200" /><S X="265" H="20" Y="240" T="0" P="1,0,0.3,0.2,0,0,0,0" L="130" /><S X="205" H="10" Y="255" T="12" o="324650" P="0,0,0.3,0.2,0,0,0,0" L="10" /><S X="325" H="10" Y="255" T="12" o="324650" P="0,0,0.3,0.2,0,0,0,0" L="10" /><S X="380" H="10" Y="330" T="12" o="fc0d08" P="1,0,0.3,0,0,1,0,0" L="340" /><S X="265" H="10" Y="380" T="3" P="0,0,0,20,0,0,0,0" L="100" /><S X="400" H="10" Y="340" T="12" o="324650" P="0,0,0.3,0.2,0,0,0,0" L="10" /><S X="740" H="60" Y="335" T="8" P="1,1,-1,0,0,0,0,0" L="80" /><S X="740" H="10" Y="370" T="1" P="0,0,0,0.2,0,0,0,0" L="80" /><S X="785" H="20" Y="365" T="1" P="0,0,0,0.2,0,0,0,0" L="10" /><S X="710" H="180" Y="190" T="12" o="49bbf5" P="1,1,0.3,0.2,0,1,30,0" L="20" /><S X="730" H="100" Y="180" T="0" P="0,0,0.3,0.2,0,0,0,0" L="20" /></S><D><T X="770" Y="230" D="" /><DS Y="211" X="100" /></D><O><O X="265" P="0,1" C="10" Y="300" /><O P="0" C="22" X="770" Y="310" /><O X="770" P="0" C="22" Y="225" /></O></Z></C>
IFグラウンドが摩擦のあるダイナミックグラウンド、ノーマルグラウンドに触れるとワープしたりバグをおこしたりするが、摩擦のないグラウンドであれば上にのせたり、ネイルでつなげたりすることもできる。


テレポート

横置きタイプ
反発を最大値にしたlavaでネズミを吹っ飛ばすことによって、瞬間移動したようにみせる。
<C><P /><Z><S><S Y="383" T="8" P="0,0,0.3,0.2,0,0,0,0" L="83" X="400" H="65" /><S Y="392" T="5" P="0,0,0.3,0.2,0,0,0,0" L="10" H="85" X="440" /><S Y="380" T="5" P="0,0,0.3,0.2,0,0,0,0" L="10" H="63" X="360" /><S Y="375" T="6" P="0,0,0.3,0.2,0,0,0,0" L="80" H="50" X="250" /><S Y="378" T="3" P="0,0,0,9999,0,0,0,0" L="80" H="50" X="400" /><S Y="377" T="6" P="0,0,0.3,0,0,0,0,0" L="80" X="550" H="50" /><S Y="61" T="0" P="0,0,0,0,-20,0,0,0" L="100" H="10" X="400" /><S Y="80" T="0" P="0,0,0,0,70,0,0,0" L="100" X="609" H="10" /></S><D><T Y="352" X="250" /></D><O /></Z></C>
頭上の反射板二枚と、着地点は反発を0にする。
サンプルでは、ネズミがlavaの側面、角に触れないようにアースグラウンドではさみこんである。
lavaに雲をかぶせてあるが、これはクラッシュさせないためにこのような措置をとることが望ましいとされているが詳細は不明。なくても動作する。
走りながら落下してlavaに乗るとうまく動かないので、ネズミが自らジャンプしてlavaに飛び乗るようなデザインにするのが望ましい。
瞬間移動の距離が伸びれば伸びるほど予期せぬ動作を起こしやすくなる。長距離のテレポートは縦置きタイプが安定する。

縦置きタイプ
lavaを縦に置くタイプ。精度が高い。
<C><P /><Z><S><S X="400" H="50" Y="375" T="6" P="0,0,0.3,0.2,0,0,0,0" L="800" /><S X="5" H="100" Y="300" T="3" P="0,0,0,9999,0,0,0,0" L="10" /><S X="795" H="100" Y="300" T="3" P="0,0,0,9999,0,0,0,0" L="10" /></S><D><T Y="350" X="400" /></D><O /></Z></C>
ご想像のとおり、lavaが高反発でなければ大変なことになる。
lavaに当たった時の高さも維持される。
<C><P /><Z><S><S X="400" H="50" Y="375" T="6" P="0,0,0.3,0.2,0,0,0,0" L="800" /><S X="795" H="100" Y="300" T="3" P="0,0,0,9999,0,0,0,0" L="10" /><S X="5" H="100" Y="300" T="2" P="0,0,0,1.2,0,0,0,0" L="10" /></S><D><T Y="350" X="400" /></D><O /></Z></C>
受け止める側はlavaである必要はない。なんでもいけるが、たまに吹っ飛ぶ気がするので反発0のものが望ましいとは思う。


Lタグによるグラウンドリンキング

xmlを直接編集し<L>タグを書き加えることで、ふたつのグラウンドを様々な形で関連付けることができる。目に見えないネイルのようなものだと思って差し支えない。xmlの一番最後の部分、<O /></Z>の間に<L></L>ではさまれたリンキングのためのスクリプトを手で書き加える。
<C><P /><Z><S><S Y="390" T="12" P="0,0,0.3,0.2,0,0,0,0" L="800" o="324650" X="400" H="40" /><S Y="340" T="12" P="1,0,0.3,0.2,0,0,0,0" L="60" o="5b87" X="250" H="60" /><S Y="340" T="12" P="1,0,0.3,0.2,0,0,0,0" L="60" o="7b1336" X="550" H="60" /></S><D /><O /><L><JD M1="1" M2="2" /></L></Z></C>
上のサンプルではもっとも基本的なジョイント、<JD />のタグを組み込んである。<JD />だけでなく、<L>と</L>もマップエディターで生成されることはないので自分で書き込む必要がある。
サンプルでは、<JD />にM1=""とM2=""という二つのパラメータしか指定されていない。宣言されていないパラメータはデフォルト値になるので、必要な項目だけ指定すればよい。
M1、M2のデフォ値はMx="0"となる。つまりz値が0のグラウンドにリンクする場合は指定する必要がない。
M1、M2のグラウンドのどちらかが非ダイナミックグラウンドであった場合、ダイナミックグラウンドは他のグラウンドをすり抜けるようになる。(ちなみにこの場合、シャーマンオブジェクトとは判定を保つ)
これを回避するためには固定のダイナミックグラウンドをネガティブmass(質量が-1のダイナミックグラウンド)にする。


フォーマット
<J? M1="A" M2="B" P1="Xa,Ya" P2="Xb,Yb" c="色,太さ,透明度,foreground(前面)" />
J? = ジョイントの種類。JD、JP、JR、JPLが確認されている。
M1 = 一つ目のグラウンド。グラウンドのステータスでいうZの値を指定する。エディター上で確認できる。
M2 = 関連づける二つ目のグラウンド。
P1 = M1の座標。デフォはM1の中心となる。
P2 = M2の座標。
c="色,太さ,透明度,階層" = ジョイントの色。デフォは無色。
  • 色 = 6桁の16進数。
  • 太さ = ジョイントの太さ。もちろん見た目だけの話。マックスは255
  • 透明度。0~1の範囲で指定。1ならば透明度はゼロ。
  • foreground = 1 or 0
<C><P /><Z><S><S Y="390" T="12" P="0,0,0.3,0.2,0,0,0,0" L="800" o="324650" X="400" H="40" /><S Y="340" T="12" P="1,0,0.3,0.2,0,0,0,0" L="60" o="5b87" X="250" H="60" /><S Y="340" T="12" P="1,0,0.3,0.2,0,0,0,0" L="60" o="7b1336" X="550" H="60" /></S><D /><O /><L><JD M1="1" M2="2" c="C5C0BB,20,1,0" /><JD M1="1" M2="2" P1="270,360" P2="530,360" c="0A8C7D,30,0.4,1" /></L></Z></C>


JDタグ - Distance Joint
二つのグラウンドの距離を一定に保つためのジョイント。グラウンドをゴムひものようなものでつなぐ感覚。soul mateをつないでいる紐に近いかもしれない。

<JD M1="A" M2="B" HZ="x" AMP="y" />
  • HZ = 揺れ幅。力が加わったときに伸び縮みする範囲と思っていい。値を小さくすると、ジョイントは弾力を持ったような動きをする。大きくすると伸縮性がなくなる。
  • AMP = 弾力性。HZと併せて指定する必要がある。弾力性というと少し違うのだがいい言葉が見つからない。値を大きくすると元の距離から離れにくく、そして戻りにくくなる。

サンプル
HZがジョイントに弾力を持たせていることがわかる。
<C><P /><Z><S><S Y="390" T="12" P="0,0,0.3,0.2,0,0,0,0" L="800" o="324650" X="400" H="40" /><S Y="100" T="12" P="1,-1,0.3,0.2,0,0,0,0" L="80" o="5b87" X="400" H="20" /><S Y="300" T="12" P="1,0,0.3,0.2,0,1,0,0" L="60" o="7b1336" X="400" H="60" /></S><D /><O><O Y="120" P="0,1" X="410" C="10" /></O><L><JD HZ="1" AMP="5" M1="1" M2="2" c="000000,5,0.1,0" /></L></Z></C>


JPタグ - Prismatic Joint
関連づけられた2つのグラウンドの角度を維持し、指定した軸での距離を一定に保つ。
毛唐どもはスライダージョイントなどと呼んでいて、この表現のほうがわかりやすいかもしれない。

<JP M1="A" M2="B" AXIS="x,y" MV="P,V" LIM1="value" LIM2="value" A="value" />
  • AXIS = 軸の指定。垂直の0,1かあるいは水平の1,0を指定する場面が多いと思われる。
  • LIM1 = スライドを許す下限。ストッパーだと思っていい。下限というのはaxisの反対方向ということになる。
  • LIM2 = 上限。
  • MV = モーター。AXISと併せて使う。AXIS方向に力が働く。つまりお互いのグラウンドが反発しあう、あるいは引き合うような形になる。Pがパワー、Vが速度になる。Pの値には最大値をあらわすInfinityも有効。
  • A = 角度。関連づける二つのグラウンドの角度が違った場合に指定する。デフォのままではゲームが始まった途端に角度が合うように力が働いてしまう。値の指定にはラジアンを使う。

AXISガイド
-1,1 0,1 1,1
-1,0 0,0 1,0
-1,-1 0,-1 1,-1
単純に比率の話のようで、融通がきく。AXIS="1,-2.57"で35度に近い軸を取れた。ほかにもいろいろやり方はあるだろう。

LIM1、2ガイド
10px 0.3333
20px 0.6666
30px 1

ラジアンガイド 180/π=1ラジアン
0.0873
10° 0.1745
15° 0.2618
20° 0.3491
25° 0.4363
30° 0.5236
45° 0.7854
60° 1.0572
90° 1.5708
135° 2.3562
180° 3.1416
270° 5.7124
360° 6.2832

サンプル
MVにより上方向に向かう。そしてLIM2がストッパーのように働いている。
<C><P /><Z><S><S Y="395" T="12" P="0,0,0.3,0.2,0,0,0,0" L="800" o="324650" X="400" H="40" /><S Y="335" T="12" P="1,-1,0.3,0.2,0,0,0,0" L="100" o="3752" X="400" H="80" /><S Y="335" T="12" P="1,10,0.3,0.2,0,1,0,0" c="1" L="20" o="3752" X="465" H="80" /><S Y="195" T="12" P="0,0,0.3,0.2,0,0,0,0" L="280" o="324650" X="300" H="40" /></S><D><DS Y="160" X="330" /><F Y="170" X="390" /></D><O /><L><JP M1="1" M2="2" AXIS="0,-1" MV="500,2" LIM2="5" /></L></Z></C>


JRタグ - Revolute Joint
グラウンドの距離を保ちつつM2を回転させるタグ。LIM1、2を指定ことで回転の幅を制御できる。

<JR M1="A" M2="B" MV="P,V" LIM1="value" LIM2="value" />
  • LIM1 = 下限の角度。反時計回りの限界をラジアンで指定する。
  • LIM2 = 上限の角度。
  • MV = モーター。指定しなければ青ネイルのように機能する。Pがパワー、Vが速度。

P1="x,y"が設定できる。これを使うと回転の軸を設定したいときに座標を指定することができる。グラウンドから離れた場所を指定することもできる。英語のforumにはP2を指定できるような記事も散見されるが、できないんじゃないかと思う。
P1の指定をしない場合はM2の中心が回転軸となる。
双方の角度を固定し、且つ回転を与えるとバグる。

サンプル
LIM2が135度で効いている。LIMを片方でも指定した場合、もう一方は自動的に0に設定される。
<C><P /><Z><S><S Y="390" T="12" P="0,0,0.3,0.2,0,0,0,0" L="800" o="324650" X="400" H="30" /><S Y="180" T="12" P="0,0,0.3,0.2,0,0,0,0" H="10" L="10" o="53d5a" X="400" c="4" /><S Y="225" T="12" P="1,0,0.3,0.2,0,0,0,0" H="180" L="40" o="53d5a" X="400" c="1" /></S><D><T Y="375" X="163" /></D><O /><L><JR MV="50000,2" LIM2="2.35" M1="2" M2="1" /></L></Z></C>


JPLタグ
ふたつのグラウンドを、天秤のように作用する滑車でつなぐ。 P1、P2はそれぞれM1、M2のグラウンドの重心を置く場所。省略するとそれぞれのグラウンドの中心がそれになる。P3、P4は滑車の位置。Rの値を設定することで、P3-M1間、P4-M2間の力が影響しあう(距離と考えたほうがわかりやすいかもしれないが)比率を設定できる。

<JPL M1="A" M2="B" P3="x,y" P4="x,y" R="value" />
  • P3 = M1とリンクされる滑車の位置。
  • P4 = M2とリンクされる滑車の位置。
  • R = 倍率。R="1" がデフォ値。R="0.1" とすると、P4-M2間は反対側の1/10しか影響を受けなくなる。逆にR="2"とすると、P3-M1間が弱くなる。

サンプル
Rの値がM2を地面まで落とす。均衡をとらせたいならば単純にR値を取り除けばよい。
<C><P /><Z><S><S Y="390" T="12" P="0,0,0.3,0.2,0,0,0,0" L="800" o="324650" X="400" H="40" /><S Y="200" T="12" P="1,0,0.3,0.2,0,1,0,0" L="40" o="5b87" X="300" H="40" /><S Y="200" T="12" P="1,0,0.3,0.2,0,1,0,0" L="40" o="7b1336" X="500" H="40" /></S><D><T Y="370" X="400" /></D><O /><L><JPL M1="1" P3="300,100" M2="2" P4="500,100" R="0.5" c="000000,5,1,0" /></L></Z></C>


<L>タグでお絵かきをする
c="色。6桁のカラーコード,太さ,透明度,階層(前面or背面)"

ジョイントに色をつけられる機能を使い、絵を描くことができる。<JP /><JR />は力が加わった場合にしかジョイントの色が見えないので、<JD /><JPL />を使用す。<JPL />のP3、P4は固定なのでダイナミックなオブジェクトには利用できないが、動かない絵であればひとつのタグで4点を指定できるため使い勝手がよい。
20kbがmapeditorにロードできる限界。注意が必要。

やってみると大変な苦行であることがわかる。手で容量限界まで描いてしまうような頭のおかしいひとは数人しか確認されておらず、いまやviprin's drawing editor! がアートマップメイカーの常識となっている。