Outpost 2 Formati za Faili · bei.pm

Huu maandiko umefanywa kwa njia ya automatiska kupitia OpenAI GPT-4o Mini.

Fomati za faili zilizoorodheshwa kwenye ukurasa huu zinategemea uchambuzi wa kiufundi wa mali miliki kutoka Dynamix, Inc. na Sierra Entertainment.
Mali miliki sasa ni sehemu ya mali ya Activision Publishing, Inc. / Activision Blizzard, Inc. na kwa sasa inamilikiwa na Microsoft Corp..

Taarifa hizi zimekusanywa kupitia Uhandisi wa Kinyume na Uchambuzi wa Takwimu kwa lengo la uhifadhi na ushirikiano na data za kihistoria.
Hakukuwa na vipimo vya miliki au vya siri vilivyotumika.

Mchezo huu kwa sasa unaweza kununuliwa kama upakuaji kwenye gog.com.

Sanaa ya mchezo

Mfululizo huu wa makala unadokumenti maarifa yangu kuhusu muundo wa data katika mchezo wa mikakati wa wakati halisi "Outpost 2: Divided Destiny", ambao ulitolewa na Sierra mwaka 1997 na kuendelezwa na Dynamix.

Nimejishughulisha hasa na uchambuzi wa data za mchezo huu - na jinsi zinavyotumika - kuanzia tarehe 01 Novemba 2015 hadi tarehe 14 Novemba 2015.

Kulingana na taarifa nilizoweza kupata hadi sasa, Dynamix - kama vile kampuni nyingi za kibiashara - haikuunda muundo wa data maalum kwa ajili ya Outpost 2, bali pia ilitumia katika maendeleo mengine kama vile mfululizo wa Mechwarrior (iliyobadilishwa).
Pamoja na hayo, pia inaonekana kwamba uvumbuzi wa muundo wa data unashikiliwa katika mipaka na mara nyingi unategemea dhana zilizodumu kwa muda kutoka kwa muundo wa kawaida kama JFIF na RIFF.

Kwa tafsiri ya meza na muundo wa data, taarifa zaidi zinapatikana kwenye Nini ni nini?.
Taarifa zilizotolewa hapa kwa ujumla zinapaswa kueleweka kama Little Endian.

Mwisho, inaweza kusemwa kuwa uhandisi wa nyuma ulikuwa na furaha kubwa, ingawa haujakamilika.
Kwa kweli, naweza pia kupendekeza kucheza mchezo mwenyewe, kwani unatoa mitindo ya mchezo ya kuvutia.

Utangulizi

Muundo wa data unaotumika na Outpost 2 una muundo unaokumbusha JFIF / PNG - vipande tofauti vya data kila wakati vina kichwa cha byte 8. Hivyo basi, sina haja ya kurekodi vichwa vya data kwenye maeneo mahsusi na ninaandika tu tofauti.

Muundo ni kila wakati ifuatavyo; data halisi za matumizi zimeingizwa ndani yake:

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF herufi
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Sehemu ya Kuingia Aina ya data Jina Maelezo
0x0000 uint(32) Mifumo ya Uchawi

Inajumuisha habari kuhusu kile kinachotarajiwa katika block inayofuata ya data.

Thamani zinazojulikana:

  • 0x204C4F56 ('VOL '):
    Volume
  • 0x686C6F76 ('VOLH'):
    Head ya Volume
  • 0x736C6F76 ('VOLS'):
    Strings za Volume
  • 0x696C6F76 ('VOLI'):
    Habari za Volume
  • 0x4B4C4256 ('BLCK'):
    Block ya Volume
  • 0x504D4250 ('PBMP'):
    Data za Grafik
  • 0x4C415050 ('PPAL'):
    Palette ya Rangi
  • 0x4C415043 ('CPAL'):
    Container ya Palette za Rangi
  • 0x64616568 ('head'):
    Header
  • 0x61746164 ('data'):
    Data za Matumizi
0x0004 uint(24) Urefu wa Kizuizi

Inajumuisha taarifa kuhusu ukubwa (katika Byte) wa block ya data ifuatayo.

Hapa inamaanisha tu data halisi - byte 8 za kichwa hazijajumuishwa.

0x0007 uint(8) Bendera?

Haijulikani ni kwa nini kizuizi hiki kinatumika hasa.

