Outpost 2 Dǫtrnaformǫt · bei.pm

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

Þeir skráarsnið, er hér á þessari síðu eru lýst, byggja á tæknilegri greiningu andlegum eignum frá Dynamix, Inc. ok Sierra Entertainment.
Andleg eign er í dag hluti af Activision Publishing, Inc.- / Activision Blizzard, Inc.-eignum ok er nú í eigu Microsoft Corp..

Þessar upplýsingar voru safnað með Öfugri verkfræði ok Gagnaanalysering til að varðveita ok samvirkni við söguleg gögn.
Engar einkaréttarspecificationer eða trúnaðargögn voru notuð.

Leikurinn má nú kaupa á gog.com sem niðurhal.

Verk af leiknum

Þessi greinarkafli skráir mína þekkingu á gagnasniðum í rauntíma-strategíu leiknum "Outpost 2: Divided Destiny", sem var gefinn út af Sierra árið 1997 og þróaður af Dynamix.

Frá 1. nóvember 2015 til 14. nóvember 2015 hef ég aðallega einbeitt mér að greiningu gagna leiksins - og hvað það gerir við þau.

Frá þeim upplýsingum, sem ég hef fengið hingað til, hefur Dynamix - eins og svo mörg viðskiptafyrirtæki - ekki þróað sum gagnasnið sérstaklega fyrir Outpost 2, heldur einnig notað þau í öðrum þróunum eins og Mechwarrior-seríunni (breytt).
Óháð því má einnig staðfesta að nýsköpunargáfa gagnasniðanna er að mestu leyti takmörkuð og oft byggð á eldri hugmyndum úr venjulegum sniðum eins og JFIF og RIFF.

Þar að auki eru frekari upplýsingar um túlkun taflna og gagnasnið að finna undir Hvat er hvat?.
Þau gögn, sem hér eru gefin upp, eru almennt að skilja sem Little Endian.

Að lokum má segja að endurhönnunin hafi verið mjög skemmtileg, jafnvel þó hún sé ekki fullkomin.
Að sjálfsögðu mæli ég einnig með að spila leikinn sjálfan, þar sem hann býður upp á áhugaverðar leikjamekaníkur.

Inngangr

Þat er sem at Outpost 2 nýta gögnformát, hafa eigi líkt JFIF / PNG uppbygging - hverr gögnkubb hefur ávalt 8 byte höfuð. Því spara ek mér at skrá niðr hvert höfuð á viðeigandi sérstökum stöðum, ok skrá ek þar einungis frávik.

Formatit er ávalt svá; hin raunverulega notagögn eru þar ífelld.

Aðr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ᚲᚺᚨᚱ
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
ᚢᚺᚦᚢᚦ (Offset) Þýðingardróttur Nafn Forkunnr
0x0000 uint(32) Fǫrðr Bitar

Inniheldr þær upplýsingar um, hvað í næsta gagnaflokk er að vænta.

Þekktir virði:

  • 0x204C4F56 ('VOL '):
    Rúmmál
  • 0x686C6F76 ('VOLH'):
    Rúmmál-Heiti
  • 0x736C6F76 ('VOLS'):
    Rúmmál-Strengir
  • 0x696C6F76 ('VOLI'):
    Rúmmál-Upplýsingar
  • 0x4B4C4256 ('BLCK'):
    Rúmmál-Blað
  • 0x504D4250 ('PBMP'):
    Grafíkdata
  • 0x4C415050 ('PPAL'):
    Litapaletta
  • 0x4C415043 ('CPAL'):
    Litapalettukerfi
  • 0x64616568 ('head'):
    Heiti
  • 0x61746164 ('data'):
    Notkunargögn
0x0004 uint(24) Block-lengð

Inniheldr upplýsing um, hve mikill (í byte) er sá gagnablaðr hér á eftir.

Þar er átt við hreina notkunargögnin - 8 fyrirsagnarbita eru eigi með í því.

0x0007 uint(8) Fana?

Óvíst er, hvat þat blokkr er til, nákvæmlega.

