makeobj は、Simutrans のグラフィックアセットとゲームオブジェクトを定義した .dat ファイルを、ゲームで読み込める .pak ファイルに変換するコマンドラインツールです。Pakset 制作者や MOD 開発者が使用します。
makeobj は、以下のような用途で使用されます:
.dat ファイルと .png 画像から .pak ファイルを生成Simutrans のビルドシステムの一部として自動的にビルドされます:
# CMake を使用する場合
cmake -B build
cmake --build build --target makeobj
# Make を使用する場合
make makeobj
ビルド成功後、実行ファイルは以下の場所に配置されます:
build/makeobjbuild/makeobj.exemakeobj [QUIET|VERBOSE|DEBUG] <コマンド> <パラメータ>
| オプション | 説明 |
|---|---|
QUIET |
エラーのみ表示(著作権メッセージも非表示) |
VERBOSE |
メッセージとエラーを表示(未使用行、未割当エントリ) |
DEBUG |
詳細なデバッグ情報を出力 |
CAPABILITIES説明: makeobj がサポートするオブジェクトタイプの一覧を表示します。
使用例:
makeobj CAPABILITIES
出力例:
Makeobj version ... for Simutrans ...
Supported object types:
- vehicle (車両)
- building (建物)
- way (道路・線路)
- bridge (橋)
- tunnel (トンネル)
- tree (木)
- good (商品)
- factory (工場)
...
PAK - Pak ファイル作成説明: .dat ファイルから .pak ファイルを作成します(最も一般的な使用方法)。
構文:
makeobj PAK <出力先> <入力ファイル/ディレクトリ>
使用例:
# 単一の dat ファイルから pak を作成
makeobj PAK myvehicle.pak vehicles/bus.dat
# ディレクトリ内のすべての dat ファイルから pak を作成
makeobj PAK output/vehicles.pak vehicles/
# 複数のファイルを指定
makeobj PAK buildings.pak building1.dat building2.dat building3.dat
# デフォルト(カレントディレクトリ)
makeobj PAK
注意事項:
.png)は .dat ファイルで参照されるため、適切なパスに配置する必要があります/ または \)、ディレクトリ内に個別の pak ファイルが作成されますPAK128 / PAK64 / PAK256 等 - カスタムタイルサイズ説明: 特定のタイルサイズ用の pak ファイルを作成します。
構文:
makeobj PAK<サイズ> <出力先> <入力ファイル>
使用例:
# 128x128 タイルサイズ用
makeobj PAK128 output.pak vehicles/
# 64x64 タイルサイズ用
makeobj PAK64 output.pak buildings/
# 16 から 32767 までのサイズをサポート(ただし 255 までがテスト済み)
makeobj PAK192 output.pak pak192.comic/
LIST - Pak ファイル内容の一覧表示説明: Pak ファイルに含まれるオブジェクトの一覧を表示します。
構文:
makeobj LIST <pak ファイル> [<pak ファイル2> ...]
使用例:
# 単一ファイルの内容を表示
makeobj LIST vehicles.pak
# 複数ファイルを一度に表示
makeobj LIST vehicles.pak buildings.pak
出力例:
vehicles.pak:
- vehicle: bus_mercedes_o305
- vehicle: train_ice3
- vehicle: airplane_boeing747
...
DUMP - Pak ファイル内部構造の表示説明: Pak ファイルの内部ノード構造を詳細に表示します(デバッグ用)。
構文:
makeobj DUMP <出力先> <pak ファイル> [<pak ファイル2> ...]
使用例:
makeobj DUMP debug_output.txt vehicles.pak
出力内容:
MERGE - Pak ファイルの結合説明: 複数の pak ファイルを 1 つの pak ライブラリにマージします。
構文:
makeobj MERGE <出力 pak ファイル> <入力 pak ファイル1> [<pak ファイル2> ...]
使用例:
# 複数の pak ファイルを 1 つに結合
makeobj MERGE combined.pak vehicles.pak buildings.pak bridges.pak
# ディレクトリ内のすべての pak をマージ
makeobj MERGE all.pak pakfiles/
用途:
EXTRACT - Pak ファイルの分解説明: Pak アーカイブから個別の pak ファイルを抽出します。
構文:
makeobj EXTRACT <pak アーカイブ>
使用例:
makeobj EXTRACT combined.pak
動作:
.pak ファイルとして抽出EXPAND - Dat ファイルの展開説明: 最小化記法で書かれた .dat ファイルを完全記法に展開します。
構文:
makeobj EXPAND <出力先> <dat ファイル> [<dat ファイル2> ...]
使用例:
makeobj EXPAND expanded/ vehicles/*.dat
用途:
.dat ファイルは、Simutrans のオブジェクトを定義するテキストファイルです。
Obj=vehicle
Name=bus_example
copyright=YourName
waytype=road
engine_type=diesel
speed=80
power=150
capacity=50
weight=12
cost=50000
runningcost=80
intro_year=1990
intro_month=1
retire_year=2020
retire_month=12
# 画像の指定
EmptyImage[S]=buses.0.0
EmptyImage[E]=buses.0.1
EmptyImage[N]=buses.0.2
EmptyImage[W]=buses.0.3
| オブジェクトタイプ | 説明 | 主要パラメータ |
|---|---|---|
vehicle |
車両(陸海空) | speed, power, capacity, waytype |
building |
建物 | type, level, dims, passengers |
way |
道路・線路 | waytype, speed, cost, maintenance |
bridge |
橋 | waytype, max_length, max_weight |
tunnel |
トンネル | waytype, cost, maintenance |
good |
商品 | value, weight, color |
factory |
工場 | productivity, range, inputs, outputs |
tree |
木 | distribution_weight, climate |
citycar |
市民の自動車 | speed, weight |
pedestrian |
歩行者 | distribution_weight |
roadsign |
道路標識 | waytype, cost, single_way, free_route |
citybuilding |
都市の建物 | level, passengers, mail |
attraction |
観光地 | level, passengers, maintenance |
groundobj |
地面オブジェクト | climates, distribution_weight |
smoke |
煙エフェクト | smoke_time |
field |
農地 | production, capacity |
crossing |
踏切 | waytype, cost |
groundobj |
装飾オブジェクト | distribution_weight |
#FF00FF (マゼンタ): 透明色として扱われる(レガシー)# 方向別の画像
EmptyImage[S]=filename.0.0
EmptyImage[E]=filename.0.1
EmptyImage[N]=filename.0.2
EmptyImage[W]=filename.0.3
# 画像のオフセット
EmptyImage[S]=filename.0.0,xoff,yoff
# 複数フレーム(アニメーション)
Image[0][0]=filename.0.0
Image[0][1]=filename.0.1
Image[0][2]=filename.0.2
画像ファイルは以下の場所から検索されます:
.dat ファイルと同じディレクトリCould not open file: <filename>.png原因: 画像ファイルが見つからない
対処法:
.dat ファイル内のパス指定を確認WARNING: Duplicate object原因: 同じ名前のオブジェクトが複数定義されている
対処法:
Name= パラメータが一意であることを確認Unknown parameter: <param>原因: サポートされていないパラメータが使用されている
対処法:
makeobj CAPABILITIES でサポート内容を確認Error reading image原因: 画像ファイルが破損しているか、未対応のフォーマット
対処法:
DEBUG オプションを使用すると、詳細な処理情報が出力されます:
makeobj DEBUG PAK output.pak input/
出力される情報:
Source: obj=vehicle
Source: Name=bus_example
Image: buses.png
X: 0
Y: 0
Off X: -20
Off Y: -30
Width: 64
Height: 32
...
活用例:
.dat ファイルが読み込まれたか追跡@echo off
for %%f in (vehicles\*.dat) do (
makeobj PAK pak\vehicles\ vehicles\%%f
)
#!/bin/bash
for datfile in vehicles/*.dat; do
basename=$(basename "$datfile" .dat)
makeobj PAK "pak/vehicles/$basename.pak" "$datfile"
done
SOURCES := $(wildcard *.dat)
TARGETS := $(SOURCES:.dat=.pak)
all: $(TARGETS)
%.pak: %.dat
makeobj PAK $@ $<
clean:
rm -f *.pak
画像の準備
Dat ファイルの作成
Pak ファイルの生成
makeobj PAK output.pak myobject.dat
テスト
デバッグ
LIST コマンドで pak の内容を検証my-pakset/
├── vehicles/
│ ├── buses.dat
│ ├── buses.png
│ ├── trains.dat
│ └── trains.png
├── buildings/
│ ├── residential.dat
│ ├── residential.png
│ ├── commercial.dat
│ └── commercial.png
├── output/
│ ├── vehicles.pak
│ └── buildings.pak
└── Makefile
src/makeobj/src/makeobj/CMakeLists.txt, src/makeobj/Makefile# ビルドディレクトリを確認
ls build/makeobj*
# PATH に追加
export PATH=$PATH:/path/to/simutrans/build
大量のオブジェクトを一度に処理する場合、メモリ不足になることがあります。
対処法:
MERGE コマンドで結合原因: Dat ファイルのエンコーディングが UTF-8 でない
対処法:
makeobj は Simutrans の Pakset 制作に不可欠なツールです。基本的な使い方から高度なバッチ処理まで、この文書で解説した内容を活用して、効率的に Pakset を開発できます。
疑問点や問題がある場合は、公式フォーラムやコミュニティで質問してください。