Katika Volumes, thamani hii mara nyingi ni 0x80, katika faili nyingine mara nyingi ni 0x00. Hii inaashiria kwamba ni seti ya bendera.

Vijaridi

"Volumes" ni kontena za data kwa ajili ya mchezo, sawa na muundo wa archive kama vile Tarball. Angalau katika Outpost 2, muundo huu unajulikana tu na faili - hakuna folda. Iwezekana kwamba folda hizi zinaweza kuigwa kwa kutumia majina sahihi ya faili.

Volume inajumuisha kichwa cha Volume pamoja na vizuizi kadhaa vya Volume, ambavyo vinawakilisha faili halisi.

"Volumes" ni faili zenye kiendelezi 'vol' katika directory ya mchezo.

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF herufi
0x0000 56 4f 4c 20 -- -- -- -- -- -- -- -- -- -- -- -- V O L . . . . . . . . . . . .
Sehemu ya Kuingia Aina ya data Jina Maelezo
0x0000 uint(32) Byte za Uchawi
0x0004 uint(24) Urefu wa Block
0x0007 uint(8) Bendera

Kichwa cha Volume

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF herufi
0x0000 76 6f 6c 68 -- -- -- -- -- -- -- -- -- -- -- -- v o l h . . . . . . . . . . . .
Sehemu ya Kuingia Aina ya data Jina Maelezo
0x0000 uint(32) Byte za Uchawi
0x0004 uint(24) Urefu wa Block
0x0007 uint(8) Bendera

Header ya Volume haitoi data zozote za matumizi.
Inatumika tu kama chombo.

Tarehe ya kwanza katika Header ya Volume inapaswa kuwa Volume Strings; kisha kufuatia ni taarifa za Volume.

Nyota za Kijito

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF herufi
0x0000 76 6f 6c 69 -- -- -- -- -- -- -- -- -- -- -- -- v o l i . . . . . . . . . . . .
Sehemu ya Kuingia Aina ya data Jina Maelezo
0x0000 uint(32) Byte za Uchawi
0x0004 uint(24) Urefu wa Block
0x0007 uint(8) Bendera
Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF herufi
0x0000 76 6f 6c 73 -- -- -- -- -- -- -- -- -- -- -- -- v o l s . . . . . . . . . . . .
Sehemu ya Kuingia Aina ya data Jina Maelezo
0x0000 uint(32) Byte za Uchawi
0x0004 uint(24) Urefu wa Block
0x0007 uint(8) Bendera
0x0008 uint(32) Urefu wa Payload

Inaonyesha ni kiasi gani cha Bytes cha data ifuatayo ni data halisi za matumizi.

Data nyingine zilizobaki katika orodha ya Volume-Strings zinaonekana kuwa kama garbage.

Kwenye faili zenye tarehe ya baadaye, 'data zilizobaki' ni 0x00, ambayo inaweza kuashiria udhaifu katika zana za maendeleo wakati wa kuendeleza mchezo, yaani, kwamba mendelezi walijali juu ya kuanzishwa sahihi ya buffer mwishoni mwa mchakato, kwani haina athari kwenye mchezo ikiwa data zimeanzishwa au la.

0x000c uint(8)[] Orodha ya majina ya faili

Hii ni orodha ya majina ya faili yenye byte sifuri, ambayo - angalau katika sehemu hii ya data - inatarajia tu alama za ASCII.

Sio lazima kuchambua block hii ya data kwa undani wakati wa kuchambua data, kwani katika taarifa za volumu tayari hutajwa moja kwa moja offsets za majina ya faili.

Volume Strings ni orodha ya majina ya faili yaliyomo ndani ya volume.

Habari za Kiasi

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF herufi
0x0000 76 6f 6c 69 -- -- -- -- -- -- -- -- -- -- -- -- v o l i . . . . . . . . . . . .
Sehemu ya Kuingia Aina ya data Jina Maelezo
0x0000 uint(32) Byte za Uchawi
0x0004 uint(24) Urefu wa Block
0x0007 uint(8) Bendera

Taarifa za volumu zinachukua habari za kina kuhusu faili. Hii ni aina fulani ya kuingizwa katika orodha ya FAT (FAT = Jedwali la Mgawanyiko wa Faili)

Idadi ya faili inapata kutokana na ukubwa wa block ukigawanywa na urefu wa kuingizwa kwa orodha - 14 byte.

