【Pak128Japan】環境よくするプロジェクト【Simutrans Advent Calendar 2022】

この記事は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といっても別世界のようです。

様々、思うことはありましたが……

第一に、ボタンが少ない!と感じました。

落としてきたばかりのpak128japan環境

普段使っている環境は以下のような状態ですから、それに比べるとかなりスッキリしています。

AhozuraNSの環境。もはや画面内に収まりきらない

アドオン入れてないとこんなにボタン少ないんですね~。というか、高架線路や高架道路が純正で用意されていないということは忘れていました。そういえばそうでしたね~。

実は線路や道路といったインフラストラクチャも大幅に拡充したのですが、今回は環境そのもののカスタマイズに重点を置いた記事ですので、この話は明日のあるみどり氏のアドカレに譲ります。

グリッド(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氏がドンピシャのアドオンを公開してくださっていたのを発見し、こちらを導入することになりました。

ベースタイル変更セット - Simutrans Addon Portal
pak128のベースタイルを変更するセットです。コンクリベースタイルの高架道路付きです。

ついでに、地表色の彩度が高く若干目に痛いので、五番星氏の制作された「日本伝統色地表セット」を導入。

第二事業部 -五番星都市計画公社-

結果、以下のようにすっきりした状態になりました。あとフェンスも消えました。

地面の色が目に優しくなり、断面がコンクリート風になった。あとフェンスも消えた

ついでに河川のグラフィックを日本伝統色地表セットの海に合わせました。

五番星氏の画像をベースに製作した河川

これで地形断面や地表のカスタマイズは完了です。

役所がショボい!ボクセルで作ろう

こちらがpak128japanの町役場です。

pak128japan純正の町役場

正直言ってショボくないですか?今時、村でももっと立派な役場が建っています。

ということで、町役場を刷新することにしました。

制作には、流行りの「Magica Voxel」を利用しました。これはブロックを積んでいく感覚で3Dモデルを作ることができるソフトで、いわばドット絵の3D版とでも言うべきものです。

Magica VoxelでSimutransのアドオンを制作する方法については2020年の曳矢急行氏のアドカレ記事に詳しいです。

超マジ!?爆マジ!?Magicaる☆Simutrans(副題:ボクセルアートのSimutransにおける活用と課題)
 ※この記事は、 Simutrans Advent Calendar 2020 への参加記事です。 はじめに こんにちは、洩矢急行です。 今年は高山諸島開発日誌の動画以外はあまりそれらしいシムトラ活動ができませんでした。 (動画も総じてみるとややA9に偏っていたり……) そんな...

今回は、私M_Kasumiと、AhozuraNSのボクセル担当・ちょーらぴっど氏で、役場を製作しました。

Simutransの役場は街あたり1個必ず出現します。ということは、マップ全域にたくさん出現しても違和感のないような、個性がなく主張しすぎない建物にする必要がありました。今回はコンクリート打ちっぱなしで飾り気のない、「いかにも日本の役所」という感じのデザインにしました。pak128japanですからね。

完成品は当サイトにて既に配布しています。

ツールが足りない!menuconfをいじろう

Simutransには多数の新機能が実装され続けています。しかし、これらの新機能の多くは、落としてきたばかりのpak128japanでは使用することができなくなっています。機能は存在するのに、その機能に対応するボタンがないのです。

これでは不便なので、ボタンを追加したいと思います。

Simutransでボタン類を司るのは、各pakフォルダ内に存在する「menuconf」というファイルです。

menuconfをいじって各種ツールに対応させつつ、ついでに「線路」「信号・架線」「駅」をそれぞれ別ボタンに分類していきました。

製作したメニューバー

あと、一部のツールは敢えて実装していません。たとえば、citycar設置ツールなど(普段citycarの湧かない環境でしかプレイしないため)。

かなり自分の環境にのみ特化したものとなりますが、参考までに、製作したメニューバーの一式は以下からダウンロード可能です。

作る必要のあるボタンは自分で作りましたが、一部純正のボタンを流用しています。本当は全部自作したいんですが……長い間手を付けられていません。

Releases · kasu-me/Simutrans-Menubar
ぼくのかんがえたさいきょうのメニューバー. Contribute to kasu-me/Simutrans-Menubar development by creating an account on GitHub.

これはあくまでも「ぼくのかんがえたさいきょうのメニューバー」です。メニューバーは他にもいくつか公開されていますので、ご自身に合ったものを探すのも手だと思います。

というか、menuconfって書きづらいですよね……。これをもっとGUI的に作り易くするようなものも作りたいと思っているのですが、手を付けられておらず……。

その他

以下、アドカレの枠が減ってボツになった記事を無理矢理一緒にまとめたものです。まあ、私のメイン環境はpak128japanですし、以下も究極的にはpak128japan環境をよくするためにやっているので、記事の内容にとてもよく合っていますね!(強引)

アドオン製作の効率化を試行錯誤してみる

突然ですが、こちらの拙作アドオンをご覧ください。

グレー箱積み駅舎 - Simutrans Addon Portal
グレーの箱積み駅舎です。

7色×高さ2種類=14種類の箱積み駅舎アドオンです。

しかし、14種類あるといっても、元となる白い箱が高低2種類あり、それぞれ7色の違う色を塗っただけです。となると、元となる白い箱の画像に何か修正が加わった際に、14回の作り直しが発生することになります。これを手作業で行っていたのではとても面倒ですし、何より作業ミスの発生する元になります。

同様の事象は車両のアドオンでも発生します。

東武50000系・60000系セット - Simutrans Addon Portal
東武鉄道の50000・50050・50070・50090系・60000系です。

東武50000系列は、「顔の形状」「屋根上通風孔の有無」などの細かい差異があります。とはいっても大本となる車体は同一ですから、やはり差分だけ直せばいいようにしたいですよね。

そこで、「ベース画像」と「差分だけのバラバラの画像」だけを用意したうえで、「それらの合成方法を指定するためのファイル」の記述に基づいて画像出力を自動化する方法を考えてみました。……が、もう少しスマートなやり方があるような気がしてならず……。

以下、あくまでも私が現在試行錯誤中の内容です。もっとよいやり方がいくらでもあると思いますので、あくまでも参考程度にご紹介します。

まずは、合成元となる白い箱積み駅舎の画像がこちら。(くるり氏の作品です。くるり氏が全ての権利を主張しない旨の意思表示をされているため、無加工で掲載させていただきます。)

base.png

この画像を、以下「ベース画像」と呼称します。これに7種類のグレーを塗っていきたいと思います。

ということで、7種類のグレーの画像を用意。画像サイズは上記のベース画像と同じにしています。

画像ファイルの命名は、黒を000、白を255としている。

これで7種類のグレーを用意できました。これらの画像は、ベース画像と同じディレクトリに保存しています。

このままだとベース画像全体に色が塗られてしまいますから、「マスク画像」を用意します。

マスク画像

ベース画像に色を塗りたい部分だけを透明にして、他の部分を全部白くしています。この画像は「mask」ディレクトリに「mask.png」という名前で配置しました。

なんとこれだけで画像の準備は完了です!

次に、これらの画像をどのように合成していくかを記述します。テキスト記述に基づいた画像の合成のため、以下のようなツールを試作してみました。

GitHub - kasu-me/Simutrans-Easy-Add-on: Simutransのアドオン製作を少しでも簡単にするツール2種類です
Simutransのアドオン製作を少しでも簡単にするツール2種類です. Contribute to kasu-me/Simutrans-Easy-Add-on development by creating an account on GitHub.

このツールに食わせるテキストとして、今回記述した内容は以下の通り。

+[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用のキー割り当てセット(プリセット)を作ってみました。

GitHub - kasu-me/Tourbox-Simutrans: 左手デバイス「Tourbox」のSimutrans用プリセットです
左手デバイス「Tourbox」のSimutrans用プリセットです. Contribute to kasu-me/Tourbox-Simutrans development by creating an account on GitHub.

キーボードショートカットは上記で紹介した自作menuconfに最適化していますので、環境によってはちゃんと動かないことがあります。

本稿で製作・紹介したアドオン

本記事で紹介したアドオンは以下からダウンロードできます。

おわりに

いかがでしたか?ちょっと急いで書いたんで何が言いたいんだかわからん記事になっちまいましたが、何らかの何らかになれば幸いです。

pak128japanには高品質なアドオンがたくさんありますので、環境もどんどんアップデートして、長く遊んでいきたいですね!

なお、AhozuraNSではさらにインフラストラクチャーにも大幅に手を加えました。詳細は、明日のアドベントカレンダーで紹介していただきます。お楽しみに。

コメント

  1. […] 前日の記事でM_Kasumiが触れているとおり、あの時代遅れのAhozuraNSがとうとう緩急坂に移行したのですが、その時に何を狂ったのかインフラを全部作り直してしまったのでその時に思った […]

タイトルとURLをコピーしました