ここでは、デフォルトのRailPlotには存在しないレールや情景部品を追加したり、自作のパーツを追加したりしたい人向けに、RailPlotのアドオンの作成方法を紹介します。
RailPlotの販売ページはこちら (Booth)
RailPlotの使い方動画はこちらこちら (Booth)
RailPLotは、レールを繋いでレイアウトを設計するためのソフトです。
商用利用が可能なため、イベントでレールを組んでレイアウトを設営する際の設計図としての利用が便利です。
株式会社タカラトミーが販売している「プラレール」に関する公式製品ではありません。
1.既存のアドオンを見本にしよう
RailPlotには、実は最初からアドオンが複数導入されています。RailPlot.exeと同じ階層にある「addon」フォルダを開いてみましょう。

zipファイルが複数入っていますね。このzipファイルひとつひとつがアドオンです。
このデフォルトで導入されているアドオンのzipを解凍しておくとアドオン作成の良い見本となるので、テキトーに解凍して参考にしてください。
また、アドオンではなくRailPlot本体に組み込まれているパーツもあります。こちらも参考にできます。
RailPlot.exeと同じ階層にある「register」フォルダにはデフォルトのパーツのcsvファイルが、RailPlot.exeと同じ階層にある「image」フォルダにはデフォルトのパーツの画像が入っています。


画像を改変するなりcsvを参考にするなり、煮るなり焼くなりなんでもどうぞ。
また、RailPlotにはアドオン制作時などに役立つ機能があります。
「操作」タブ内にある「高度な機能」タブ内にある「デバッグ情報を表示」チェックボックスにチェックを入れてみましょう。
パーツを選択したとき、パーツの情報が見られるようになります。作ったパーツの動作確認のときなどにこの機能を使って確認しましょう。

2.フォルダ作成
半角英数字とアンダーバーのみで名前を構成したフォルダを作成してください。
空白(スペース)の代わりにアンダーバーを使う感じの命名規則なので、必ずしもアンダーバーを使わないといけないというわけではありません。
作りたいアドオンを体現する名前にするといいでしょう。
なお、アドオンを公開したあとはこのフォルダ名は一切変えてはいけません。
例えば、自作アドオンのバージョン1.0.0を公開したあと、さらにパーツを追加したバージョン1.1.0も公開するとしましょう。この更新の際にもしフォルダ名が変わっていると、バージョン1.0.0のときに作成したレイアウトを1.1.0で開くとパーツが読み込まれなくなってしまいます。
このフォルダ名を、以降はアドオンのIDと呼ぶことにします。
この記事では、「example_rail」というフォルダ名をつけます。

そしたら、作成したフォルダの中に「<アドオンのID>_register.csv」というcsvファイルと「image」というフォルダを作りましょう。

レールを追加したいのなら「rail」フォルダ、情景部品を追加したいのなら「facility」フォルダ、机を追加したいのなら「desk」フォルダをimageフォルダの中に作りましょう。
もちろん、レールと情景部品の両方を追加したいのならrailフォルダとfacilityフォルダの両方を作りましょう。

3.パーツの画像の作成
この記事では、
- 赤色の直線レール
- 赤色の曲線レール
- 1500mm×450mmの机
- 単線複線ポイントレールとターンアウトレールが融合した三分岐のポイントレール
を作っていこうと思います。
何かしらの画像編集ソフトを使用する必要があります。
使う画像編集ソフトに指定はないですが、私はpaint.netをずっと使っているのでこちらをオススメします。
有料版と無料版がありますが、無料版でも問題ありませんのでこちらからダウンロードページに飛んだあと、PriceがFreeと書かれている方(画像の通り)をダウンロードして使ってください。

3.1 単純なレール
まずは赤色の直線レールから。
画像編集ソフトで、RailPlot-x.x.x\image\rail\straight\straight_1.pngを開いてみましょう。

