Outpost 2 skráarsnið · bei.pm

Þessi texti var sjálfvirkt þýddur með OpenAI GPT-4o Mini.

Skjalamyndir sem lýst er á þessari síðu byggja á tæknilegri greiningu á hugverki frá Dynamix, Inc. og Sierra Entertainment.
Hugverkið er nú hluti af Activision Publishing, Inc. / Activision Blizzard, Inc. og er nú í eigu Microsoft Corp..

Upplýsingarnar voru safnaðar með Reverse Engineering og gagnagreiningu í þeim tilgangi að varðveita og tryggja samhæfi við söguleg gögn.
Ekkert var notað af einkareknu eða trúnaðarupplýsingum.

Leikurinn er nú hægt að kaupa sem niðurhal hjá gog.com.

Lista yfir leikinn

Þessi greinaskemmtun skráir niðurstöður mínar um gagnasnið í rauntíma-strategíuleiknum "Outpost 2: Divided Destiny", sem Sierra gaf út árið 1997 og var þróað af Dynamix.

Frá 1. nóvember 2015 til 14. nóvember 2015 var ég aðallega að rannsaka gögnin úr leiknum - og hvað hægt er að gera við þau.

samkvæmt þeim upplýsingum sem ég hef safnað, hefur Dynamix - líkt og mörg önnur viðskiptaleg fyrirtæki - ekki þróað nokkur gagnasnið sérstaklega fyrir Outpost 2, heldur einnig notað þau í öðrum verkefnum eins og Mechwarrior-seríunni (breytt).
Auk þess er hægt að staðfesta að nýsköpunargildi gagnasniðanna er í raun takmarkað og oft byggt á lengur til staðar hugmyndum úr venjulegum sniðum eins og JFIF og RIFF.

Þar að auki má finna frekari upplýsingar um túlkun töflanna og gagnasniðin undir Hvað er hvað?.
Þau gögn sem hér eru gefin upp eru almennt að skilja sem Little Endian.

Að lokum má segja að afturhönnunin var mjög skemmtileg, jafnvel þó hún sé ekki fullkomin.
Að sjálfsögðu mæli ég líka með að spila leikinn sjálfan, þar sem hann býður upp á áhugaverða leikmechanik.

Inngangur

Þau gagnasnið sem Outpost 2 notar hafa uppbyggingu sem minnir á JFIF / PNG - einstaka gagnablökin hafa alltaf 8 bita fyrirsagnir. Þess vegna sleppi ég því að skrá fyrirsagnirnar á tilgreindum stöðum og skrá aðeins frávik þar.

Sniðið er alltaf eftirfarandi; raunverulegu gagnin eru þá innbyggð í því:

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF stafir
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Fyrirkomulag Gagnategund Heiti Skýring
0x0000 uint(32) Töfrabitar

Inniheldur upplýsingar um hvað er að vænta í næsta gagnablocki.

Þekkt gildi:

  • 0x204C4F56 ('VOL '):
    Hljóðmagn
  • 0x686C6F76 ('VOLH'):
    Hljóðmagns-heiti
  • 0x736C6F76 ('VOLS'):
    Hljóðmagn-strengir
  • 0x696C6F76 ('VOLI'):
    Upplýsingar um hljóðmagn
  • 0x4B4C4256 ('BLCK'):
    Hljóðmagn-blokkur
  • 0x504D4250 ('PBMP'):
    Grafík gögn
  • 0x4C415050 ('PPAL'):
    Litapalettan
  • 0x4C415043 ('CPAL'):
    Geymsla litapaletta
  • 0x64616568 ('head'):
    Heiti
  • 0x61746164 ('data'):
    Notagögn
0x0004 uint(24) Block-lengd

Inniheldur upplýsingarnar um hversu stór (í bætum) næsti gagnaflokkur er.

Þar er átt við hreina notendagögnin - 8 fyrirsagnarbætin eru ekki innifalin.

0x0007 uint(8) Fánar?

Það er óljóst hvaða tilgangi þessi blokk þjónar nákvæmlega.

