この記事はSimutrans Advent Calendar 2022 12/17の記事です。
唐突ですが、私はpak128japanという規格にそれなりに思い入れがあります。(私の制作したアドオンの大半がpak128japan向けのものであることからもお分かりかもしれませんが)
私がpak128japanに初めて触れたのは10年ほど前、某NetSimutransに誘われて参加した際のことでした。pak128japan規格の大きな鉄道車両は、とてもかっこよく魅力的だったのを覚えています。
ただ、現在pak128japan公式によるメンテナンスは長らく途絶えており、Simutrans公式によるpakセットリストからも除外されてしまったようです。残念な限りです。まあ、公式から落としてきたばかりのpak128japan環境があまりにも物足りなかったり、Simutrans本体側の進化に追いつけていなかったりすることもまた事実なのですが……
さて、私の運営するNet Simutrans「AhozuraNS」が、このたびようやく非緩急坂環境から緩急坂環境に移行することになりました。ということで、移行作業のついでに、上述の問題点を改善すべくpak128japan環境の魔改造を実施しました。pak128japanのコンセプトを受け継ぎつつ、より楽しく遊べる環境を目指しましたので、今回はその試行錯誤の概要をお伝えします。
少しでも多くの方にpak128japanをご利用いただくとともに、皆様のpak128japanライフの改善に少しでも役立てばと思います。
準備
環境を魔改造するにあたって、まずはpak128japanフォルダ以下を丸ごとgit管理することにしました。gitとは、ファイルの変更履歴を記録することができる仕組みのことです。一般にこのような仕組みのことを「バージョン管理」といいます。このようにしておくことで、仮に変な変更をしてしまって環境が壊れてしまったとしても、簡単に前の環境に戻すことができるのです。今回は大規模に手を加えますから、動かなくなったらすぐに戻せるようにしておけば安心です。
これがインストールしたばかりのpak128japanだ!
緩急坂環境への移行の前準備として、まずは一旦、こちらからまっさらなpak128japan (120.0alpha)をダウンロードしてきました。最新版すら7年前なんですが……。
普段遊んでいる環境は、何年もかけて急坂環境にアドオンを追加しまくった環境ですから、純正そのままかつ緩急坂対応の環境は、いくら同じpak128japanといっても別世界のようです。
様々、思うことはありましたが……
第一に、ボタンが少ない!と感じました。
普段使っている環境は以下のような状態ですから、それに比べるとかなりスッキリしています。
アドオン入れてないとこんなにボタン少ないんですね~。というか、高架線路や高架道路が純正で用意されていないということは忘れていました。そういえばそうでしたね~。
実は線路や道路といったインフラストラクチャも大幅に拡充したのですが、今回は環境そのもののカスタマイズに重点を置いた記事ですので、この話は明日のあるみどり氏のアドカレに譲ります。
グリッド(borders)を見やすくする
Simutransでは、Shift+3(#)のショートカットでグリッドを表示することができます。
しかし、純正のグリッドは点線で見にくいです。さらに色が黒系なので、地下では見えなくなってしまいます。
pak128japanの公式ソースから色だけ変えて直そうと思ったのですが、このグリッド(borders)のソースが配布されていませんでした。さらに、bordersの作り方についての日本語の解説書きもなかったため、外国語の説明をDeepLで翻訳しながら自作することに。
これが思いの外手間のかかる作業でした。
というのも、4方向の斜面と4方向の角それぞれの緩坂と急坂、合計16種類を作って終わりだと思っていたのですが、実際にはそれぞれの方向について、「左側が平面・右側が平面」「左側が平面・右側が緩坂」「左側が緩坂・右側が平面」「左側が平面・右側が急坂」「左側が急坂・右側が平面」「左側が緩坂・右側が緩坂」「左側が緩坂・右側が急坂」「左側が急坂・右側が緩坂」「左側が急坂・右側が急坂」といった多種多様なグリッドを製作する必要があったのです。順列組み合わせ問題だこれ。
結果、完成した画像とdatがこちら。(記事掲載用に色を派手にしてあります。実際には白色で作りました)
Obj=ground
Name=Borders
Image[0][0]=borders.0.0
Image[1][0]=borders.0.1
Image[2][0]=borders.0.2
Image[3][0]=borders.0.3
Image[4][0]=borders.0.4
Image[5][0]=borders.0.5
Image[6][0]=borders.0.6
Image[7][0]=borders.0.7
Image[8][0]=borders.0.8
Image[9][0]=borders.1.0
Image[10][0]=borders.1.1
Image[11][0]=borders.1.2
Image[12][0]=borders.1.3
Image[13][0]=borders.1.4
Image[14][0]=borders.1.5
Image[15][0]=borders.1.6
Image[16][0]=borders.1.7
Image[17][0]=borders.1.8
Image[18][0]=borders.2.0
Image[19][0]=borders.2.1
Image[20][0]=borders.2.2
Image[21][0]=borders.2.3
Image[22][0]=borders.2.4
Image[23][0]=borders.2.5
Image[24][0]=borders.2.6
Image[25][0]=borders.2.7
Image[26][0]=borders.2.8
これをmakeobjに通し、無事、見やすいグリッドを作ることができました。
地形断面と地表と河川をカスタムする
地形断面について、純正では地層が露出した状態となっています。あとなんかフェンスが生えています。
しかし、「こういう地形は人工的なものの方が多いのだから、地層がむき出しなのはいかがなものか?」という話になりました。
また、フェンスについても、高架道路や線路を接続した場合に邪魔になる場合があります。
……ということで、これらのグラフィックを修正することに。
自分でコンクリート風の断面アドオンを製作して対応しようと思っていたのですが、なんと128na氏がドンピシャのアドオンを公開してくださっていたのを発見し、こちらを導入することになりました。
ついでに、地表色の彩度が高く若干目に痛いので、五番星氏の制作された「日本伝統色地表セット」を導入。
結果、以下のようにすっきりした状態になりました。あとフェンスも消えました。
ついでに河川のグラフィックを日本伝統色地表セットの海に合わせました。
役所がショボい!ボクセルで作ろう
こちらがpak128japanの町役場です。
正直言ってショボくないですか?今時、村でももっと立派な役場が建っています。
ということで、町役場を刷新することにしました。
制作には、流行りの「Magica Voxel」を利用しました。これはブロックを積んでいく感覚で3Dモデルを作ることができるソフトで、いわばドット絵の3D版とでも言うべきものです。
Magica VoxelでSimutransのアドオンを制作する方法については2020年の曳矢急行氏のアドカレ記事に詳しいです。
今回は、私M_Kasumiと、AhozuraNSのボクセル担当・ちょーらぴっど氏で、役場を製作しました。
Simutransの役場は街あたり1個必ず出現します。ということは、マップ全域にたくさん出現しても違和感のないような、個性がなく主張しすぎない建物にする必要がありました。今回はコンクリート打ちっぱなしで飾り気のない、「いかにも日本の役所」という感じのデザインにしました。pak128japanですからね。
完成品は当サイトにて既に配布しています。
ツールが足りない!menuconfをいじろう
Simutransには多数の新機能が実装され続けています。しかし、これらの新機能の多くは、落としてきたばかりのpak128japanでは使用することができなくなっています。機能は存在するのに、その機能に対応するボタンがないのです。
これでは不便なので、ボタンを追加したいと思います。
Simutransでボタン類を司るのは、各pakフォルダ内に存在する「menuconf」というファイルです。
menuconfをいじって各種ツールに対応させつつ、ついでに「線路」「信号・架線」「駅」をそれぞれ別ボタンに分類していきました。
あと、一部のツールは敢えて実装していません。たとえば、citycar設置ツールなど(普段citycarの湧かない環境でしかプレイしないため)。
かなり自分の環境にのみ特化したものとなりますが、参考までに、製作したメニューバーの一式は以下からダウンロード可能です。
作る必要のあるボタンは自分で作りましたが、一部純正のボタンを流用しています。本当は全部自作したいんですが……長い間手を付けられていません。
これはあくまでも「ぼくのかんがえたさいきょうのメニューバー」です。メニューバーは他にもいくつか公開されていますので、ご自身に合ったものを探すのも手だと思います。
というか、menuconfって書きづらいですよね……。これをもっとGUI的に作り易くするようなものも作りたいと思っているのですが、手を付けられておらず……。
その他
アドオン製作の効率化を試行錯誤してみる
突然ですが、こちらの拙作アドオンをご覧ください。
7色×高さ2種類=14種類の箱積み駅舎アドオンです。
しかし、14種類あるといっても、元となる白い箱が高低2種類あり、それぞれ7色の違う色を塗っただけです。となると、元となる白い箱の画像に何か修正が加わった際に、14回の作り直しが発生することになります。これを手作業で行っていたのではとても面倒ですし、何より作業ミスの発生する元になります。
同様の事象は車両のアドオンでも発生します。
東武50000系列は、「顔の形状」「屋根上通風孔の有無」などの細かい差異があります。とはいっても大本となる車体は同一ですから、やはり差分だけ直せばいいようにしたいですよね。
そこで、「ベース画像」と「差分だけのバラバラの画像」だけを用意したうえで、「それらの合成方法を指定するためのファイル」の記述に基づいて画像出力を自動化する方法を考えてみました。……が、もう少しスマートなやり方があるような気がしてならず……。
以下、あくまでも私が現在試行錯誤中の内容です。もっとよいやり方がいくらでもあると思いますので、あくまでも参考程度にご紹介します。
まずは、合成元となる白い箱積み駅舎の画像がこちら。(くるり氏の作品です。くるり氏が全ての権利を主張しない旨の意思表示をされているため、無加工で掲載させていただきます。)
この画像を、以下「ベース画像」と呼称します。これに7種類のグレーを塗っていきたいと思います。
ということで、7種類のグレーの画像を用意。画像サイズは上記のベース画像と同じにしています。
これで7種類のグレーを用意できました。これらの画像は、ベース画像と同じディレクトリに保存しています。
このままだとベース画像全体に色が塗られてしまいますから、「マスク画像」を用意します。
ベース画像に色を塗りたい部分だけを透明にして、他の部分を全部白くしています。この画像は「mask」ディレクトリに「mask.png」という名前で配置しました。
なんとこれだけで画像の準備は完了です!
次に、これらの画像をどのように合成していくかを記述します。テキスト記述に基づいた画像の合成のため、以下のようなツールを試作してみました。
このツールに食わせるテキストとして、今回記述した内容は以下の通り。
+[032,mask/mask]=>tmp/base032
*[tmp/base032,base]=>Bldg_hako_032
これは1色分ですが、あと6色の記述は同様なので省略。この言語は自分で作ったものなので、大変カスみたいな記述方法ですし、他のどこでも通用しませんが……。
このデータをテキストファイルとしてベース画像と同じディレクトリに保存して、先ほど紹介した自作ツールに読み込ませると、上から順番に画像合成が処理されます。
この記述の場合は、以下のような合成が実行されます。ぐっちゃぐちゃの図で分かりづらいですが気合で理解してください。
これで、base.pngを修正したらこのプログラムを走らせるだけで全画像の修正ができるようになりました!
実はM_Kasumi製のいくつかのアドオンでこの手法を実際に採用しています。メリットとしては、先述の通り修正が生じた際に1回の修正で済むこと、デメリットとしては画像同士の依存関係がわかりにくくなってしまうこと等があります。
ただ、やっぱりこういうツールとして公開するからにはGUIが必須なのかなあ、とも思います。でも、GUIのプログラミングってめんどくさいんですよね。この辺も含めてもう少し全体的に検討が必要な手法ではあります。
来年のアドカレぐらいまでにはちゃんとしたツールとしてご紹介したいところですが……
TourBox
「TourBox」をご存知ですか?簡単に言うと、マウスでもキーボードでもない、まったく新しい形のPC用入力デバイスです。決して安価なものではないですし、あまり持っている人はいないと思いますが、私は趣味で絵を描くことがあるため購入しました。
特徴的な形をした各種ボタンやダイヤルに、それぞれ好きな操作を割り当てることができます。
これが使ってみると思いの外便利なんですよね。絵を描くのにはもちろん、アドオン製作なんかもこれを使いながら行っています。
これ、Simutransにも使えたら便利じゃね!?と思い、Simutrans用のキー割り当てセット(プリセット)を作ってみました。
キーボードショートカットは上記で紹介した自作menuconfに最適化していますので、環境によってはちゃんと動かないことがあります。
本稿で製作・紹介したアドオン
本記事で紹介したアドオンは以下からダウンロードできます。
- ベースタイル変更セット by 128na氏
- 日本伝統色地表セット by 五番星氏
- 日本風市役所 by M_Kasumi
- 埼玉県H市風役所セット by ちょーらぴっど氏
- ぼくのかんがえたさいきょうのメニューバー by M_Kasumi
- Tourbox-Simutrans by M_Kasumi
- グリッドと河川 by M_Kasumi
おわりに
いかがでしたか?ちょっと急いで書いたんで何が言いたいんだかわからん記事になっちまいましたが、何らかの何らかになれば幸いです。
pak128japanには高品質なアドオンがたくさんありますので、環境もどんどんアップデートして、長く遊んでいきたいですね!
なお、AhozuraNSではさらにインフラストラクチャーにも大幅に手を加えました。詳細は、明日のアドベントカレンダーで紹介していただきます。お楽しみに。
コメント
[…] 前日の記事でM_Kasumiが触れているとおり、あの時代遅れのAhozuraNSがとうとう緩急坂に移行したのですが、その時に何を狂ったのかインフラを全部作り直してしまったのでその時に思った […]