- ほとんどのレールは特殊なレールや情景部品をレイアウト内で目立たせるために灰色(#595959)で表現(※必須ではない)
- レールのつなぎ目や立体交差の上下などをわかりやすくするため、幅10ピクセルの白枠で囲われている
- レールや情景部品の画像は、実際の1mmを10ピクセルで表現
- 凸ジョイント部分は長さ110ピクセル、幅118ピクセルで表現
- 基本的にはレールの幅を382ピクセルで表現
- 基本的には凸ジョイントが右になるような配置で作る
となっています。
直線レールの画像は横幅が2270ピクセルとなっていますが、これは直線レールの実際の長さが216mmですから、216×10+110=2270となっているということですね。
白枠に囲われた灰色の部分でレールを表現している、というわけではなく、白枠もレールの一部であるため、例えば直線レールの両側に幅10ピクセルの白枠を作るから画像の横幅は2270+10×2=2290だ、ということにはならないので注意してください。
今回は赤色の直線レールを作るので、白枠はそのままにして灰色の部分を赤く塗りつぶしましょう。

画像ができたので画像を保存します。
ここで、パーツのIDを決めておく必要があります。レールを体現するふさわしい名前をつけてあげてください。
なお、パーツのIDはアドオンのIDと同様、半角英数字やアンダーバーで構成した文字としてください。
今回は、「red_straight」とします。
では、「rail」フォルダ(情景部品の場合は「facility」フォルダ)の中に、名前がパーツのIDなフォルダを作成してください。今回は「red_straight」というフォルダ名です。
そのフォルダの中に、作成したレールの画像を「<パーツのID>_1.png」と命名して保存してください。「_1」をつけるのを忘れないように。

仮に他の人が作ったアドオンに「red_straight」という全く同じパーツIDのパーツがあったとしても、アドオンのIDが異なるのでエラーが起きることはありません。
RailPlot-x.x.x\image\rail\curve\curve_1.pngという曲線レールの画像も開いて、同様に赤くして「red_curve_1.png」として保存しました。
3.2 机
次に、1500mm×450mmの机の画像を作っていきましょう。
RailPlot-x.x.x\image\desk\desk_1800_450\desk_1800_450_1.pngを画像編集ソフトで開きます。これは1800mm×450mmの机の画像ですね。

レールや情景は1mmを10ピクセルで表現していましたが、机は1mmを0.5ピクセルで表現しています。
今回はこの1800mm×450mmの机の画像の横幅を縮めて1500mmにしたいので、今回は横幅を750ピクセルにすればいいですね。
パーツのIDは半角英数字やアンダーバーで構成してあれば何でもいいですが、今回は「desk_1500_450」とします。
「desk」フォルダ内に名前がパーツのIDなフォルダ(今回は「desk_1500_450」)を作成し、その中に作った画像を「<パーツのID>_1.png」(今回は「desk_1500_450_1.png」)として保存します。
3.3 ポイントレール
さて最後に単線複線ポイントレールとターンアウトレールが融合した三分岐のポイントレールの画像を例示します。
RailPlot-x.x.x\image\rail\single_to_double_b\single_to_double_b_1.pngとRailPlot-x.x.x\image\rail\turn_out_r\turn_out_r_1.pngを画像編集ソフトで開き、レイヤー分けをして重ね、ターンアウトの方は上下反転して重ねることで、この画像のような形状としました。

今回、パーツIDは「test_point」とします。
ポイントレールはトングレールの方向による差分を作らないといけないので、「rail」フォルダ内に名前がパーツのIDなフォルダ(今回は「test_point」)を作成したあと、その中にトングレールの向きが異なる3つ画像として保存しました。
差分を作る場合、それぞれの画像の名前は「<パーツのID>_1.png」, 「<パーツのID>_2.png」,「<パーツのID>_3.png」, … というように、末尾の数字を1から順番に増やしてください。

3.4 裏面が異なるレール
ちなみに、駅プレートなど、裏面が表の面とは全く異なるパーツの場合、下の画像のように「<パーツのID>_inverted.png」というファイル名で裏面の画像を用意すると実装できます。
ただし、実際にRailPlot上で設置されるのは「<パーツのID>_inverted.png」の画像を左右反転させたものなので、辻褄を合わせるためにあらかじめ画像作成時に左右反転させて保存してください。
実際の裏面を左右反転した状態の画像になっていれば大丈夫です。

4.パーツの情報をcsvファイルで登録
さて、csvファイルでパーツの情報をいろいろ記入するため前に、まずは各列がどういうことを指定しているのかについて解説しないといけませんね。
RailPlot-x.x.x\register\railplot_default_parts.csvをExcelで開いてみましょう。何かしらのテキストエディタで開くのもOKです。


開くと、中はこのようになっています。RailPlotのデフォルトのパーツの情報がずらりと記載されています。
4.1 各列の概要
- A列:分類。「レール」「情景」「机」のいずれかを記入。
- B列:日本語名。RailPlotのアプリ上、各パーツのボタンの下にあるパーツ名はここを参照している。
- C列:パーツのID。画像を参照するときや、レイアウトを保存するときに使われる。画像を入れたフォルダ名と一致させる必要がある。
- D列:反転が可能かどうか。駅など、裏返し(画像を左右反転)を不可能にしたいパーツは、ここに「FALSE」と入力する。
- E列:凸ジョイントの位置や角度の情報。後で詳しく解説する。
- F列:凹ジョイントの位置や角度の情報。後で詳しく解説する。
- G列:他のパーツよりも必ず奥側に表示させたい場合、「TRUE」と入力する。
- H列:他のパーツよりも必ず手前に表示させたい場合、「TRUE」と入力する。トンネルや大きな鉄橋など。
- I列:パーツを選択したときに表示させる注意書き。半角コンマ「,」は使用禁止。バックスラッシュ「\」(環境によっては半角の「¥」に見える)を入力すると、その位置で改行して表示させることができる。。
- J列:橋脚など、同一パーツ同士でスポッと接続することを防ぎたい場合、「TRUE」と入力する。(橋脚の場合、これをTRUEにしないとパーツが完全に重なるという事態が発生しうる)
- K列:同一パーツでレールを伸ばす機能(Wキー)を無効化したい場合、「TRUE」と入力する。
- L列:画像のファイル名の末尾の数字と同じだけパーツ使用数も計上したい場合、「TRUE」と入力する。ブロック橋脚やミニ橋脚など。
と、このようになっています。
4.2 E列の凸ジョイント情報とF列の凹ジョイント情報
ジョイントの情報を登録しない場合(=マスを空白にする場合)を除き、必ず最初にバックスラッシュ「\」を入力してください。(環境によっては半角の「¥」のように見えます。)
最初のバックスラッシュ以降は、「<x座標>_<y座標>_<方向>」をジョイント1つの情報とし、複線レールやポイントレールなど、凸/凹が
複数ある場合は、それぞれのジョイントの情報を「&」でつなぐようにして記入します。
つまり、凸ジョイントが3つあるパーツの場合、E列には
「¥<1つ目のジョイントの情報>&<2つ目のジョイントの情報>&<3つ目のジョイントの情報>」
を入力する必要があるということです。
x座標とy座標に関しては、画像の左上を原点とし、右向きにx軸、下向きにy軸をとった座標系で考えてください。
方向は、ちょうど右を向く角度を0度とし反時計回りを正とする角度としてください。この画像のような方向です。

この画像の中央には三分岐ポイントレールが描かれていますが、つまりこの三分岐ポイントレールの場合、凸ジョイントの方向は0と45、凹ジョイントの方向は-45ということです。
45°刻みでなくとも大丈夫です。22.5°の曲線や30°の曲線なども作ることができるということです。
RailPlotの操作タブ内の高度な機能タブ内にて回転角度の分解能を変更することができるので、45°刻みでない自作パーツを使う場合はこの分解能を変更した上でRailPlotを使用しましょう。
方向の部分に関しては、実は数字以外のものが入ることもあります。
角度の部分に入れることができる文字の候補は
- 角度に相当する、-180<θ≦180を満たす実数θ
- 0度の方向と180度の方向のどちらからでも接続可能な「h」
- 90度の方向と-90度の方向のどちらからでも接続可能な「v」
- 45度の方向と-135度の方向のどちらからでも接続可能な「ne」
- 135度の方向と-45度の方向のどちらからでも接続可能な「nw」
- 同一パーツのみ接続可能な「same」
です。
h, v, ne, nwは、橋脚のジョイント部などに使用することが多いと思います。
4.3 直線のジョイント座標
直線の凸は「¥2160/191/0」、凹は「¥0/191/180」で登録されています。なぜこのような座標になるのでしょうか。
座標系は、画像の左上を原点として右向きにx軸、下向きにy軸があると考えてください。
直線の画像の上から、青色の中央線を引きました。

凸ジョイントの座標は右側のオレンジ色の丸の位置、凹ジョイントの座標は左側のオレンジ色の丸の位置になります。
レールの幅は382ピクセルですから、382÷2=191でy座標は凸も凹も191となります。
凸ジョイントの出っ張りのx軸方向の長さは110で、この画像全体の長さは2270ピクセルですから、
2270-110=2160
ということで、凸ジョイントのx座標は2160となります。
そもそも直線レールの長さは216mmで、画像は1mmを10ピクセルで表現しているのでこれは自明ですね。
凹ジョイントは画像の左端にあるので、凹ジョイントのx座標は0となります。
4.4 曲線のジョイント座標
曲線の凸は「¥1527.35065/136.35065/45」、凹は「¥0/769/180」で登録されています。なぜこのような座標になるのでしょうか。
この図を用いて説明します。オレンジ色の枠の部分が曲線レールの画像だと思ってください。なお、長さの単位はピクセルです。

曲線レールの半径は直線レールの長さと等しい、つまり216mmということは周知の事実かと思います。なので、OA=OA'=2160です。
点Aから直線OA'まで下した垂線の足を点Bとします。∠AOBは45°ですから、△AOBはOB=ABの直角二等辺三角形ということがわかります。
ということは、斜辺OAとその他の辺の比はOA:OB=OA:AB=√2:1であり、OA=2160なのでOB=AB=2160×(1/√2)≈1527.35065です。
つまり、曲線の凸ジョイントのx座標はABの長さ、1527.35065となります。
OA'=2160でOB=1527.35065ですから、
BA'=OA'-OB=2160-1527.35065=632.64935
となります。
では、レールの幅は382ピクセルなので曲線の中心を半分の位置、つまり端から191ピクセルのところとしましょう。
ということは、A'C=191となります。
曲線の凸ジョイントのy座標はO'Bの長さに相当し、O'B=O'C-BA'-A'Cです。
曲線レールの画像の高さO'Cは960なので、
O'B=O'C-BA'=960-632.64935-191=136.35065
となり、この136.35065が曲線レールの凸ジョイントのy座標になります。
凹ジョイントの方は単純ですね。画像の左端にくっついているのでx座標はゼロ、y座標はO'A'に相当するのでO'C-A'C=960-191=769となります。
4.5 実際に入力してみよう
1章で作成した「<アドオンのID>_register.csv」というcsvファイルを開きましょう。
csvファイルは何かしらのテキストエディタで開いてもいいですし、Excelで開いても大丈夫です。
Excelの各行のマス内の文字を「,」で繋げた文字列、というのがcsvファイルの本質なので、テキストエディタで開いた場合は横のマスの区切りが「,」で表現されます。
その性質上、マスの区切りの用途を除き、csvファイル内で半角コンマ「,」を絶対に使わないでください。
RailPlot-x.x.x\register\railplot_default_parts.csvも開き、一行目を「<アドオンのID>_register.csv」へコピーしておきましょう。一行目はRailPlotで読み込まれないので、railplot_default_parts.csvの一行目のように各列にわかりやすい名前をつけておくのに最適なのです。
そして、作成したパーツの情報を書き込みましょう。
example_rail_register.csvの中はこのように書き込みました。

red_straightとred_curveに関しては、デフォルトの直線や曲線と全く同じジョイント情報ですね。
机はジョイントの情報を書かなくて大丈夫です。ただ、机は見た目で判別がしにくいので、I列の注意書きに大きさを記載しておくとよいでしょう。
テストポイントに関しては少し複雑です。
まず凸ジョイント情報の2つ目は「2160/191/0」となっていますが、これはテストポイントの一番上側の分岐部です。レールの幅は392ですので、半分の191がy座標となりますね。
凸ジョイント情報の1つ目は「2160/791/0」となっていますが、これはテストポイントの中央の分岐部です。上の分岐部とは複線間隔になっていて、複線間隔は60mmなのでy座標は191+600=791となります。
凸ジョイント情報の3つ目は「1527.35065/1423.64935/-45」となっていますが、これはテストポイントの下側の分岐部です。曲線を上下反転したものがくっついているので、x座標は曲線と同じ1527.35065です。y座標は、中央の分岐部のy座標である791に、曲線のジョイントに関する画像内のBA'を足して791+632.64935=1423.64935となります。

5.zipファイル化して完成
これでアドオンの中身は完成したので、作ったアドオンをzipファイルにしましょう。
最初に作った、名前がアドオンのIDなフォルダを右クリックし、「圧縮先...」から「ZIP ファイル」を選択しzipファイルを作成します。

このままだとファイル名がわかりにくいので、zipファイルの名前をわかりやすいものに変えましょう。また、ファイル名には「-」をつけたあとアドオンのバージョンも書きましょう。
バージョンは「a.b.c」と数値3つで表します。「a」の部分は、RailPlot本体のバージョンの一番左側の数値と同じ値にしましょう。
つまり「RailPlot-1.2.3」なら「1」です。
RailPlotのバージョンの一番左側の数値ですが、アドオンの作り方が変わり、以前のアドオンが読み込めなくなるようなRailPlotの大規模アップデートがあったときにのみ数値が変わります。
出来上がったzipファイルをRailPlotのaddonフォルダに入れてRailPlotを起動してみましょう。

RailPlotの左側ボタン群にアドオンのパーツが追加されていますし、実際にレイアウトに配置してジョイントを繋げられることも確認できました。
作成したアドオンのzipファイルは、インターネット上に公開して他の人も使えるようにしておくと他の人が喜ぶでしょう。
Boothにアドオンを公開する場合、「RailPlot」のタグをつけることを推奨します。こうすることで利用者が見つけやすくなります。
公開せずに自分ひとりだけで使うのもOKです。