Í volumunum er þessi gild oft 0x80, en í öðrum skrám oft 0x00. Þetta bendir til þess að um sé að ræða flagg-setningu.

Hlutir

Volumes eru gögnagámar fyrir leikinn, svipað og skjalasnið eins og Tarball. Að minnsta kosti í Outpost 2 þekkir sniðið aðeins skjal - engar möppur. Líklegt er að hægt væri að herma þetta með viðeigandi skjalanafni.

Ein Volume samanstendur af Volume-fyrirsagninni auk nokkurra Volume blokkra sem samsvara tilteknum skrám.

"Volumes" eru skjalin með endingunni 'vol' í leikaskránni.

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF stafir
0x0000 56 4f 4c 20 -- -- -- -- -- -- -- -- -- -- -- -- V O L . . . . . . . . . . . .
Fyrirkomulag Gagnategund Heiti Skýring
0x0000 uint(32) Töfraskeyti
0x0004 uint(24) Blocklengd
0x0007 uint(8) Fánar

Rúmmál fyrirsagnir

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF stafir
0x0000 76 6f 6c 68 -- -- -- -- -- -- -- -- -- -- -- -- v o l h . . . . . . . . . . . .
Fyrirkomulag Gagnategund Heiti Skýring
0x0000 uint(32) Töfraskeyti
0x0004 uint(24) Blocklengd
0x0007 uint(8) Fánar

Volume hausamurinn inniheldur sjálfur engin notkunargögn.
Hann þjónar aðeins sem gáma.

Þeir Volume strengir ættu að vera fyrsta dagsetningin í Volume hausamurnum; síðan fylgja upplýsingarnar um Volume.

Rúmmál Strengir

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF stafir
0x0000 76 6f 6c 69 -- -- -- -- -- -- -- -- -- -- -- -- v o l i . . . . . . . . . . . .
Fyrirkomulag Gagnategund Heiti Skýring
0x0000 uint(32) Töfraskeyti
0x0004 uint(24) Blocklengd
0x0007 uint(8) Fánar
Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF stafir
0x0000 76 6f 6c 73 -- -- -- -- -- -- -- -- -- -- -- -- v o l s . . . . . . . . . . . .
Fyrirkomulag Gagnategund Heiti Skýring
0x0000 uint(32) Töfraskeyti
0x0004 uint(24) Blocklengd
0x0007 uint(8) Fánar
0x0008 uint(32) Pökkunarlengd

Gefur til kynna hversu margir bytes af eftirfarandi gögnum eru í raun notagögn.

Þau afgangsgögn sem eftir eru í lista yfir volume-strengi virðast greinilega teljast sem úrgangur.

Í skrám með síðari dagsetningu eru þessi 'afgangsgögn' 0x00, sem gæti bent til ófullnægjandi í verkfæragáttinni meðan á þróun leiksins stóð, þ.e. að forritari hafi ekki sinnt réttri upphafssetningu buffera fyrr en mjög seint, þar sem það hefur enga áhrif á leikinn hvort gögnin séu upphafssett eða ekki.

0x000c uint(8)[] Skráarnafnaskrá

Þetta er 0-byte lokin listi af skráarnafni sem - að minnsta kosti í þessum gagnaþætti - aðeins gerir ráð fyrir ASCII táknum.

Ekki er nauðsynlegt að greina þennan gagnablokk nánar þegar verið er að parse-a gögnin, þar sem í upplýsingum um volume eru bein tilvísanir í forskriftir skráarnafnanna.

Volume strengjarnir eru lista yfir skráarnafn sem eru innifalin í volume-inu.

Hljóðmagn upplýsingar

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF stafir
0x0000 76 6f 6c 69 -- -- -- -- -- -- -- -- -- -- -- -- v o l i . . . . . . . . . . . .
Fyrirkomulag Gagnategund Heiti Skýring
0x0000 uint(32) Töfraskeyti
0x0004 uint(24) Blocklengd
0x0007 uint(8) Fánar

