This is just my memorandum. Not important.
忘備録的なメモ。貴方がMOD作りに興味あれば読んでみて欲しい程度のもの。
普段の倍の128×128でデータを作って、画面上で0.5倍で表示できる仕組み。いわゆるハイレゾモード。
実はfactorioのスプライト画像のサイズには規定はなくて、どんな大きさの画像でも貼り付けることができる。
ただそのままだとその物体の座標と画像の中央が合う形になるので、建物や人物は足元に座標が合うように画像を「上にずらす」補正値を与えておく必要がある。
ちなみにそのオブジェクトのゲーム内での大きさはコリジョン設定で決まっていてこれは絵の大きさとは完全に無関係。
拡大率については、デフォルトのスケールが1.0。この状態だと1セル(木箱一個分)が32ピクセル。HRモードだと0.5で、これだと1セルが64ピクセルとなる。ただし、カメラズームで1セル32ピクセルより大きく拡大出来ることは皆知ってると思う。
そしてこれを実現するために各スプライト画像ごとに「通常モードのスケール」と「HRモードのスケール」をコード内で設定する。
通常は暗黙の了解でみんな1と0.5が割り当たっているのだけど、これは暗黙であって、やろうと思えば「特定のオブジェクトだけモード無視してHR画質」ということも実は可能。
と、いうか本MODの場合、元データを128で作って、スケールを0.5にすれば、通常モードでもキャラだけHR画質だし、逆に64で作ってスケールを1にすれば(あるいは古いバージョンでは)HRモードでもキャラだけ通常画質という仕様である。
もちろん、モードによって二種類の画像を切り替える仕組みにすることは出来るが画像を用意する手間が単純に2倍になるし、使う方もどちらか一方しか使わないだろうから、という理由であえてこうしている。
ところで、
うまい画像が見当たらなかったため、HRのキャラサンプル「player\sample128」は64ピクセル用の画像をそのまま2倍に拡大したものを使っている。
これに意味があるのかといえば、実は有って、factorioはどうもスプライト画像に減色処理が掛かるようで、この時、小さい画像より大きい画像の方が綺麗に色が残りやすい。
ですのんで「元の画像では鮮やかな髪色なのにゲーム内ではなんか灰色っぽい‥‥」と思ったら、拙作ツールで2倍拡大からのHRモード出力を試してみると良くなるかもしれない。