プログラマの方はよくご存知ですが、画像の指定は多次元配列(これはちょっと違うけど)になっています。それのシーケンス
をちょっと書いてみようと思います。factoryのBackImageを例に考えてみましょう。
BackImage[0][0][0][0][0]=./syo-yu.0.1 BackImage[0][1][0][0][0]=./syo-yu.0.0 BackImage[0][0][1][0][0]=./syo-yu.0.1 BackImage[0][1][1][0][0]=./syo-yu.0.0
それぞれ
BackImage[向き][横][縦][高さ][アニメーション番号]=ファイル名.画像の縦.横
となっています。
[向き]は0,1,2,3,4,5,6,7で、それぞれ南、東、北、西、南東、北東、北西、南西の各向きを表しています。
[横][縦]はそれぞれチップの位置を表しています。具体的には
こんな感じに定義されます。この範囲内に建造物を書きましょう。高さを指定する事で上に伸ばす事も可能ですが、
高さは64Pixelごとに上に伸びます。つまりこの箱を上に繋げると
こうなります。気をつけて描きましょう。
アニメーション番号を指定すると、その部位のチップがどんどん切り替わってoilrigやsinemaのようにアニメーションします。
あんまりにも懲りすぎるとサイズがでかくなるので気をつけましょう。
元画像の座標は、(pak64なら)64ピクセル刻みで設定します。つまり、ひとつのピースは、64*64ピクセルです。256*256ピクセルの画像だと、
このように16ピース使用できます。
ちなみに(有限会社`・ω・´)は絵を描くのにD-Pixedを使用してます。どうでもいいか。
下図のような2x2の土地に建物を作る場合を考えます
1枚のタイルで表示できる範囲は下図の範囲です。これを4枚用意します
これを、それぞれのタイルの上に置いてみると、下図のようになります
これが2x2の土地に表示できる範囲です。高さが1の場合には建物はこの範囲内に描画する必要があります。
もしこの範囲より上に構造物がはみ出す場合は、[高さ]の2層目を使う必要があります
これをdatファイルで指定できるように、再び分割すると図のようになります
重なり合った部分はあってもなくても構いませんが、ないほうが画像データは軽くなります。
重なりを取り除いて分割すると、図のようになります
※重要な注意点
北西角の[0][0]に当たるタイルの画像(上図では黄緑色)に背景色の水色以外なにもない場合には、ゲームトラブルが起きます。1ドットの点でも構いませんから、必ず何かの画像を含めるようにしてください。
・・・・・・こんなことをしなくても、TileCutter を使えば簡単に画像の分割とdatファイルの作成をしてくれます。
観光地・産業(dims=3,3,1)と(dims=3,2,2)の[横][縦]。dimsの[横][縦]は[東西のタイル数]・[南北のタイル数]の順だが、BackImageの[横][縦]は[南北の配列位置]・[東西の配列位置]の順。指定する順序が逆なのに注意。[向き]は1,2,4が基本(※例外として後述のような特殊な設定もある)。正方形のようにゲーム上でマップを回転させたとき4方向すべてが同じ形の場合は1で良い。長方形のように2パターンの形がある場合は最低2つの画像が必要なので2。4方向すべての形が異なる場合は4。
但し、不定形の場合でも次の説明と同じく、マップを回転させたとき全ての回転方向において下図中の[0][0]のタイルがないと正常なpakにならない。
観光地・産業 これもdims=3,3,1。88.10.3(makeobj36)以降で不定形な建物が可能で、建物内に道路などを通すことができる。ただし、BackImage[0][0][0][0][0]は必ず必要。
車庫・ターミナル駅・港(dims=1,1,4)の[向き]と、バス停・鉄道駅(dims=1,1,2)の[向き]。駅ビルや市内建築物とはN,Sの方向が逆なのに注意。
[99.09以降]
駅(dims=1,1,16)の[向き]。dims=1,1,8の時は[0]〜[7]が使われる。
奥 | 手前 | |
[0] | [8] | 南北 中間 |
[1] | [9] | 東西 中間 |
[2] | [10] | 南北 南端 |
[3] | [11] | 東西 東端 |
[4] | [12] | 南北 北端 |
[5] | [13] | 東西 西端 |
[6] | [14] | 南北 孤立 |
[7] | [15] | 東西 孤立 |
市内建築物の向きは、自動設置の場合必ずしも正しく表示されません。下記の説明も間違っている可能性があります。
市内建築物(dims=1,1,4)の[向き]。89.02(makeobj 38)以降で複数の向きが可能。向きは駅ビルと同じ。dims=1,1,1の場合は[0]のみが使用され、dims=1,1,2の場合は[0][1]のみが使用される。市内建築物の大きさはdims=1,1以外は不可。
市内建築物[110.0以降]
市内建築物は自動では、同じ建物が隣どうしには建設されないようになっています。市内建築物の大きさはdims=1,1以外は不可です。
(122.0以降はdim=1,1以外も使用可能になりました。ただし4以上の数値は使用不可)
dims=1,1,1の場合は[0]のみが使用される
dims=1,1,2の場合は[0][1]はそれぞれ南北、東西の道路に面する。
dims=1,1,4の場合。[0][1][2][3]はそれぞれ南、東、北、西側の道路に面する。
dims=1,1,8の場合。[4][5][6][7]はそれぞれ南東、北東、北西、南西の角地にのみ建設される。
ここからの駅ビルの説明は、simutrans 100.0までのバージョンでは正しく表示されますが、今後のバージョンでは正しく表示されなくなります。[1]と[3]が逆になります。
駅ビル(dims=1,1,4)の[向き]。車庫などとはN,Sの方向が逆なのに注意。dims=1,1,1の場合は[0]のみが使用され、dims=1,1,2の場合は[0][1]のみが使用される。
駅ビル(dims=2,1,4)の[向き][横][縦]。dims=1,1,1の場合は[0]のみが使用され、dims=1,1,2の場合は[0][1]のみが使用される。駅ビルの場合、dims=x,yがx<yであってはいけない。
ここからの駅ビルの説明は、simutrans 101.0以降のバージョンで正しく表示されます。過去のバージョンでは正しく表示されません。[1]と[3]が逆になります。
駅ビル(dims=1,1,4)の[向き]。dims=1,1,1の場合は[0]のみが使用され、dims=1,1,2の場合は[0][1]のみが使用される。
駅ビル(dims=2,1,4)の[向き][横][縦]。dims=1,1,1の場合は[0]のみが使用され、dims=1,1,2の場合は[0][1]のみが使用される。駅ビルの場合、dims=x,yがx<yであってはいけない。
港(dims=1,2,4)の[向き][横][縦]。港は4つの向きが必要です。
港(dims=1,1,16)の[向き][横][縦]。(simutrans 101.0以降のバージョン、makeobj49以上でのみ使用可)
BackImage[0][0][0][0][0][0]=offset.0.0,64,64 のように任意で座標を指定すると、表示位置を相対的にずらすことが可能です。マイナスの値も指定可能です。
これにより、画像をタイル外まではみ出させることが可能です。
建築物に限らず、乗り物や標識にも使用可能です。
↑明るい緑色は、実際に指定した画像が表示される位置。
淡い緑色は本来の建設位置を表す目印。
datでの表記は上記のとおりで、 ,x,y 。 ずれる方向を平たく言えば、 +x = 右 +y = 下 -x = 左 -y = 上 といった具合。