タイル · bei.pm

公開日 2015年11月19日·更新日 2025年02月13日·日本語
このテキストはOpenAI GPT-4o Miniによって自動的に翻訳されました。

このページに記載されているファイル形式は、Dynamix, Inc.Sierra Entertainment の知的財産に関する技術分析に基づいています。
この知的財産は現在、Activision Publishing, Inc. / Activision Blizzard, Inc. に属しており、現在は Microsoft Corp. に所有されています。

情報は、アーカイブと歴史的データとの相互運用性を目的とした リバースエンジニアリングデータ分析 によって収集されました。
独自の機密仕様は使用されていません。

現在、このゲームは gog.com でダウンロード購入できます。

アドレス x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF 文字
0x0000 50 42 4d 50 -- -- -- -- -- -- -- -- -- -- -- -- P B M P . . . . . . . . . . . .
オフセット データタイプ 名称 説明
0x0000 uint(32) マジックバイト
0x0004 uint(24) ブロック長
0x0007 uint(8)

タイルはOutpost-2特有のビットマップグラフィックフォーマットです。 それは13のタイルセット、つまり「ウェル」と呼ばれるもので構成されています (well0000.bmpからwell0012.bmpまで)、 これらはmaps.volのボリューム内にあります。

これらのタイルセット/ウェルには次のものが含まれています:

ファイル名 内容
well0000.bmp 32x32ピクセルの青いグラフィック - 自分のイメージローダーが機能するかのテストに最適
well0001.bmp 明るい岩、明るい岩の山脈、明るい岩にある無数のクレーターのバリエーションを含む
well0002.bmp 明るい岩の「ドゥダッツ」を含む - 明るい岩に配置できる要素で、緩和や構造(例:壁)として使用されるもの、植生も含む
well0003.bmp 明るい岩の上にある殻のような構造を含む
well0004.bmp 暗い岩、暗い岩の山脈、暗い岩にある無数のクレーターのバリエーションを含む
well0005.bmp 暗い岩の「ドゥダッツ」を含む - 暗い岩に配置できる要素で、緩和や構造(例:壁)として使用されるもの
well0006.bmp 暗い岩の上にある殻のような構造と、明るい岩と暗い岩の間の遷移を含む
well0007.bmp 溶岩を含み、それぞれ4-5フレームのアニメーションも含む
well0008.bmp 砂と砂にある無数のクレーターのバリエーションを含む
well0009.bmp 砂の「ドゥダッツ」を含む - 砂に配置できる要素で、緩和や構造(例:壁)として使用されるもの
well0010.bmp 砂から明るい岩と暗い岩へのそれぞれ48の遷移を含む
well0011.bmp 地図の極冠を含み、暗い岩が基盤
well0012.bmp 地図の極冠を含み、明るい岩が基盤

正確な実装のためには、日夜サイクルのデータをまだ処理する必要があるため、タイルを事前にレンダリングしてキャッシュしないことが推奨されます。そうしないと、非常に多くのデータが発生します。

タイルは32x32ピクセルの解像度を持つインデックス付きパレットの8bppグラフィックで、縦に配置されています。しかし、このように作成されたタイルセットには、さらに多くのものが含まれる可能性があります。

メインコンテナは2つのセクションで構成されています: headdata

タイルのヘッダー

アドレス x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF 文字
0x0000 68 65 61 64 -- -- -- -- -- -- -- -- -- -- -- -- h e a d . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
オフセット データタイプ 名称 説明
0x0000 uint(32) マジックバイト
0x0004 uint(24) ブロック長
0x0007 uint(8)
0x0008 uint(32) バージョン / フラッグ?

これはファイル形式のバージョン情報である可能性があります。私が持っているすべてのファイルには、ここに0x02という値が記載されていました。

0x000c uint(32) 幅(横の解像度)

画像ファイルの幅を指定します(ピクセル単位)。

Outpost 2のすべてのウェルでは、ここでの値は0x20または32になることが予想されます。

0x0010 uint(32) 高さ(縦の解像度)

画像ファイルの高さを示します(ピクセル単位)。

Outpost 2のすべてのウェルでは、ここでの値は0x20または32になることが期待されます。

0x0014 uint(32) 色深度は?

この値の意味は不明です。

すべての検査されたファイルに値8が含まれているため、色深度の指定である可能性があります。

0x0018 uint(32) 色深度2ですか?

この値の意味は不明です。

おそらく「ターゲット」カラー深度かもしれません。

これらの情報に基づいて、標準化されたRIFF形式のパレットファイルが作成されます。正確な仕様は、パレットが他の場所にも存在するため、パレットの下にあります。

タイルデータ

アドレス x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF 文字
0x0000 64 61 74 61 -- -- -- -- -- -- -- -- -- -- -- -- d a t a . . . . . . . . . . . .
オフセット データタイプ 名称 説明
0x0000 uint(32) マジックバイト
0x0004 uint(24) ブロック長
0x0007 uint(8)

最後に、左上から右下に向かって行ごとに並んだ生のピクセルデータが続きます。
通常8bppビットマップとして存在するグラフィックのデータ値は、カラーパレット内の色のインデックスに対応しています。

ピクセルデータは左上から始まり、右下で終わります。

ゲームエンジンはタイルを*おそらく*オンデマンドで描画します。
これは32段階のタイルがある昼夜サイクルに起因しているようです。その際、明るさの値から「少し」引かれているようです。正確な値はまだ特定できていませんが、計算の基準は

v *= (daylight / 48) + 0.25;

で、HSVデータを使ったピクセルの計算を行っています。ここで、daylightは0から31の値で、vは0から1の値です。さらに、マップの左右にはそれぞれ16タイルの境界が存在し(これはユニットの見えないスポーンに役立ちます)、その点も考慮する必要があります。

加えて、昼夜サイクルはゲームサイクルごとにマップの一列だけを更新するようです。
加速された昼夜サイクルは以下のようになります:

昼夜サイクルの視覚化