Í volumum er þessi verð oft 0x80, í öðrum skrám oft 0x00. Þat leggur til, at þetta sé flagg-sett.

Vollr

Við volumin er at um dætaílkrá fyrir leikinn, líkt og í skjalavörsluformi eins og t.d. Tarball. Að minnsta kosti í Outpost 2 þekkir formin aðeins skjal - engin mappa. Vandlega má þó koma í veg fyrir þetta með viðeigandi skjalanöfnum.

Eitt volume samanstendur af volume-hefð og mörgum volume-blokkunum, sem samsvara skjalunum.

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

Aðr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ᚲᚺᚨᚱ
0x0000 56 4f 4c 20 -- -- -- -- -- -- -- -- -- -- -- -- V O L . . . . . . . . . . . .
ᚢᚺᚦᚢᚦ (Offset) Þýðingardróttur Nafn Forkunnr
0x0000 uint(32) Mágisk Bitar
0x0004 uint(24) Block-lengð
0x0007 uint(8) Flautar

Rúmshǫfuð

Aðr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ᚲᚺᚨᚱ
0x0000 76 6f 6c 68 -- -- -- -- -- -- -- -- -- -- -- -- v o l h . . . . . . . . . . . .
ᚢᚺᚦᚢᚦ (Offset) Þýðingardróttur Nafn Forkunnr
0x0000 uint(32) Mágisk Bitar
0x0004 uint(24) Block-lengð
0x0007 uint(8) Flautar

Volume-hǫfðr inniheldr eigi nytsamligar dǫttur.
Hann þjónar einungis sem hylki.

Fyrsta dǫtt í Volume-hǫfðr skulu vera Volume-strengir; á eftir koma þá Volume-upplýsingar.

Völundr Strengir

Aðr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ᚲᚺᚨᚱ
0x0000 76 6f 6c 69 -- -- -- -- -- -- -- -- -- -- -- -- v o l i . . . . . . . . . . . .
ᚢᚺᚦᚢᚦ (Offset) Þýðingardróttur Nafn Forkunnr
0x0000 uint(32) Mágisk Bitar
0x0004 uint(24) Block-lengð
0x0007 uint(8) Flautar
Aðr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ᚲᚺᚨᚱ
0x0000 76 6f 6c 73 -- -- -- -- -- -- -- -- -- -- -- -- v o l s . . . . . . . . . . . .
ᚢᚺᚦᚢᚦ (Offset) Þýðingardróttur Nafn Forkunnr
0x0000 uint(32) Mágisk Bitar
0x0004 uint(24) Block-lengð
0x0007 uint(8) Flautar
0x0008 uint(32) Þyngd á afl.

Gefrǫg, hve margir bytes þessara gagna eru í raun nytsamleg gögn.

Hin ǫnnur, eftirliggjandi gögn lista yfir volum-strings eru greinilega að teljast sem rusl.

Í skrám með síðar dagsetningu eru þessi 'eftirliggjandi gögn' 0x00, er sýnir ófullnægjanir í tólum meðan á þróun leiksins stóð, þ.e.a.s. að einn þróunarmaður sé ekki farið að kippa sér upp við rétta upphafssetningu pufferanna fyrr en seint, þar sem það hefur enga áhrif á leikinn hvort gögnin séu upphafssett eða ekki.

0x000c uint(8)[] Dǫrðr-nafna-listi

Hér er um 0-Byte-tímala lista af skráarnafn, er - a.m.k. í þessum gögnum - aðeins ASCII-stafi vænta.

Ekki er nauðsynlegt at greina þessa gagnablokk nánar, því í skráarupplýsingunum er beint vísað til skráarnafnanna.

Um Volumstrangar er lista yfir skráarnöfn, er innan volumsins eru.

Volumvísindi

Aðr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ᚲᚺᚨᚱ
0x0000 76 6f 6c 69 -- -- -- -- -- -- -- -- -- -- -- -- v o l i . . . . . . . . . . . .
ᚢᚺᚦᚢᚦ (Offset) Þýðingardróttur Nafn Forkunnr
0x0000 uint(32) Mágisk Bitar
0x0004 uint(24) Block-lengð
0x0007 uint(8) Flautar