Kila kuingizwa kwa orodha kuna muundo ufuatao:

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF herufi
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Sehemu ya Kuingia Aina ya data Jina Maelezo
0x0000 uint(32) Offset ya jina la faili

Inaonyesha ni offset gani (!) ndani ya orodha ya majina ya faili (Vikundi vya Volume) ambapo jina la faili linapatikana.

Inahusisha mwanzo wa kizuizi cha data muhimu.

0x0004 uint(32) Mahali pa faili

Inaonyesha offset gani ndani ya faili nzima ya volume ambapo faili hiyo inapatikana.

0x0008 uint(32) Sawa ya faili

Inaashiria ukubwa wa faili kwa byte.

0x000c uint(16) Bendera?

Inaonekana kuna maelezo ya ziada kuhusu uandishi wa faili.

  • 0x03 imewekwa wakati faili imefinywa. Hapa inaonekana kuna matumizi ya mti wa Huffman.
  • 0x80 inaonekana kila wakati imewekwa.

Kipengele cha Kiasi

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF herufi
0x0000 56 42 4c 48 -- -- -- -- -- -- -- -- -- -- -- -- V B L H . . . . . . . . . . . .
Sehemu ya Kuingia Aina ya data Jina Maelezo
0x0000 uint(32) Byte za Uchawi
0x0004 uint(24) Urefu wa Block
0x0007 uint(8) Bendera

Volume-Block ni konteina inayohifadhi faili. Inajumuisha tena - kwa sababu ya muundo wa block - ukubwa wa faili kwa njia ya kupita, na kisha moja kwa moja zinafuatia data za matumizi.

Tiles

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF herufi
0x0000 50 42 4d 50 -- -- -- -- -- -- -- -- -- -- -- -- P B M P . . . . . . . . . . . .
Sehemu ya Kuingia Aina ya data Jina Maelezo
0x0000 uint(32) Vikundi vya Uchawi
0x0004 uint(24) Muda wa Block
0x0007 uint(8) Makaratasi

Vyumba vinavyohusiana na Tiles ni muundo wa picha ya Bitmap maalum kwa Outpost-2. Vinapanuka juu ya Tilesets 13, vinavyojulikana kama "wells" (well0000.bmp hadi well0012.bmp), ambavyo viko ndani ya kiasi maps.vol.

Katika Tilesets / Wells kuna yafuatayo:

Jina la Faili Maudhui
well0000.bmp Grafiki ya rangi ya buluu yenye ukubwa wa 32x32px - bora kama jaribio la kuangalia kama mpakiaji wa picha unafanya kazi
well0001.bmp Inajumuisha mwamba mweupe, milima juu ya mwamba mweupe na aina nyingi za crater za athari kwenye mwamba mweupe
well0002.bmp Inajumuisha 'Doodads' za mwamba mweupe - yaani vipengele vinavyoweza kuwekwa ili kupamba (au kwa makusudi kama muundo, kama vile kuta) kwenye mwamba mweupe, ikijumuisha mimea
well0003.bmp Inajumuisha muundo wa ganda kwenye mwamba mweupe
well0004.bmp Inajumuisha mwamba mweusi, milima juu ya mwamba mweusi na aina nyingi za crater za athari kwenye mwamba mweusi
well0005.bmp Inajumuisha 'Doodads' za mwamba mweusi - yaani vipengele vinavyoweza kuwekwa ili kupamba (au kwa makusudi kama muundo, kama vile kuta) kwenye mwamba mweusi
well0006.bmp Inajumuisha muundo wa ganda kwenye mwamba mweusi, pamoja na mabadiliko kati ya mwamba mweupe na mweusi
well0007.bmp Inajumuisha lava ikiwa na fremu 4-5 za uhuishaji wa lava hiyo
well0008.bmp Inajumuisha mchanga na aina nyingi za crater za athari kwenye mchanga
well0009.bmp Inajumuisha 'Doodads' za mchanga - yaani vipengele vinavyoweza kuwekwa ili kupamba (au kwa makusudi kama muundo, kama vile kuta) kwenye mchanga
well0010.bmp Inajumuisha mabadiliko 48 kutoka mchanga hadi mwamba mweupe na mweusi
well0011.bmp Inajumuisha vichwa vya polar vya ramani, kwa mwamba mweusi kama msingi
well0012.bmp Inajumuisha vichwa vya polar vya ramani, kwa mwamba mweupe kama msingi

