2019年10月11日金曜日

【ゲーム】simutrans 自作マップ

simutransのマップを自作する時のメモです。

simutransのマップは自作出来ます、自作したマップはいったん読み込ませてゲームデータに変えたら編集は出来ないみたいです。つまり自作したマップでゲーム開始時の状態を設定できますが、その後はゲーム内で編集する事になります。

simutransのマップはppmかbmpの画像ファイルで、1マスが1ピクセルで、そのピクセルの8bitグレースケールの値が高さを表します。よく『simutransのマップは明度が高さを表す』と言われますが、ppmもbmpもRGB色空間(赤緑青)なので、わざわざHSV色空間(色相、彩度、明度)に変換して明度を得て使っているとも思われず("明るさ"を"明度"と言っているだけかもですが、明度という用語を使うとHSVのと混同しやすいので、なんともです)、、、まあ 8bitグレースケールの値を使っているだけのようです。

で、その高さと値の対応ですが、日本語wikiや海外のサイトに載っています、載っていますがなんだか釈然としない値です。



うーん、なんだか規則性が見れませんし、実際にその値でやってみても微妙にずれる事があったりします。で、いろいろやって調べてみました。

まずは、グレースケールBMP(8bitBMP)で、上記サイトの値を使っていろいろな高さを試してみましたが、うまくいきません。たとえば海外サイトの情報でやると、
高さ14,13,12,10,9,8,7,5,4,3,1,0,-1,-3,-4,-5,-7,-8,-9,-11,-12,-13,-15,-16,-17
となり、11,6,2,-2,-6,-10,-14が無く、間が二段階の坂で繋がれてしまいます。

そこで、0x00~0xffまでの値を連続的に変えたBMPファイルを作りそれをsimutransに読み込ませてみました。

256×256のサイズで、1ライン目は00、2ライン目は01、3ライン目は02、、、256ライン目はFFとなるBMPファイル
256×256のサイズで、1ライン目は00、2ライン目は01、3ライン目は02、、、256ライン目はFFとなるBMPファイル

これをsimutoransに読み込ませてみます。
map高さ調査simutoransでの表示(海-2)
map高さ調査simutoransでの表示(海-2)

map高さ調査simutoransでの表示(海-20)
map高さ調査simutoransでの表示(海-20)
おお、ちゃんと一段ずつ表示されました。
どうも高さと値の関係は以下のようであるようです。
高さ   グレースケール値
-17     0 ~   7
-16     8 ~  15
-15    16 ~  23
-14    24 ~  31
-13    32 ~  39
-12    40 ~  47
-11    48 ~  55
-10    56 ~  63
 -9    64 ~  71
 -8    72 ~  79
 -7    80 ~  87
 -6    88 ~  95
 -5    96 ~ 103
 -4   104 ~ 111
 -3   112 ~ 119
 -2   120 ~ 127
 -1   128 ~ 135
  0   136 ~ 143
  1   144 ~ 151
  2   152 ~ 159
  3   160 ~ 167
  4   168 ~ 175
  5   176 ~ 183
  6   184 ~ 191
  7   192 ~ 199
  8   200 ~ 207
  9   208 ~ 215
 10   216 ~ 223
 11   224 ~ 231
 12   232 ~ 239
 13   240 ~ 247
 14   248 ~ 255

なんのことはない単に8区切りでした、、、

注:この結果ですが、simutrans 120.4.1で、
  [height_map_conversion_version_new ON]
  [pak_height_conversion_factor != 2]
  の時の値です。まあ今後デフォルトで使う限りこの値ではあります。
  
  simutransのバージョンや設定での違いを次に書きました。
  【ゲーム】simutrans 自作マップ 高度についてバージョンと設定値での違い



0 件のコメント:

コメントを投稿