Volum-upplysningar taka til sérhvert dýrmætari upplýsingar um skrár. Þær eru á einhvern hátt eins konar FAT-skrásetning (FAT = Skrásetning á skráarsvæði)

Fjöldi skráa kemur fram úr blokkstærð deilt með lengd skrásetninganna - 14 bítar.

Hver skrásetning hefur hér að segja eftirfarandi uppbyggingu:

Aðr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ᚲᚺᚨᚱ
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
ᚢᚺᚦᚢᚦ (Offset) Þýðingardróttur Nafn Forkunnr
0x0000 uint(32) Dátunefn-Offset

Segir hvar á hvílku offset (!) innan nafna lista (Volume-Strings) nafnit á þeiri skrá finnist.

Varðar þat upphaf gagnanna bloks.

0x0004 uint(32) Dǫkkvandi-útlǫg

Seggr um hvat offset innan heildar volums-fíla sér stað þessi fíla.

0x0008 uint(32) Skap-stǫrð

Segg, hve mikit filin er í bættum.

0x000c uint(16) Flautar?

Virðist auka upplýsingar um skráar kóðun.

  • 0x03 er sett, ef skráin er þjappað. Hér kemur greinilega Huffmann-tré til framkvæmda.
  • 0x80 er væntanlega alltaf sett.

Hljóðsæti

Aðr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ᚲᚺᚨᚱ
0x0000 56 42 4c 48 -- -- -- -- -- -- -- -- -- -- -- -- V B L H . . . . . . . . . . . .
ᚢᚺᚦᚢᚦ (Offset) Þýðingardróttur Nafn Forkunnr
0x0000 uint(32) Mágisk Bitar
0x0004 uint(24) Block-lengð
0x0007 uint(8) Flautar

Í volume-block er um kassa, er tekur við skrám. Hann inniheldr einungis enn einu sinni - vegna blockformátins - endurtekin skráarstærð ok síðan fylgja beint notkunargögnin.

Flisar

Aðr 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 . . . . . . . . . . . .
ᚢᚺᚦᚢᚦ (Offset) Þýðingardróttur Nafn Forkunnr
0x0000 uint(32) Þulur einar mágiskar bætur
0x0004 uint(24) Blokkr-lengð
0x0007 uint(8) Fjǫlðr

Í tiles eru sérstakar myndir fyrir Outpost-2, sem eru búnar til í Bitmap-grafíksformi. Þau teygja sig yfir 13 tileset, nefnd "brunnar" (well0000.bmp til well0012.bmp), sem eru innan rúmsins maps.vol.

Hér innihalda tileset / brunnar eftirfarandi:

Filenamn Innhald
well0000.bmp Ein 32x32px stór, blár grafík - ætlað sem próf, ef eigin myndarhlutaverk virkar
well0001.bmp Inniheldur ljós stein, fjallagarða á ljósum steini og ótal afbrigði af árekstrarkrötum í ljósum steini
well0002.bmp Inniheldur ljós-steins-'Doodads' - þ.e. þættir, sem má setja til að létta (eða meðvituð sem uppbyggingu, eins og múrar) á ljósum steini, þar á meðal gróður
well0003.bmp Inniheldur skorpulegan uppbyggingu á ljósum steini
well0004.bmp Inniheldur dökkan stein, fjallagarða á dökku steini og ótal afbrigði af árekstrarkrötum í dökku steini
well0005.bmp Inniheldur dökkan-steins-'Doodads' - þ.e. þættir, sem má setja til að létta (eða meðvituð sem uppbyggingu, eins og múrar) á dökku steini
well0006.bmp Inniheldur skorpulegan uppbyggingu á dökku steini, sem og yfirfærslur milli ljóss og dökks steins
well0007.bmp Inniheldur hraun, þar á meðal 4-5 rammi af hreyfingu þeirra
well0008.bmp Inniheldur sand og ótal afbrigði af árekstrarkrötum í sand
well0009.bmp Inniheldur sand-'Doodads' - þ.e. þættir, sem má setja til að létta (eða meðvituð sem uppbyggingu, eins og múrar) á sand
well0010.bmp Inniheldur 48 yfirfærslur frá sandi til ljós og dökk steins
well0011.bmp Inniheldur pólarkappann á kortinu, með dökku steini sem undirlag
well0012.bmp Inniheldur pólarkappann á kortinu, með ljósu steini sem undirlag

