その3 pakファイルの生成

出力した画像を仕上げつつ、datファイル(設定ファイル)を用意し、ゲーム上で使えるpakファイルに仕上げます。

画像の編集

使用ツール

  • 画像編集ソフト                                                                                                                                       
    レイヤー、アルファチャンネルに対応したものであればよいです。MSペイントはだめです。
    私は20年近く前のPaint Shop Pro 7というソフト(古いですが必要十分で使い慣れてるので…)を使っていますが、GIMPとか、Pictbearとか、有名フリーソフトでも同様のことができると思います。
  • 画像連結
    名前の通りのツールです。楽に出力画像を一まとめにできるので使っています。上記の画像編集ソフトで簡単に処理できる場合はいりません。
  • Shades
    Simutransのアドオン製作者なら誰もが知っているであろう超有名ツールです。画像の特殊色を除去したりプレビューできたりします。残念ながら近年使えるようになった透過pngには対応していません。

画像の連結

先ほど出力した各面の画像を種類ごとに連結し、png形式で出力します。私は先に紹介した「画像連結」というソフトを使っています。                                           

別にそのまま各面ごとに画像ファイルを分けてもpak化はできるのですが、ファイル管理や今後の画像処理が面倒くさくなります。

また、画像を倍サイズで出力した場合は、このあたりでゲーム上の実サイズに縮小をかけておきましょう。

上記の画像はベース画像を全方向分(8面)連結したものです。画像の並べ方がメジャーな並び(Example.png由来?)と異なるのは出力時の作業しやすさからわざとです。dat側でちゃんと指定すれば問題はありません。

画像の補正

Pak128.Japanの世界は、各面の陰影の差が少なめの感じです。今のままの画像だと、まだ影の部分がちょこっと暗めな感じがするので、画像編集ソフトで色の補正をかけます。アルファチャンネル用画像はとくに補正する必要はありません。

この補正具合は個人の好みによると思います。他のPaksetの場合はそのままでもいいのかもしれません。

特殊色を取り除く

Simutransに使われる画像は特殊色(Special Color)と呼ばれる特別な色があり、この色に着色された部分は夜間発光したり(発光色)、プレイヤーカラーによって変化したりします。

出力した画像はたいてい意図しない形でこの特殊色が混じってしまうので、あらかじめShadesを使い、これを取り除きます。

これを忘れると、暗闇でいろんなところがピカピカ光る船が誕生してしまいます。

発光色の打ち込み

意図しない特殊色を取り除いたら、夜間光らせるべき部分を発光色で塗っていきます。

発光色の参考画像をレイヤーで重ねて参考にしつつ、ベース画像に新規レイヤーで発光色(航海灯、客室窓まわり)の書き込みをして行きます。

各種航海灯はそれぞれ見える範囲が決まっているので、360度どこでも光らせないよう注意が必要です。また、夜間や視界の悪い際に点灯するものなので、基本的に夜間にのみ発光するようにしています。

窓部分をベース画像であえてまっさらにしているのは、このスケールだと手で発光色含む窓周りを描き足していった方がキレイに仕上がるからです。窓も一緒に出力すると、窓の発光色を書き込むとガタガタになりがちです。

また、発光色との兼ね合いを考えると、窓の数の厳密に再現するのはなかなかむつかしいです。状況に応じてごまかしています。このスケールで厳密に窓割を再現するのは不可能ですし、無理に再現して仕上がりが汚くなるより、綺麗に見えるほうが良いと思うタイプなので…。

…といろいろ書いたものの、普段のプレーでは「夜間は暗くする」のチェックは外しています(苦笑)。

左がベース画像と参考画像、右が完成画像です。

現状この作業が画像編集まわりで一番しんどいので、根気よくいきましょう。発光部分を範囲で指定できるようになったり、色自体にもっとバリエーションがあれば楽なんですけどねえ。

透過の設定

あとは編集した画像に、アルファチャンネルを追加して透過設定をします。このあと画像の上下位置を調整する必要がありますが、それはいったん仮にpakに起こしてから調整します。

注意したいところは、発光色のレイヤーが透過済み画像の上に表示されるよう調整することです。マスト灯の部分が透過設定されると、透過の効果でぼやけたり、見えなくなってしまうことがあります。

これで基本の画像は出来上がりです。

Simutransのアドオン画像におけるベーシックな透過設定は、水色の透過色(一色のみ)を設定する方法です。しかし、アンチエイリアスの利いた3Dモデルから起こした画像との相性は最悪でした。アルファチャンネルを使わない場合従来型の透過指定となりますが、苦行です。ドット絵ベースであればピッタリなのですが…。

datの編集

アドオンの各種パラメータを設定するdatファイルを作成します。基本的なことは日本語化Wikiとか公式Wikiに詳しく書いてあるのでそっちを読みましょう。