Inashauriwa kwa utekelezaji sahihi, kutoshiriki Tiles mapema ili zikae kwenye cache, kwani data za mzunguko wa mchana/usiku bado zinahitaji kusindika - na kutakuwa na data nyingi sana.

Tiles ni picha za 8bpp zenye palette iliyo na viwango vya rangi inayopangwa kwa 32x32 pixels, ambazo zimewekwa pamoja. Katika seti ya Tiles iliyoundwa kwa njia hii, inaweza kuwa na zaidi.

Container kuu ina sehemu 2: head na data.

Vichwa vya Tiles

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF herufi
0x0000 68 65 61 64 -- -- -- -- -- -- -- -- -- -- -- -- h e a d . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Sehemu ya Kuingia Aina ya data Jina Maelezo
0x0000 uint(32) Vikundi vya Uchawi
0x0004 uint(24) Muda wa Block
0x0007 uint(8) Makaratasi
0x0008 uint(32) Toleo / Bendera?

Hii inaweza kuwa ni taarifa ya toleo la muundo wa faili; katika faili zote nilizo nazo, thamani iliyoandikwa hapa ilikuwa 0x02

0x000c uint(32) Upana (Uamuzi wa Usawa)

Inaonyesha jinsi mpana wa faili ya picha ilivyo (katika pixels).

Katika visima vyote vya Outpost 2, thamani ya 0x20 au 32 inatarajiwa hapa.

0x0010 uint(32) Kimo (Ufafanuzi wa wima)

Inaonyesha jinsi picha ilivyo juu (katika pikseli).

Kwa Wells zote za Outpost 2, hapa thamani ya 0x20 au 32 inatarajiwa.

0x0014 uint(32) Udeepu wa rangi?

Maana ya thamani hii haijulikani.

Kwa sababu ina thamani ya 8 katika faili zote zilizokaguliwa, inaweza kuwa inahusiana na kiwango cha rangi.

0x0018 uint(32) Depth ya rangi 2?

Maana ya thamani hii haijulikani.

Inaweza kuwa 'lengo' la kina cha rangi.

Baada ya taarifa hizi, itafuata faili ya paleti iliyopo katika muundo wa RIFF wa kawaida. Maelezo kamili yanaweza kupatikana - kwa sababu paleti hizo pia zinapatikana mahali pengine - chini ya Rangi za paleti.

Data za Tiles

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF herufi
0x0000 64 61 74 61 -- -- -- -- -- -- -- -- -- -- -- -- d a t a . . . . . . . . . . . .
Sehemu ya Kuingia Aina ya data Jina Maelezo
0x0000 uint(32) Vikundi vya Uchawi
0x0004 uint(24) Muda wa Block
0x0007 uint(8) Makaratasi

Mwisho, data za pikseli zimeandikwa kwa safu kutoka kushoto juu hadi kulia chini.
Thamani ya data katika picha ambazo kwa kawaida zinakuja kama bitmaps za 8bpp inalingana na kiashiria cha rangi katika pallet ya rangi.

Data za pikseli huanza juu kushoto na kumalizika chini kulia.

Engine ya mchezo inachora Tiles *labda* kwa mahitaji.
Hii inaonekana kuwa na uhusiano na mzunguko wa siku na usiku, ambao una hatua 32 za Tiles tofauti. Inaonekana kwamba thamani ya mwangaza inakatwa 'kidogo' kwa kila mmoja. Thamani halisi bado hazijapata kubainishwa, nafanya kazi kwa msingi wa hesabu

v *= (daylight / 48) + 0.25;

kutumia data za HSV za pikseli, ambapo daylight ni thamani kati ya 0-31 na v ni thamani kati ya 0-1. Vilevile, inapaswa kuzingatiwa kwamba kwenye ramani kuna mipaka ya Tiles 16 upande wa kushoto na kulia (hii inatumiwa kwa kuzalisha vitengo ambavyo havionekani).

Ziada, mzunguko wa siku na usiku kwa kila mzunguko wa mchezo unasaidia kuboresha safu moja ya ramani tu.
Mzunguko wa siku na usiku unaoimarishwa unaonekana kama ifuatavyo:

Uonyeshaji wa mzunguko wa siku na usiku