Volume-upplýsingarnar innihalda ítarlegri upplýsingar um skrárnar. Þessar upplýsingar eru í vissum skilningi svona eins og FAT-skráning (FAT = File Allocation Table)

Fjöldi skrár kemur fram með því að deila blokkastærð með length á skrárskrám - 14 bætum.

Hver skrárskrá hefur eftirfarandi uppbyggingu:

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF stafir
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Fyrirkomulag Gagnategund Heiti Skýring
0x0000 uint(32) Skráarnafn-Offset

Gefur til kynna hvar í skráarnafnalistanum (Volume-Strings) skráarheiti skráarinnar finnist.

Vísar til byrjun gagnabloksins.

0x0004 uint(32) Skráarsnið

Vísar á hvar í heildar skráarinnihaldinu er skráin staðsett.

0x0008 uint(32) Skjalastærð

Gefur til kynna hversu stór skráin er í bætum.

0x000c uint(16) Fánar?

Virðist gefa frekari upplýsingar um skráarkóðun.

  • 0x03 er sett, ef skráin er þjappað. Hér kemur greinilega Huffman tré í notkun.
  • 0x80 virðist alltaf vera sett.

Rúmmál blokk

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF stafir
0x0000 56 42 4c 48 -- -- -- -- -- -- -- -- -- -- -- -- V B L H . . . . . . . . . . . .
Fyrirkomulag Gagnategund Heiti Skýring
0x0000 uint(32) Töfraskeyti
0x0004 uint(24) Blocklengd
0x0007 uint(8) Fánar

Volume-blokk er í rauninni gáma, sem tekur við skrám. Hann inniheldur aðeins einu sinni til viðbótar - vegna blokkarsniðsins - auka skráarstærðina og síðan koma beint á eftir notendagögnin.

Flísar

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF stafir
0x0000 50 42 4d 50 -- -- -- -- -- -- -- -- -- -- -- -- P B M P . . . . . . . . . . . .
Fyrirkomulag Gagnategund Heiti Skýring
0x0000 uint(32) Töfrabitar
0x0004 uint(24) Block-lengd
0x0007 uint(8) Fánar

Hér er um að ræða sérstakt bitmap-grafíkerfnisform fyrir Outpost-2. Þeir ná yfir 13 flísasett, kallaðir "wells" (well0000.bmp til well0012.bmp), sem eru innan rúmsins maps.vol.

Flísasettin / Wells innihalda eftirfarandi:

Skráarnafn Innihald
well0000.bmp 32x32px stór blá grafík - fullkomin til að prófa hvort myndahleðslutæki virki
well0001.bmp Inniheldur ljós berg, fjallgarða á ljósu bergi og ótal afbrigði af áhrifavöldum á ljósu bergi
well0002.bmp Inniheldur ljós-bergs 'Doodads' - þ.e. þætti sem hægt er að setja á ljósu bergi til að brjóta upp landslagið (eða meðvitað sem uppbyggingu, svo sem veggi), þar á meðal gróður
well0003.bmp Inniheldur skorpulaga uppbyggingu á ljósu bergi
well0004.bmp Inniheldur dökkt berg, fjallgarða á dökku bergi og ótal afbrigði af áhrifavöldum á dökku bergi
well0005.bmp Inniheldur dökkt-bergs 'Doodads' - þ.e. þætti sem hægt er að setja á dökku bergi til að brjóta upp landslagið (eða meðvitað sem uppbyggingu, svo sem veggi)
well0006.bmp Inniheldur skorpulaga uppbyggingu á dökku bergi, auk tilfærslna milli ljósu og dökku bergs
well0007.bmp Inniheldur eldfjallaefni, þar á meðal 4-5 ramma af animation fyrir það
well0008.bmp Inniheldur sand og ótal afbrigði af áhrifavöldum á sandi
well0009.bmp Inniheldur sand-'Doodads' - þ.e. þætti sem hægt er að setja á sandi til að brjóta upp landslagið (eða meðvitað sem uppbyggingu, svo sem veggi)
well0010.bmp Inniheldur 48 tilfærslur frá sandi yfir í ljósu og dökku bergi
well0011.bmp Inniheldur pólarkapla kortsins, með dökku bergi sem undirstöðu
well0012.bmp Inniheldur pólarkapla kortsins, með ljósu bergi sem undirstöðu