Það er ráðlegt fyrir nákvæma framkvæmd, at ekki sé rendrað flísirnar fyrirfram til at geyma þær, því at gögnin fyrir dag/nótt-hringrásina verða enn unnin - ok mjög, mjög mörg gögn munu safnast.

Flísirnar eru 8bpp-grafíkur með lýsandi palettu á 32x32 pixla upplausn, er skipað er í röð. Í slíkum flísasafni getur þó miklu fleiri

Aðal-ílátit samanstendur af 2 hlutum: head ok data.

Flokkunar Hǫfðingr

Aðr 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 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
ᚢᚺᚦᚢᚦ (Offset) Þýðingardróttur Nafn Forkunnr
0x0000 uint(32) Þulur einar mágiskar bætur
0x0004 uint(24) Blokkr-lengð
0x0007 uint(8) Fjǫlðr
0x0008 uint(32) Útgáfa / Fáni?

Hér má vera um breytivísu á skráarformi að ræða; í öllum þeim skráum, er mér liggja fyrir, var hér gildið 0x02

0x000c uint(32) Breiða (Horisontal fynning)

Segir hveim breidd myndarfile er (í pixlum).

Við allar vötn í Outpost 2 mun hér vera vænt um gildið 0x20 eða 32.

0x0010 uint(32) Hægr (Lóðrétt útlit)

Segg þat, hve há er myndar-failit (í pixlum).

Í öllum Wells af Outpost 2 mun hér vera væntaðr verð 0x20 eða 32.

0x0014 uint(32) Fjalla dýpi?

Þat merki þessa verðs er ókunnugt.

Því at hann er í öllum prufum skjalda, er verð 8 inniheldr, má vera at þat sé um litdýptargreiningu at ræða.

0x0018 uint(32) Fjǫrr litra dýpt 2?

Þat merki þessa vits er ókunnugt.

Vera má að þat sé 'mark'-litdýpt.

Eftir þessum upplýsingum fer fram enn ein palettuskjal í staðlaðri RIFF-formi. Nákvæm lýsing finnst - þar sem palettur koma einnig fram annars staðar - undir Palettin.

Þætlir Datan

Aðr 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 . . . . . . . . . . . .
ᚢᚺᚦᚢᚦ (Offset) Þýðingardróttur Nafn Forkunnr
0x0000 uint(32) Þulur einar mágiskar bætur
0x0004 uint(24) Blokkr-lengð
0x0007 uint(8) Fjǫlðr

Í síðasta lagi fylgja nú þegar berir pixeldatarnir, frá vinstri-upp til hægri-neðri, línu fyrir línu.
Þegar gildi gagna er fyrir þær grafíkur sem venjulega eru 8bpp-bitmapar, samsvarar það vísitölunni á litnum í litapalettunni.

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

Leik-mátið teiknar flöturnar *útlitandi* á viðeigandi tíma.
Ventir þetta meðal annars af sólar- og myrkvacyklinum, sem þekkir 32 stig af einstökum flötum. Þar er augljóslega dregið 'lítið' frá ljósagildinu. Nákvæmt gildi hefur ekki verið fundið, ekk er að vinna á útreikningagrunni

v *= (daylight / 48) + 0.25;

með HSV-gögnum pixla, þar sem daylight er gildi frá 0-31 og v er gildi á milli 0-1. Auk þess er að athuga að á kortinu er í hvoru lagi til 16 flötum til vinstri og hægri (það þjónar til ósýnilegar spawning eininga) til staðar.

Auk þess virðist sólar- og myrkvacyklið uppfæra aðeins eina súlu kortsins á hverju leikhring.
Hraðari sólar- og myrkvacyklið lítur því út svona:

Sýnileiki sólar- og myrkvacyklið

PRT

Aðr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ᚲᚺᚨᚱ
0x0000 43 50 41 4c -- -- -- -- -- -- -- -- -- -- -- -- C P A L . . . . . . . . . . . .
ᚢᚺᚦᚢᚦ (Offset) Þýðingardróttur Nafn Forkunnr
0x0000 uint(32) Álfar Stafr
0x0004 uint(24) Palett-lengd

Gefrǫngum, móti venjulegu blokkformati, fjǫlð palettna er at finna í þessari skrá - eigi lengd bloksins í byte.

0x0007 uint(8) Fǫlkr

Vera, sem venja er, merki.

Ek veit þó eigi um merki; þar sem öll verð, er ek veit um, eru 0x00, væri einnig hugsanlegt, at fjöldi palettnanna væri einfaldlega uint(32).

Hva PRT nøyaktig står for, er meg ukjent; det er tenkelig at det kunne være 'Palette and Resource Table' - da denne filen - funnet som op2_art.prt i maps.vol - er av en slik art, eller dette ville beskrive funksjonen godt.

Denne fil inneholder en liste over paletter, en tabell over alle brukte bitmaps, alle animasjonsdefinisjoner, og en rekke ukjente data. Den følger det tidligere containerformatet løst, da ikke alle dataopptegnelser følger dette skjemaet.

CPAL-seksjonen (som sannsynligvis står for palett-container) omslutter bare palettdataene, idet den angir hvor mange av de vanligvis 1052 byte store 8-bit palettene som finnes.

1052-byte angivelsen er ikke å anse som bindende, da palettformatet potensielt kan ha forskjellige palettstørrelser. Den gjelder kun for datainnholdet som Outpost 2 leveres med.

Etter palettlistene følger straks, uten innledende overskrift, listen over bitmaps; likeledes følger deretter animasjonslistene umiddelbart.
Begge innledes med en uint(32) (eller igjen uint24+uint8 flagg?) som inneholder antall dataopptegnelser.

Palettin

Aðr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ᚲᚺᚨᚱ
0x0000 50 50 41 4c -- -- -- -- -- -- -- -- -- -- -- -- P P A L . . . . . . . . . . . .
ᚢᚺᚦᚢᚦ (Offset) Þýðingardróttur Nafn Forkunnr
0x0000 uint(32) Töfru Bytear
0x0004 uint(24) Paletten-lengð

Gef, í mót venjulegri blokkformi, fjölda paletta í þessari skrá - eigi lengd blocks í byte.

0x0007 uint(8) Flautar

Víst, sem venjulega, merki.

En mér eru engin merki kunn; þar sem öll þau gildi, er ég veit um, eru 0x00, væri einnig mögulegt, at fjöldi paletta væri einfaldlega uint(32).

Palettenupplýsingarnar eru mjög auðveldar að lesa.
Þær samanstendur af einum fyrirsagn og einu gagnaþætti.

Paletta-Hofði

Aðr 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 . . . . . . . . . . . .
ᚢᚺᚦᚢᚦ (Offset) Þýðingardróttur Nafn Forkunnr
0x0000 uint(32) Töfru Bytear
0x0004 uint(24) Paletten-lengð

Gef, í mót venjulegri blokkformi, fjölda paletta í þessari skrá - eigi lengd blocks í byte.

0x0007 uint(8) Flautar

Víst, sem venjulega, merki.

En mér eru engin merki kunn; þar sem öll þau gildi, er ég veit um, eru 0x00, væri einnig mögulegt, at fjöldi paletta væri einfaldlega uint(32).

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

Veit sér líklega, hvérr palettufræði-tími paletta fylgir.

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

Palettar-Datö

Aðr 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 . . . . . . . . . . . .
ᚢᚺᚦᚢᚦ (Offset) Þýðingardróttur Nafn Forkunnr
0x0000 uint(32) Töfru Bytear
0x0004 uint(24) Block-lengð
0x0007 uint(8) Flautar