PRT

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF herufi
0x0000 43 50 41 4c -- -- -- -- -- -- -- -- -- -- -- -- C P A L . . . . . . . . . . . .
Sehemu ya Kuingia Aina ya data Jina Maelezo
0x0000 uint(32) Magi Bytes
0x0004 uint(24) Urefu wa paleti

Badilisha, kinyume na muundo wa kawaida wa block, idadi ya paleti zinazopatikana katika faili hii - si urefu wa block kwa byte.

0x0007 uint(8) Bendera

Inawezekana, kama kawaida, bendera.

Sijui kuhusu bendera; kwani thamani zote ninazozijua zinakidhi 0x00, pia inawezekana kwamba idadi ya palette ni tu uint(32).

Nisawa PRT inamaanisha nini hasa, siijui; inaweza kuwa mfano 'Jedwali la Palette na Rasilimali' - kwa sababu faili hii - inayopatikana kama op2_art.prt katika maps.vol - ni hivyo, au hii inaweza kuelezea kazi hiyo vizuri.

Faili hii ina orodha ya palettes, jedwali la bitmaps zote zinazotumiwa, maelezo ya kila animation, na pia safu ya data zisizojulikana. Inafuata muundo wa kawaida wa kontena kwa namna isiyo rasmi, kwani si kila rekodi inafuata mpangilio huu.

Sehemu ya CPAL (inaweza kuwa inamaanisha kontena la palettes) inashughulikia tu data za palettes, kwa kuonyesha ni ngapi kati ya palettes za 8-bit zenye ukubwa wa 1052 byte zipo.

Taarifa ya 1052-byte haitambuliki kama ya lazima, kwani muundo wa palettes unaweza kuwa na ukubwa tofauti. Inatumika tu kwa data ambayo Outpost 2 inatolewa nayo.

Baada ya orodha za palettes, inafuata mara moja bila kichwa cha utangulizi, orodha ya bitmaps; vivyo hivyo, orodha za animations zinafuata mara moja.
Zote zinazoanzishwa na uint(32) (au tena uint24 + uint8 bendera?) inayohesabu idadi ya rekodi.

Rangi za paleti

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF herufi
0x0000 50 50 41 4c -- -- -- -- -- -- -- -- -- -- -- -- P P A L . . . . . . . . . . . .
Sehemu ya Kuingia Aina ya data Jina Maelezo
0x0000 uint(32) Vifaa vya Uchawi
0x0004 uint(24) Urefu wa paleti

Badilisha, kinyume na muundo wa kawaida wa block, idadi ya palet zinazopatikana katika faili hii - si urefu wa block kwa byte.

0x0007 uint(8) Bendera

Inaweza kuwa, kama kawaida, Bendera.

Hata hivyo, sina taarifa kuhusu Bendera; kwani thamani zote ninazozijua zinafanana na 0x00, inawezekana pia kwamba idadi ya paleti ni kwa kawaida uint(32).

Taarifa za paleti ni rahisi sana kusoma.
Zinajumuisha kichwa na sehemu ya data.

Kichwa cha Pallet

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF herufi
0x0000 68 65 61 64 -- -- -- -- -- -- -- -- -- -- -- -- h e a d . . . . . . . . . . . .
Sehemu ya Kuingia Aina ya data Jina Maelezo
0x0000 uint(32) Vifaa vya Uchawi
0x0004 uint(24) Urefu wa paleti

Badilisha, kinyume na muundo wa kawaida wa block, idadi ya palet zinazopatikana katika faili hii - si urefu wa block kwa byte.

0x0007 uint(8) Bendera

Inaweza kuwa, kama kawaida, Bendera.

Hata hivyo, sina taarifa kuhusu Bendera; kwani thamani zote ninazozijua zinafanana na 0x00, inawezekana pia kwamba idadi ya paleti ni kwa kawaida uint(32).

0x0008 uint(32) Toleo la muundo wa pallet?

Kila inaonekana kuamua ni toleo gani la muundo wa pallet ambalo pallet inafuata.

Paleti zote za Outpost2 zinaonekana kuwa na toleo 0x01.

Data za Pallet

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF herufi
0x0000 64 61 74 61 -- -- -- -- -- -- -- -- -- -- -- -- d a t a . . . . . . . . . . . .
Sehemu ya Kuingia Aina ya data Jina Maelezo
0x0000 uint(32) Vifaa vya Uchawi
0x0004 uint(24) Urefu wa Block
0x0007 uint(8) Bendera