Það er ráðlagt að framkvæma nákvæmlega, að rendera flísarnar ekki fyrirfram til að geyma þær, þar sem gögnin fyrir dag/nótt hringrásina þurfa enn að vinna - og mjög, mjög mikil gögn myndu safnast.

Flísarnar eru 8bpp grafík með indexaðri palettu á 32x32 pixla upplausn, sem raðað er saman. Í slíkum flísasafni er hins vegar hægt að hafa miklu fleiri

Aðal gáminn samanstendur af 2 sektionum: head og data.

Flísar fyrirsagnir

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF stafir
0x0000 68 65 61 64 -- -- -- -- -- -- -- -- -- -- -- -- h e a d . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Fyrirkomulag Gagnategund Heiti Skýring
0x0000 uint(32) Töfrabitar
0x0004 uint(24) Block-lengd
0x0007 uint(8) Fánar
0x0008 uint(32) Útgáfa / Fánar?

Þetta gæti verið útgáfutákn fyrir skráarsniðið; í öllum skráum sem ég hef í höndunum var gildið 0x02 hér.

0x000c uint(32) Breidd (Lárétt upplausn)

Veitir til um hversu breið myndaskráin er (í pixlum).

Í öllum Wells í Outpost 2 má búast við að gildi 0x20 eða 32 sé hér.

0x0010 uint(32) Hæð (Lóðrétt upplausn)

Gefurðu til kynna hversu há myndskráin er (í pixlum).

Í öllum brunnunum í Outpost 2 má búast við að gildið hér sé 0x20 eða 32.

0x0014 uint(32) Litadýpt?

Merking þessa gildis er ókunnug.

Þar sem það inniheldur gildið 8 í öllum skoðuðum skrám, gæti það verið vísun í litadýpt.

0x0018 uint(32) Litadýpt 2?

Þýðing þessa gildis er ókunnug.

Það gæti verið 'markmið' litadýpt.

Eftir þessar upplýsingar kemur enn ein palettuskrá í staðlaða RIFF-sniði. Nákvæm sérsniðin er að finna - þar sem palettur koma einnig fram á öðrum stöðum - undir Palettur.

Flísagögn

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF stafir
0x0000 64 61 74 61 -- -- -- -- -- -- -- -- -- -- -- -- d a t a . . . . . . . . . . . .
Fyrirkomulag Gagnategund Heiti Skýring
0x0000 uint(32) Töfrabitar
0x0004 uint(24) Block-lengd
0x0007 uint(8) Fánar

Að lokum fylgja hreinu pixeldatarnir, frá vinstri efst raðað eftir röð niður í hægra horn.
Verdid í gögnunum sem venjulega koma fram sem 8bpp-bitmaps samsvarar vísinum á litnum í litapalettunni.

Pixeldatarnir byrja efst til vinstri og enda neðst til hægri.

Leikjaforritið teiknar flísarnar *sennilega* eftir þörfum.
Þetta virðist meðal annars vera vegna dags- og næturhringsins, sem þekkir 32 stig af einstökum flísum. Í því ferli er greinilega 'lítið' dregið frá birtumætinu. Nákvæm gildi hafa ekki verið ákveðin enn, ég vinn út frá útreikningum

v *= (daylight / 48) + 0.25;

með HSV-gögnum pixla, þar sem daylight er gildi á bilinu 0-31 og v er gildi á bilinu 0-1. Auk þess þarf að hafa í huga að á kortinu er einnig til 16 flísar rúm á vinstri og hægri hlið (sem þjónar til ósýnilegs spawns eininga).

Auk þess virðist dags- og næturhringurinn aðeins uppfæra eina súlu á kortinu í hverju leiktímabili.
Hratt dags- og næturhringur lítur því út eins og hér segir:

Sýndu dags- og næturhringinn