Þá datasektionen taka einstaka paletta-einträgi. Fjöldi paletta-einträgi er af leiðandi úr blokk-lengdu / 4.

Einstaka einträgi hafa þá eftirfarandi, einfaldan bygging;

Aðr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ᚲᚺᚨᚱ
0x0000 -- -- -- 04 -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
ᚢᚺᚦᚢᚦ (Offset) Þýðingardróttur Nafn Forkunnr
0x0000 uint(8) Rauðr hluti

Gefrǫngr rauðan hlutann í litnum

0x0001 uint(8) Grønnrǫnd

Gefrǫðr grœnna hluta litanna

0x0002 uint(8) Blá-koma

Gefrǫðr bláa hlutr litanna

0x0003 uint(8) Óþekkr - Fágar?

Þat er óljóst, hvat þessar verðr þýða, því at hann sýnist grundvallar 0x04 vera.

Um palettarnar er enn að segja, at palettar er nota í animasjona fylgja þessar reglur:

  • Fyrsta litur er ALLTAF gegnsær, sama hverjar tölur eru þar settar.
  • Palettar-eintr 1-24 eru í palettum 1-8 taldar sem leikmannalitur.
    Hvar litirnir koma frá, nema leikmaður 1, er mér ókunnugt.
    ég gruna að hinir litirnir séu harðkóðaðir.

Palettar-viðmið

Bitmǫrk

Aðr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ᚲᚺᚨᚱ
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
ᚢᚺᚦᚢᚦ (Offset) Þýðingardróttur Nafn Forkunnr
0x0000 uint(32) Árviðr breiða

Gefrøt breidd pixeldata-lína í byte - því at þær eru á 4-byte mörkum.

Svo er skjótt mögulegt at springa til ákveðinnar myndlínu.

Hví þessi verð er sértaka geymt, þó at það gæti verið reiknað, er óljóst.
Kannski er þetta ein hagnýtni fyrir render-kóðann.

0x0004 uint(32) Offset

Gefrǫðr um þat hvar fyrsta lína í bitmap er staðsett.

0x0008 uint(32) Hǫgðr

Gefrǫgðu hæð myndarinnar í pikslar

0x000c uint(32) Breiða

Gefræðir breidd myndar í pikslar

0x0010 uint(16) Þýðing

Giv þat slǫg myndarinnar. Hér virðast vera um bitmaska at ræða:

  • 0x04 er sett, ef þat er 1bpp-grafík.
  • 0x40 er sett, ef þat er grafík, er þarf at framkalla gluggaskipting.
0x0012 uint(16) Paletta

Skilgrynir, hverja paletta skal nota úr PRT-skrá.

Þessi gagnaskipan PRT-skrár segir frá, hvat bitmýndurnar, sem notaðar eru fyrir spriturnar, eru uppbyggðar. Þessar bitmýndur þjóna sem einstakur hluti, þar sem margar eru samanlagðar í eina hreyfingaramma spritu.

Þau skýru myndagögnin leynast aftur á móti í op2_art.BMP í leikskránni.
Hvers vegna þessi bitmýndarskrá hefur RIFF-bitmýndarhöfuð (sem er að mestu leyti rétt) er óljóst. Væntanlega notar Outpost 2 kerfis-API til að hlaða grafíkum, með því að þetta höfuð er tímabundið tekið og viðeigandi breytilegu sviðin eru skrifuð yfir.

Pixeldatarnir eru í BMP-skránni á staðsetningu Offset + uint32-Offset, sem finna má í BMP-skránni á heimilisfangi 0x000A (RIFF-bitmýndar- gögn offset), og samsvara aftur lagskiptingu frá efst til vinstri niður til hægri.

Monochrome 1bpp-grafík geta verið teiknaðar þannig að litur 0 sé fullkomin gegnsæi, en litur 1 sé hálfgegnsætt svart/grátt, þar sem monochrom-grafík eru venjulega notaðar fyrir skugga farartækja og bygginga í hreyfingunum.

Með því má setja saman margar grafík.

Verndað búsetumódul (Plymouth)

Álfrunnir

