StPakManパッケージの仕組み

1. パッケージの呼称

StPakManで読み込み出来るパッケージを、Simutransで使用するpakファイルと区別する為に、「PakManPak (ぱっくまんぱっく)」とか「ManPak(まんぱっく)」と 呼称します。

決まり事ではないので、実際には好きに呼んでもらって構いません。*1

2. PakManPakの本質

nullpakmanpak.png 設定ファイル(PakManPak.ini)です。

StPakManはPakManPak.iniを見つけると、そのディレクトリをPakManPakと認識します。 試しに、StPakManが読み込むディレクトリに中身が空のPakManPak.iniを作り、StPakManでリスト更新を行うと、パッケージ一覧に表示されます。

3. ディレクトリ構成

manpak_dir.png 設定ファイルだけでは何の意味もないので、StPakManは設定ファイルが見つかったディレクトリから、更に2つのディレクトリを探そうとします。

1つは「pak」もう1つは「text」です。

3-1. pakディレクトリ

pakファイルを配布する際の肝となるディレクトリです。

ここにpakファイルを配置します。このディレクトリの中身がSimutransのpakディレクトリにコピーされます。

ファイルのコピーには2種類あります。1つは「pakファイルだけ」、もう1つは「全部」です。*2

これは設定ファイルのRequireセクションにあるCopyTypeで判別しています。CopyTypeを省略した場合は、自動的に「pakファイルだけ」モードになります。

  • CopyType = PakOnly

    pakディレクトリ直下の*.pakファイルだけをSimutransのpakディレクトリにコピーします。*3

  • CopyType = ALL

    pakディレクトリ以下の全てのディレクトリとファイルをSimutransのpakディレクトリにコピーします。 pakファイルだけではなく、*.wavや*.tab等の各種ファイルをコピーさせる場合に使います。 例として、Simutrans公式のPakSetにはこれらのファイルが含まれているので、ALLを使用しています。 これを使用すれば、Simutransのサウンドを差し替えるパッケージ等も作れます。

  • CopyType = Remove (0.7で実装)

    これは少し特殊です。pakディレクトリ以下の全てのディレクトリ/ファイルと、 Simutransのpakディレクトリを比較し、ファイル名が一致するものをSimutransのpakディレクトリから削除します。*4 特定のpakファイルを消したいような場合に使用します。

3-2. textディレクトリ

翻訳ファイルを配置するディレクトリです。

ここに各種言語*5用の翻訳ファイルを配置します。具体的には、StPakManの使用言語の設定で指定した物を読み込みます。

日本語の場合は、StPakMan使用言語設定が「ja」なので、textディレクトリの下のja.tabファイルを読み込みます。この翻訳ファイルは、StPakManで適用/Applyボタンを押した際に、マージされます。単にマージするだけなので、翻訳ファイル(ja.tab等)はUTF-8で保存してください。

以上がStPakManパッケージの仕組みです。


  1. *1StPakManパッケージの設定ファイル(PakManPak.ini)にはPakManPakVer等の記述があります。これは「SimutransのPakじゃなくて、StPakManパッケージの方だな…」と区別する為です。
  2. *20.7から削除するための機能が追加されましたが、ここでは含めません。
  3. *3適切に設定されたPakManPakにはCopyType = PakOnlyは必要ありません。安全性と利便性の為に実装されています。
  4. *4ファイル名しか見ないため、同名の空ファイルを設定します。
  5. *5試していないけど、日本語以外もOKなんよ…