PRT

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF stafir
0x0000 43 50 41 4c -- -- -- -- -- -- -- -- -- -- -- -- C P A L . . . . . . . . . . . .
Fyrirkomulag Gagnategund Heiti Skýring
0x0000 uint(32) Töfrastafir
0x0004 uint(24) Pallastærð

Gefur, í stað þess að nota hefðbundið blokkform, fjölda paletta sem finna má í þessari skrá - ekki lengd blokkanna í byteum.

0x0007 uint(8) Fánar

Vafalaust, eins og venjulega, fána.

Ég þekki hins vegar ekki neina fánar; þar sem allar þær tölur sem ég þekki eru 0x00, væri einnig hugsanlegt að fjöldi paletta væri einfaldlega uint(32).

Hvað PRT stendur nákvæmlega fyrir er mér ekki kunnugt; hugsanlegt væri til dæmis 'Palette and Resource Table' - þar sem þessi skrá - að finna sem op2_art.prt í maps.vol - er af þeirri gerð, eða þetta myndi lýsa virkni hennar frekar vel.

Þessi skrá inniheldur lista af paletum, töflu um allar notaðar bitamyndir, allar skilgreiningar á hreyfingum og einnig fjölda óþekktra gagna. Hún fylgir lauslega fyrra skáldformi, þar sem ekki allar skráð gögn fylgja þessu mynstur.

CPAL-hlutinn (sem líklega stendur fyrir paletuhaldara) umlykur aðeins paletugögnin, með því að tilgreina hversu margar af venjulegu 1052 bita stórum 8-bita paletum eru til staðar.

1052-bita tilgreiningin er ekki talin bindandi, þar sem paletufræðin gæti hugsanlega haft mismunandi paletustærðir. Hún gildir aðeins fyrir gögnin sem Outpost 2 er afhent með.

Eftir paletulistana fylgir strax og án forskriftar, listi yfir bitamyndir; og þar á eftir fylgja hreyfingalistarnir strax.
Báðir eru hver um sig hafnir með uint(32) (eða aftur uint24+uint8 merki?) sem inniheldur fjölda skráðra gagna.

Palettur

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF stafir
0x0000 50 50 41 4c -- -- -- -- -- -- -- -- -- -- -- -- P P A L . . . . . . . . . . . .
Fyrirkomulag Gagnategund Heiti Skýring
0x0000 uint(32) Töfrastafir
0x0004 uint(24) Pallettulengd

Gefur, í stað venjulegs blokkformats, fjölda pallanna sem finna má í þessari skrá - ekki lengd blokkanna í byte.

0x0007 uint(8) Fána

Vældilega, eins og venjulega, fána.

Ég þekki hins vegar enga fána; þar sem allir gildin sem ég þekki samsvara 0x00, væri einnig hugsanlegt að fjöldi paletta væri einfaldlega uint(32).

Upplýsingarnar um pallana eru mjög auðvelt að lesa.
Þær samanstanda af fyrirsagnarpunkti og gögnunum.

Paletten-haus

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF stafir
0x0000 68 65 61 64 -- -- -- -- -- -- -- -- -- -- -- -- h e a d . . . . . . . . . . . .
Fyrirkomulag Gagnategund Heiti Skýring
0x0000 uint(32) Töfrastafir
0x0004 uint(24) Pallettulengd

Gefur, í stað venjulegs blokkformats, fjölda pallanna sem finna má í þessari skrá - ekki lengd blokkanna í byte.

0x0007 uint(8) Fána

Vældilega, eins og venjulega, fána.

Ég þekki hins vegar enga fána; þar sem allir gildin sem ég þekki samsvara 0x00, væri einnig hugsanlegt að fjöldi paletta væri einfaldlega uint(32).

0x0008 uint(32) Palettenformát útgáfa?

Skilgreinir líklega hvaða útgáfu palettufrformats palettan fylgir.

Allar Outpost2-palettur virðast hafa útgáfu 0x01.