Nú koma vér at konungaskipum þeira greina innan Outpost 2 gagnaformata:
Þá animatiónum.

Þær animatiónalistar byrja með alheims höfuð, er aðallega þjónar gagna staðfestingu. Eftir þetta fylgja þær sértæku animatiónar skýringar, er skiptast í 3 stig:

  1. Animatión
    Ein animatión er æðsta veran; hún sýnir animatión á einingu, byggingu eða 'örvunar-animatión' (stjörnuárekstur, veður, sprengja) í ákveðnu upphafsástandi.
  2. Rammi
    Einn rammi er einstakt mynd innan animatiónar. Ein animatión getur innihafað einn eða fleiri ramma.
  3. Undirrammi
    Einn undirrammi er upplýsing um, að ákveðin bitmap eigi að teiknast undir ákveðnum skilyrðum á ákveðna staðsetningu rammans. Ein rammi getur innihafað einn eða fleiri undirramma.

Síðan fylgja nú strax þær einstöku animatiónarskýringar.

Aðr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ᚲᚺᚨᚱ
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
ᚢᚺᚦᚢᚦ (Offset) Þýðingardróttur Nafn Forkunnr
0x0000 uint(32) Fjöldi hreyfinga

Hversu margar hreyfingarfréttir eru til?

0x0004 uint(32) Fjöldi ramma

Hversu marga ramma skulu vera til staðar heildar?

0x0008 uint(32) Ár subrammanna

Hversu mörg undirrammar skulu vera til staðar?

0x000c uint(32) Tala af valkosti skráningar

Hversu margir "valfríðir skráningar" eru til staðar.

Hreyfing

Aðr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ᚲᚺᚨᚱ
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0020 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
ᚢᚺᚦᚢᚦ (Offset) Þýðingardróttur Nafn Forkunnr
0x0000 uint(32) Ókunnigr 1

Ókunnug rǫk

0x0004 uint(32) Gǫrð kassa: Vinstri

Gefrǫngar þann vinstri upphaf (í pixlum) af Bounding Box.

0x0008 uint(32) Búnding kassi: Ofan

Skýrir efri byrjun (í pixlum) á Bounding Box.

0x000c uint(32) Búnding Bókka: Breiða

Gefrǫð breidd (í piksilum) Bounding Box segir.

0x0010 uint(32) Baugrǫnd: Hǫgð

Gefrǫngr hæð (í pixelum) Bounding Box segir.

0x0014 uint(32) Offset: X

Gefrǫngar þann hórizontala miðpunkt á animasjóni

0x0018 uint(32) Offset: Y

Gefrǫngina miðja hreyfingarinnar

0x001c uint(32) Óþekkt 2

Ókunnig upplýsing

0x0020 uint(32) Fjöldi ramma

Segir hveim mörgum hreyfiframum sé í þessari hreyfingu innihald

0x0024 uint(32) Fjǫlda glugganna

Segjum hve margir gluggar skulu nýta við teikning.

Þau gögn hinna efstu laga, hinna hreyfingu, eru fyrst og fremst stjórngögn - Boundingbox merkir hér hnit merkingarinnar um farartæki/byggingu, er þau eru valin og gefur einnig til kynna, hvaða svæði skal vera smellanlegt.

Offsetið ákvarðar fyrst og fremst "nullpunktinn"; punktinn, sem skal á reikna eða draga frá innanhúss hnitum. Maður má einnig segja á stærðfræði máta: offsetið merkir hér hnitaupptök.

Þegar kemur að Windows, þá eru þau, líkt og með offsetið, hver um sig (fyrir hvert Window) 4 uint(32)-gildi, sem gefa til kynna svæði, sem telst nota til einstakra undirramma. Utan Windows má, svo framarlega sem það sé fyrir bitmapið tilgreint, ekki teikna.

Rammi

Aðr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ᚲᚺᚨᚱ
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
ᚢᚺᚦᚢᚦ (Offset) Þýðingardróttur Nafn Forkunnr
0x0000 uint(8) Undirrammantal og Kveikja fyrir Valfrjáls 1, 2