事前に調べた通りの値を入力していく形ですが、いくつかどの数字を入力すればよいのだろう?という所があります。「これが正解」というわけではないのですが、私は下記のような感じで設定しています。

速力(speed)

船舶のデータを見ると、速力はたいてい最大速力と航海速力のどちらかの値、あるいは両方の値が掲載されていると思います。

このゲームには天候による遅れ等は存在せず、いつでもベストな状態で航行できるので、私は航海速力の値をゲームの値として使っています。

重量(weight)

ここが鬼門です。

船の大きさは一般的に総トン数(GT)であらわされますが、これは容積なのでこのパラメータの値としては適切ではありません。使うべきものは重量ベースの排水トン(排水量・DT)なのですが、基本的に商船では使用されません。 よく示される載貨重量トン(DWT)は重量の値ですが、貨物の最大積載量を示すもので、船そのものの重量ではありません。

もし幸運にも排水トンの情報が得られれば、その値を使います。

データがないようであれば、画像の出力に使った3Dモデルを使って水面下の体積を出し、概算の重量を導きます。私は「Hira Stl Viewer」に水面下だけにした3Dモデルを読み込ませ、体積計算しています。 

ギア比(gear)

ゲームにおける乗り物の実際の出力は、出力(power)とギア比(gear)の値で決まります。

私の場合は標準の1.00から特に触らず、出力不足で最高速度までの加速が困難な場合のみ、1より大きい値を設定しています。

鉄道車両の場合は、Pak128.Japanのソースについている計算用シートを参考に、車両の起動加速度やら加速度曲線等を考慮した値を設定するところですが、船舶の加速力については判断する情報が乏しいです…。

長さ(length)

鉄道車両等の場合は、この設定値によってその1両が使用するホームの長さや、他車両との連結間隔が決まってゆきますが、船舶の場合あまり関係ないです。タグボートやバージでもない限り、適当な値を設定しておけばよいでしょう。

ちゃんとした値を設定したい場合は、Pak128.Japanのソースについている計算用シートを参考にしましょう。

経費関係(cost,RunningCost)

これもPak128.Japanには公式コスト計算シートがあるので、それを使いましょう。

ただ、公式コストシートそのままだと船舶には鉄道車両等のような「係数」の項目が無いので、各船舶の個性を出すべく、この欄を追加して係数をかけられるように改造しています。係数の設定については私は勝手に基準を定めて設定しています。

makeobjによるpak化

作った画像(png)とパラメータのファイル(dat)は、makeobjというツールを使ってSimutransで使えるpakファイルにします。makeobj本体はSourceForgeから、詳しい使い方はやはり日本語化wikiあたりを参考にしてください。

使用するmakeobjのバージョンには気を付けましょう。最新のものを使うのがベストなように思いますが、最新版でpakしたアドオンは、古いバージョンのSimutransで使えなくなります。ただ、古いバージョンを使ったら使ったで、最新の機能が使えなくなるので、そこら辺を考慮してバージョンを選びましょう。

ここでは透過pngを使ったアドオンを制作するので、透過pngに対応した本体バージョン120.2に対応するmakeobj60を使用しています。

昔ながらのCUIアプリなので、Windowsであればコマンドプロンプトを開いて、datと画像のあるディレクトリに移動してからmakeobj pak128 ./ ./と打ち込めば128x128サイズのアドオンができます。

私は上記のコマンドのバッチファイルを作って、ダブルクリックするだけでファイルを出力できるようにしています。CUIが苦手な人向けに、GUI化するツールもあるようです。

複数のpakファイルを一まとめにしたいとか、もっと凝ったことがしたい人は日本語化wikiやmakeobjの説明(何もパラメータを指定せず起動すれば出てきます)を読んでみましょう。

ゲーム上での確認と微調整

ここまでくればほとんど完成です。makeobjで生成されたpakファイルをアドオンフォルダにぶち込み、動作を確認しましょう。

ここで後回しにしていた画像の位置調整を行います。メタセコから画像を出力した際、3Dモデルの位置が適切(どの向きでもX軸、Z軸に対してど真ん中)であれば、調整は画像全体を上下にずらすだけで事は済みます。

こんな感じに、船の中心が運河の中心と合うように調整します。赤線の入った運河は拙作の運河をアドオン確認用に小改造したものです。画像に移っている船はジェットフォイルなので、標準で若干宙に浮き気味です。

鉄道車両や自動車は向きごとに描画位置を調整する必要がありますが、船舶の場合特に気にする必要がないので楽です。

位置調整が終わったら、改めて画像まわりのチェックをしましょう。全ての面の昼間・夜間(発光色)の状態を確認です。また、実際に適当なマップで運用してみて、意図した仕様になっているか、各種パラメータの誤入力が無いかチェックしましょう。

こんな感じでpakファイルは完成します。ただ、そのままだとアドオンの表示名がdatのnameパラメータそのままなので、翻訳用のtabファイルもあわせてつくるとよいかと思います。

もくじへ
その2へ戻る