Palettugögn

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF stafir
0x0000 64 61 74 61 -- -- -- -- -- -- -- -- -- -- -- -- d a t a . . . . . . . . . . . .
Fyrirkomulag Gagnategund Heiti Skýring
0x0000 uint(32) Töfrastafir
0x0004 uint(24) Block lengd
0x0007 uint(8) Fána

Datasamningurinn tekur við einstökum pallettuinnskotum. Fjöldi pallettuinnskota kemur fram úr blokkarlengd / 4.

Einstök innskot hafa einfaldan uppbyggingu eins og hér segir;

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF stafir
0x0000 -- -- -- 04 -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Fyrirkomulag Gagnategund Heiti Skýring
0x0000 uint(8) Rauður hluti

Gefur til kynna rauða hluta litanna

0x0001 uint(8) Grænn hluti

Gefur til kynna græna hluta litanna

0x0002 uint(8) Blár þáttur

Gefur til kynna bláa hluta litanna

0x0003 uint(8) Óþekkt - Fánar?

Óljóst er hvað þessi gildi þýðir, þar sem það virðist í grundvallaratriðum vera 0x04.

Um palettunum er aðeins að segja, að fyrir palettur sem notaðar eru í animationum gilda eftirfarandi reglur:

  • Þriðja liturinn er ALLTAF gegnsær, sama hvað gildi er gefið.
  • Palettueinleggin 1-24 teljast sem leikmannalitur í palettum 1-8.
    Hvar litirnir, aðrir en leikmaður 1, koma nákvæmlega frá er mér óljóst.
    Ég geri ráð fyrir að hinir litirnir séu hardcoded.

Palettuskýring

Bitmýndir

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF stafir
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Fyrirkomulag Gagnategund Heiti Skýring
0x0000 uint(32) Stilling breidd

Gefur breidd pixeldataskemmtanna í byte - þar sem þær eru aðlagaðar að 4-byte mörkum.

Þannig er auðvelt að skiptast á ákveðna myndlínu.

Af hverju þessi gild er geymt sérstaklega, þrátt fyrir að það mætti reikna það út, er óljóst.
Kannski er þetta hagræðing fyrir render-kóðann.

0x0004 uint(32) Afskrift

Gefur tilkynningu um forskot fyrstu línunnar í bitmap-inni

0x0008 uint(32) Hæð

Gefur hæð myndarinnar í pixlum

0x000c uint(32) Breidd

Gefur breidd myndarinnar í pixlum

0x0010 uint(16) Tegund

Tilgreinir tegund myndarinnar. Hér virðist vera um bitmask að ræða:

  • 0x04 er stillt ef um 1bpp-grafík er að ræða.
  • 0x40 er stillt ef um grafík er að ræða sem þarf að framkvæma glugga.
0x0012 uint(16) Paletta

Skilgreinir hvaða palettur á að nota úr PRT-skránni

Þetta gögnaskipulag PRT-skrárinnar vísar til þess hvernig bitmap-áskriftirnar sem notaðar eru fyrir spriturnar eru byggðar. Þessar bitmap-áskriftir þjóna sem einstök eining, þar sem margar eru settar saman í animasjonsramma fyrir sprit.

Þau ákveðnu myndgögn eru aftur á móti falin í op2_art.BMP í leikjaskránni.
Hvers vegna þessi bitmap-skrá hefur RIFF-bitmaphaus (að mestu leyti rétt), er óljóst. Væntanlega notar Outpost 2 kerfis-API til að hlaða grafík, með því að taka tímabundið við þessum haus og skrifa yfir viðeigandi, breytilegu reitina.

Pixlagögnin eru í BMP-skránni á stöðu Offset + uint32-Offset, sem er að finna í BMP-skránni á adresu 0x000A (RIFF-bitmap-gagnastöð), og samsvarar aftur línulegri uppsetningu frá efst til vinstri niður til hægri.

Einlit 1bpp grafík getur verið teiknuð þannig að litur 0 sé algjörlega gegnsær, og litur 1 verði hálfgegnsætt svart/svartan, þar sem einlita grafík er venjulega notuð fyrir skugga farartækja og bygginga í animasjónunum.

Þannig er hægt að setja saman margar grafík.