Þessi verðr inniheldr:

  • 0x7F (Bitmaski): Fjöldi subramma, er í þessum rammanum eru notaðir
  • 0x80: Upplýsing um, hvárt valfrjáls 1 ok 2 eru til staðar
0x0001 uint(8) Óþekkr 1 ok Kveikja fyrir Valfritt 3, 4

Þessi verðr inniheldr:

  • 0x7F (Bitmaski): Óþekkt - Ek hygg miklu að þetta sé fjöldi Gameticks, er líða, þangað til næsta rammi er sýndr
  • 0x80: Upplýsing um, hvort valkostir 3 ok 4 séu til staðar
0x0002 uint(8) Valfríðr 1

Ókunnigr

0x0003 uint(8) Valfríðr 2

Ókunnigr

0x0004 uint(8) Valfríðr 3

Ókunnigr

0x0005 uint(8) Valfrí 4

Ókunnigr

Undirramma

Aðr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ᚲᚺᚨᚱ
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
ᚢᚺᚦᚢᚦ (Offset) Þýðingardróttur Nafn Forkunnr
0x0000 uint(16) Bitmap-Id

Segg, hvaða bitmap skal nyttast fyrir þenna subframe

0x0002 uint(8) Ókunnigr 1

Er er óvíst - en ek hygg að þetta sé um render-prióritet (Z-lag) at ræða.

0x0003 uint(8) Subframe-Id

Segðu í hvílíkum undirramma vér erum

0x0004 sint(16) Offset - Hórisontall

Seggir hvat innan ramma subrammin skal vera sett, eða hvé margir pixlar bitkortið skal hreyfast á víðvøtt.

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

Segg hvað staða innan rammsins subramminn á að vera, eða hve mörgum pixlum bitmapin á að hreyfast lóðrétt.

Þannig getum vér nú sett saman einstök ramma, sem og heilar hreyfingar, hér sýnt í fordæmi á flóknari hreyfingu, hreyfingunni með vísitölu 500, sýnd.

Hreyfing 500

Animation 500 sýnir, hvat Plymouth-flutningr, er með venjulegu járni hlaðinn, er losaðr. Þat er einn af fáum animations, er nýta windowing-funktionalitet.

Ok svá má samansetja alla animationina.
Óheppilegt er, at enn er vandamál með efri hlaðglugga, því at hér er viðkomandi bit ekki sett í grafík-týpu-upplýsingunum.

Hér eru fleiri, fallega animeraðir sprites úr leiknum:

Rendring af Animation 500 sýnir

Animation 500 fullkomlega saman sett

Plymouth bygging-fabrikk

Eden himmelska havn

Eden læknis miðstöð

SCAT

Plymouth himmelska havn

Easteregg:
Jólamaðr

Easteregg:
Dans hundr

Notandi-rás

Nú vantar enn notanda-flokkið í leikinn, er það í burstað málmur-útliti.

En hér sést einnig, að Dynamix þurfti ekki að enduruppgötva hjólið; hér eru ekki aðeins notaðar einfaldlega þær sem Windows veitir með User32- og GDI32-API-um - sérstaklega er einnig notað auðlindastjórnun frá User32.

Þessar má t.d. draga út með forritum eins og því sem Angus Johnson þróaði sem frítt forrit, Resource Hacker, eða - ef maður forðast notkun Wine undir Linux / Mac OS - með hjálp á icoutils sem inniheldur wrestool.

Skaldsnafn Snið
Outpost2.exe Inniheldr einungis tákn leiksins, er sýnir geimstöðina fyrir New Terra
op2shres.dll Inniheldr grafíkar fyrir stýripunkta eins og ummálar, takkar, útvarpstakka og kassa, líka víðtæk bakgrunnar fyrir samtöl, fylgibildir fyrir söguna og aðalvalmyndarbakgrunnsgrafik
out2res.dll Inniheldr leikja-gluggaskreytingar, tákn fyrir venjulegt og sérstöku málm, hleðsla-skjár, grafíkar fyrir samtöl og fleiri músartákn, að auki hreyfanleg í leiksniðinu