Sehemu ya data inachukua ingizo la kila pallets. Idadi ya ingizo la pallets inapatikana kutokana na urefu wa block / 4.

Ingizo kila moja ina muundo huu rahisi;

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF herufi
0x0000 -- -- -- 04 -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Sehemu ya Kuingia Aina ya data Jina Maelezo
0x0000 uint(8) Sehemu ya Red

Inaonyesha kiasi cha rangi nyekundu katika rangi hiyo

0x0001 uint(8) Kipengele cha kijani

Inaonyesha kiwango cha kijani cha rangi

0x0002 uint(8) Sehemu ya buluu

Inatia kiasi cha buluu katika rangi

0x0003 uint(8) Haijulikani - Bendera?

Haijulikani ni nini maana ya thamani hii, kwani inaonekana kimsingi ni 0x04.

Kuhusu paleti, kuna kanuni zifuatazo ambazo zinatumika kwa paleti zinazotumika kwa michoro:

  • rangi ya kwanza KILA WAKATI ni wazi, bila kujali thamani iliyowekwa hapo.
  • Entries za paleti 1-24 zinachukuliwa kama rangi za mchezaji katika paleti 1-8.
    Sijui rangi zinatoka wapi isipokuwa mchezaji 1.
    Nadhani rangi zingine zimewekwa kwa njia ya hardcoded.

rejeleo la paleti

Bitmaps

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF herufi
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Sehemu ya Kuingia Aina ya data Jina Maelezo
0x0000 uint(32) Upana uliowekwa

Inatoa upana wa mistari ya data ya pikseli kwa baiti - kwani hizi zimepangwa kulingana na mipaka ya baiti 4.

Hivyo inakuwa rahisi kuingia kwenye mstari fulani wa picha.

Kwanini thamani hii inahifadhiwa kwa njia ya pekee, ingawa inaweza kuhesabiwa, bado haijulikani.
Huenda ni kuboresha kwa msimbo wa uwasilishaji.

0x0004 uint(32) Uondoaji

Inaonyesha offset ya mstari wa kwanza katika bitmap

0x0008 uint(32) Kimo

Onyesha urefu wa picha katika pikseli

0x000c uint(32) Upana

Onyesha upana wa picha katika pixels

0x0010 uint(16) Aina

Inaelezea aina ya picha. Hapa inaonekana kuwa ni Bitmask:

  • 0x04 imewekwa, ikiwa ni picha ya 1bpp.
  • 0x40 imewekwa, ikiwa ni picha ambayo inahitaji kutekeleza Windowing
0x0012 uint(16) Palette

Inafafanua ni palette ipi inayopaswa kutumika kutoka kwenye faili la PRT

Muundo huu wa data wa faili ya PRT unaelezea jinsi bitmaps zinazotumika kwa sprites zilivyojengwa. Bitmaps hizi zinatumika kama sehemu moja, ambapo nyingi zinakusanywa kuwa fremu ya animasiyo ya sprite.

Taarifa halisi za picha zinapatikana katika op2_art.BMP kwenye directory ya mchezo.
Kwanini faili hii ya bitmap ina kichwa cha RIFF-bitmap ambacho ni (kimsingi sahihi), hakijulikani. Inawezekana Outpost 2 inatumia APIs za mfumo kupakia picha, kwa kuhamasisha kichwa hiki kwa muda na kubadilisha sehemu zinazofaa, zinazobadilika.

Data za pikseli zinapatikana katika faili ya BMP katika nafasi ya Offset + uint32-Offset, ambayo inaonekana katika faili ya BMP katika anwani 0x000A (offset ya data ya RIFF-bitmap), na zinawiana tena na mpangilio wa mistari kutoka juu kushoto hadi chini kulia.

Grafiki za monochrome 1bpp zinaweza kuchorwa kwa njia ambayo rangi 0 inawakilisha uwazi kamili, na rangi 1 ni nyeusi/hudhurungi ya nusu uwazi, kwani grafiki za monochrome kawaida hutumika kwa vivuli vya magari na majengo katika animations.

Hivyo mtu anaweza tayari kuunganisha grafiki nyingi.

Mmoduli wa makazi ulio na ulinzi (Plymouth)