Varnarskýrt íbúðarmódúl (Plymouth)

Sýndarmyndir

Nú förum við í konungsklassa greina innan Outpost 2 gagnasniðanna:
Þeirra sem snerta á animations.

Animationslistarnir byrja með alheimsheiti sem þjónar fyrst og fremst til gagnavottunar. Því næst koma tilteknar animationsskilgreiningar sem skiptast í 3 stig:

  1. Animation
    Animation er efsta einingin; hún sýnir animation fyrir einingu, byggingu eða 'partikla-animation' (kometáfall, veður, sprenging) í ákveðnu upphafi.
  2. Frame
    Frame er einstakt mynd í animation. Animation getur innihaldið eitt eða fleiri frames.
  3. Subframe
    Subframe er upplýsingarnar um að ákveðin bitmap eigi að teiknast á ákveðna staðsetningu á frame undir ákveðnum skilyrðum. Frame getur innihaldið eitt eða fleiri subframes.

Því næst koma strax einstakar animationsskilgreiningar.

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF stafir
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Fyrirkomulag Gagnategund Heiti Skýring
0x0000 uint(32) Fjöldi hreyfimynda

Hversu marga gagnasett af hreyfimyndum eru til

0x0004 uint(32) Fjöldi ramma

Hversu marga ramma ætti að vera til staðar samtals

0x0008 uint(32) Fjöldi undirkafla

Hversu marga undirramma ætti að vera alls til staðar

0x000c uint(32) Fjöldi valkera skráninga

Hversu margir "valfrjálsir færslur" eru til staðar.

Teiknimynd

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF stafir
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0020 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Fyrirkomulag Gagnategund Heiti Skýring
0x0000 uint(32) Óþekkt 1

Óþekktar upplýsingar

0x0004 uint(32) Afmarkandi kassi: Vinstri

Gefur til kynna vinstri upphafið (í pixlum) á Bounding Box.

0x0008 uint(32) Afmarkandi kassi: Ofan

Tilgreinir efri upphafspunktinn (í pixlum) fyrir Bounding Box.

0x000c uint(32) Bending Box: Breidd

Gefur breiddina (í pixlum) á Bounding Box.

0x0010 uint(32) Afmarkaður kassi: Hæð

Gefur hæðina (í pixlum) á Bounding Box.

0x0014 uint(32) Afstæð: X

Gefur til kynna láréttan miðpunkt teikningarinnar

0x0018 uint(32) Afsláttur: Y

Gefur miðju hreyfingarinnar á lóðrétta ásnum

0x001c uint(32) Óþekkt 2

Óþekkt upplýsing

0x0020 uint(32) Fjöldi ramma

Gefur til kynna hversu marga animasjónarramma þessi animasjón inniheldur

0x0024 uint(32) Fjöldi glugga

Gefur til kynna hversu mörg gluggum á að nota við teikningu

Gögnin í efstu lögun, sem tengjast animation, eru fyrst og fremst stjórnunargögn - Boundingbox vísar hér til hnitanna sem umlykur farartækið/bygginguna, þegar það er valið og gefur jafnframt til kynna hvaða svæði á að vera smellanlegt.

Offset-ið ákveður fyrst og fremst "núllpunktinn"; punktinn sem á að reikna á móti eða draga frá innanhúss hnitum. Það má einnig segja á stærðfræðilegan hátt: offset-ið vísar hér til hitnagrunns.

Í Windows er um að ræða, eins og við offset-ið, 4 uint(32)-gildi fyrir hvert Window, sem gefa til kynna svæði sem telst nothæft fyrir einstaka subframes. Utan Windows má ekki, svo framarlega sem það sé ekki tilgreint fyrir bitmap-ið, teikna.

Ramma

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF stafir
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Fyrirkomulag Gagnategund Heiti Skýring
0x0000 uint(8) Undirgrindarfjöldi og Toggle fyrir Valkost 1, 2

Þessi gildið inniheldur:

  • 0x7F (Bitmaski): Fjöldi undirramma sem notaður er í þessari ramma
  • 0x80: Upplýsingar um hvort valkostir 1 og 2 séu til staðar
0x0001 uint(8) Óþekkt 1 og Toggle fyrir valfrjálsa 3, 4

Þessi gildi inniheldur:

  • 0x7F (Bitmaski): Óþekkt - Ég geri ráð fyrir að þetta sé fjöldi leikjaklukkustunda sem líða þar til næsta ramma er sýndur
  • 0x80: Upplýsingar um hvort valkostir 3 og 4 séu til staðar
0x0002 uint(8) Valkostur 1

Óþekkt

0x0003 uint(8) Valkostur 2

Óþekkt

0x0004 uint(8) Valfrjálst 3

Óþekkt

0x0005 uint(8) Valfrjálst 4

Óþekkt

Undirrammi

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF stafir
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Fyrirkomulag Gagnategund Heiti Skýring
0x0000 uint(16) Bitmap-Id

Vísar til þess hvaða bitmap á að nota fyrir þennan undirkassa

0x0002 uint(8) Óþekkt 1

Er er ókunnugur - ég geri þó ráð fyrir að þetta snúist um render-prioritets (Z-lag).

0x0003 uint(8) Undirgrindar-ID

Tilgreinir í hvaða undrahöfuð við erum

0x0004 sint(16) Fyrirkomulag - Lárétt

Gefur til kynna hvar innan rammans á að staðsetja undirrammann, eða um hversu marga pixla bitmapinn á að færa til hliðar.

0x0006 sint(16) Offset - Lóðrétt

Gefur til kynna hvar innan rammans subramminni eigi að vera staðsett, eða um hversu marga punkta bitmapið eigi að vera flutt lóðrétt.

Með þessu getum við nú sameinað einstaka ramma, sem og heilar hreyfimyndir, hér er sýnt sem dæmi á flóknari hreyfimynd, hreyfimyndinni með index 500.

Animation 500

Animation 500 sýnir hvernig Plymouth-flutningabíll, sem er fullur af venjulegu málmi, er tæmdur. Þetta er ein af fáum teiknimyndum sem notar gluggastjórnunar virkni.

Þannig má sameina alla teiknimyndina.
Því miður er enn eitt vandamál með efri hleðslulúguna, þar sem viðkomandi bit í grafíkgerðarupplýsingunum er ekki stillt.

Hér eru nokkrir aðrir, fallega teiknaðar sprit úr leiknum:

Rendering á Animation 500 útskýrt

Animation 500 fullbúin

Plymouth Byggingaverk

Eden Geimskipahöfn

Eden Læknamiðstöð

SCAT

Plymouth Geimskipahöfn

Easteregg:
Jólamaðurinn

Easteregg:
Dansandi Hundur

Notendaviðmót

Nú vantar enn notendaviðmót leiksins, sem er í burstaðri málm-útliti.

En einnig hér sést að Dynamix þurfti ekki að enduruppgötva hjólið; hér eru ekki bara einfaldlega notaðar User32- og GDI32-API sem Windows býður upp á - sérstaklega er einnig notað auðlindastjórnun frá User32.

Þetta má til dæmis vinna úr með forritum eins og Resource Hacker, sem Angus Johnson þróaði sem fríforrit, eða - ef maður óttast að nota Wine á Linux / Mac OS - með hjálp wrestool sem er innifalið í icoutils.

Skráarnafn Innihald
Outpost2.exe Inniheldur aðeins táknið fyrir leikinn, sem sýnir geimstöðina fyrir New Terra
op2shres.dll Inniheldur, auk grafík fyrir stjórnþætti eins og umgjörð, takka, valhnappa og valkassa, einnig bakgrunna fyrir samræður, fylgibyrtingar fyrir sögu-missíutexta og aðalmenu bakgrunnsgrafík
out2res.dll Inniheldur in-game gluggaskreytingar, tákn fyrir venjulegt og sérstakt málm, hleðsluskjá, grafík fyrir samræður, auk fleiri músartákna, að auki þær hreyfanlegu í leikjaskránni