Michezo ya kuhamasisha

Sasa tunafika kwenye kiwango cha juu zaidi cha nidhamu ndani ya format za data za Outpost 2:
Animasheni.

Orodha za animasheni zinaanzishwa na kichwa cha kimataifa, ambacho kinahudumu hasa kwa ajili ya uthibitishaji wa data. Baada ya hapo, zinafuatiwa na maelezo ya wazi ya animasheni, ambayo yanagawanywa katika hatua 3:

  1. Animasheni
    Animasheni ni kiwango cha juu zaidi; inawakilisha animasheni ya kitengo, jengo au 'animasheni ya chembe' (mgongano wa kome, hali ya hewa, milipuko) katika hali fulani ya awali.
  2. Frame
    Frame ni picha moja ndani ya animasheni. Animasheni inaweza kuwa na frame moja au zaidi.
  3. Subframe
    Subframe ni taarifa inayoeleza kwamba bitmap fulani inapaswa kuchorwa kwenye nafasi maalum ya frame chini ya vigezo fulani. Frame inaweza kuwa na subframe moja au zaidi.

Mara baada ya hapo, zinakuja moja kwa moja maelezo ya kila animasheni.

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF herufi
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Sehemu ya Kuingia Aina ya data Jina Maelezo
0x0000 uint(32) Idadi ya michoro

Ni vipi idadi ya rekodi za uhuishaji zilizopo

0x0004 uint(32) Idadi ya Frame

Ni frame ngapi kwa jumla zinapaswa kuwepo

0x0008 uint(32) Idadi ya subframe

Ni subframes ngapi kwa jumla zinapaswa kuwepo

0x000c uint(32) Idadi ya chaguzi za hiari

Ni wangapi "ingizo la hiari" lililopo.

Uhuishaji

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF herufi
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0020 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Sehemu ya Kuingia Aina ya data Jina Maelezo
0x0000 uint(32) Haitambuliki 1

Taarifa zisizojulikana

0x0004 uint(32) Box ya Mipaka: Kushoto

Inatoa mwanzo wa kushoto (katika pikseli) wa Bounding Box.

0x0008 uint(32) Sanduku la Mpaka: Juu

Inatoa mwanzo wa juu (katika pikseli) wa Bounding Box.

0x000c uint(32) Sanduku la Mipaka: Upana

Inaonyesha upana (katika Pixel) wa Bounding Box.

0x0010 uint(32) Sanduku la Mipaka: Kimo

Inatoa urefu (katika pikseli) wa Bounding Box.

0x0014 uint(32) Offset: X

Inatoa katikati ya usawa ya mchakato wa uhuishaji

0x0018 uint(32) Kipimo: Y

Inatoa katikati ya wima ya uhuishaji

0x001c uint(32) Haijulikani 2

Habari za kutatanisha

0x0020 uint(32) Idadi ya Frame

Inasema ni frames ngapi za uhuishaji zilizomo katika uhuishaji huu

0x0024 uint(32) Idadi ya Madirisha

Onyesha ni dirisha ngapi zinapaswa kutumika wakati wa kuchora

Taarifa za safu ya juu, ya uhuishaji, hasa ni taarifa za usimamizi - Boundingbox inarejelea koordinati za alama inayozunguka gari/jengo, wakati inachaguliwa na pia inaonyesha eneo gani linaweza kubofyoshiwa.

Offset hasa huamua "nukta sifuri"; nukta ambayo inapaswa kuhesabiwa au kuondolewa kwenye koordinati za ndani ya mchezo. Inaweza pia kusemwa kwa kisayansi: offset hapa inamaanisha chanzo cha koordinati.

Kuhusu madirisha, kama ilivyo kwa offset, kuna kila moja (kwa kila dirisha) thamani 4 za uint(32), zinaonyesha eneo ambalo linaweza kutumiwa kwa subframes tofauti. Njia za nje ya madirisha hazitarajiwi, kama imepangwa kwa bitmap, kuchorwa.

Framu

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF herufi
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Sehemu ya Kuingia Aina ya data Jina Maelezo
0x0000 uint(8) Idadi ya subframe na Toggle kwa Hiari 1, 2

Thamani hii inajumuisha:

  • 0x7F (Bitmaski): Idadi ya Subframes zinazotumiwa katika fremu hii
  • 0x80: Taarifa kuhusu kama Chaguo 1 na 2 vinapatikana
0x0001 uint(8) Haijulikani 1 na Toggle kwa Chaguo 3, 4

Thamani hii ina:

  • 0x7F (Bitmask): Haijulikani - Nahisi kwa nguvu kwamba hii inahusiana na idadi ya Gameticks zinazopita hadi frame inayofuata ionekane
  • 0x80: Taarifa kuhusu kama Optional 3 na 4 zipo
0x0002 uint(8) Hiari 1

Haijulikani

0x0003 uint(8) Hiari 2

Haijulikani

0x0004 uint(8) Hiari 3

Haijulikani

0x0005 uint(8) Chaguo 4

Haijulikani

Subframe

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF herufi
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Sehemu ya Kuingia Aina ya data Jina Maelezo
0x0000 uint(16) Bitmap-Id

Onyesha ni bitmap gani itatumika kwa ajili ya subframe hii

0x0002 uint(8) Haitambuliki 1

Haijulikani - lakini nina shaka kubwa kwamba hii ni kipaumbele cha rendi (Z-Layer).

0x0003 uint(8) Subframe-Id

Inaonyesha ni katika subframe gani tulipo

0x0004 sint(16) Offset - Kiwango cha Usawa

Inaeleza wapi ndani ya fremu subframe inapaswa kuwekwa, au ni kwa kiasi gani pikseli bitmap inapaswa kusogezwa kwa usawa

0x0006 sint(16) Offset - Wima

Onyesha mahali ndani ya fremu ambapo subframe inapaswa kuwekwa, au ni kwa kiasi gani pixels bitmap inapaswa kusogezwa wima

Hivi sasa tunaweza kuunganisha frame moja moja, pamoja na animation kamili, hapa tunaonyesha mfano wa animation ngumu, animation yenye index 500.

Uhuishaji 500

Animation 500 inaonyesha jinsi ya kubeba na kutolewa kwa Plymouth-Transporter, ambao umejaa madini ya kawaida. Hii ni moja ya animation chache zinazotumia kazi ya Windowing.

Hivyo, animation kamili inaweza kuunganishwa.
Kwa bahati mbaya, bado kuna tatizo na mlango wa juu wa kuingilia, kwani hapa kipande husika katika taarifa ya aina ya grafiki hakijatumika.

Hapa kuna baadhi ya sprites nyingine nzuri sana zenye animation kutoka mchezo:

Uwasilishaji wa Animation 500 unaonyesha

Animation 500 imekamilishwa

Kiwanda cha Plymouth

Porti ya Eden

Kituo cha Tiba cha Eden

SCAT

Porti ya Plymouth

Easteregg:
Baba Krismasi

Easteregg:
Kuku wa Dans

Kichakataji cha Mtumiaji

Sasa inabaki tu kuunda interface ya mtumiaji ya mchezo, ambayo imeandaliwa kwa muonekano wa metali iliyosafishwa.

Lakini pia hapa inaonekana kwamba Dynamix haikuhitaji kuunda tena mduara; hapa si tu kwamba inatumia APIs za User32 na GDI32 zinazotolewa na Windows - haswa pia inatumia usimamizi wa rasilimali kutoka User32.

Hizi zinaweza kutolewa kwa mfano kupitia programu kama ile iliyotengenezwa na Angus Johnson kama freeware Resource Hacker, au - ikiwa unakwepa kutumia Wine kwenye Linux / Mac OS - kwa msaada wa wrestool iliyojumuishwa kwenye icoutils.

Jina la Faili Maudhui
Outpost2.exe Inaonyesha tu ikoni ya mchezo, ambayo inaonesha kituo cha anga za mbali mbele ya New Terra
op2shres.dll Inajumuisha picha za vipengee vya kudhibiti kama mipaka, mabandiko, mabandiko ya redio na masanduku ya kuangalia, pamoja na mandharinyuma ya mazungumzo, picha za kusaidia za maandiko ya hadithi ya misheni na picha ya mandharinyuma ya menyu kuu
out2res.dll Inajumuisha mapambo ya dirisha la ndani ya mchezo, ikoni za chuma cha kawaida na maalum, skrini ya upakuzi, picha za mazungumzo pamoja na picha nyingine za cursor, pamoja na picha zinazohamashika katika saraka ya mchezo