Fformatau Ffeiliau Outpost 2 · bei.pm

Mae'r testun hwn wedi'i gyfieithu'n awtomatig gan OpenAI GPT-4o Mini

Mae'r fformatau ffeil a ddisgrifiwyd ar y dudalen hon yn seiliedig ar ddadansoddiad technegol o eiddo deallusol gan Dynamix, Inc. a Sierra Entertainment.
Mae'r eiddo deallusol yn rhan o eiddo Activision Publishing, Inc. / Activision Blizzard, Inc. ar hyn o bryd ac yn berchen ar Microsoft Corp..

Mae'r wybodaeth wedi'i chasglu trwy Dadansoddiad Adfer a Dadansoddi Data er mwyn archifio a sicrhau rhyngweithrediad â data hanesyddol.
Nid oedd unrhyw fanwlion perchnogol neu gyfrinachol wedi'u defnyddio.

Gellir prynu'r gêm ar hyn o bryd fel lawrlwytho ar gog.com.

Celf gwaith y gêm

Mae'r gyfres erthygl hon yn dogfennu fy neddygion am y fformatau data yn y gêm strategaeth amser real "Outpost 2: Divided Destiny", a gyhoeddwyd gan Sierra ym 1997 ac a ddatblygwyd gan Dynamix.

Bu gennyf ddiddordeb yn bennaf yn yr analysis o ddata'r gêm - a'r hyn y mae'n ei wneud - rhwng 1af Tachwedd 2015 a 14eg Tachwedd 2015.

Yn ôl yr wybodaeth a dderbyniais hyd yma, mae Dynamix - fel llawer o gwmnïau masnachol - ddim wedi datblygu rhai fformatau data yn benodol ar gyfer Outpost 2, ond eu defnyddio (wedi'u haddasu) mewn datblygiadau eraill fel y gyfres Mechwarrior.
Yn annibynnol ar hynny, gellir nodi hefyd fod y grym arloesol o fformatau data wedi'i gyfyngu'n sylweddol, gan y mwyafrif yn seiliedig ar gysyniadau hirdymor o fformatau cyffredin fel JFIF a RIFF.

Ar gyfer dehongli'r tablau a'r fformatau data, mae gwybodaeth bellach ar gael ar Beth yw beth?.
Mae'r data a gynhelir yma yn gyffredinol i'w deall fel Little Endian.

I gloi, gellir dweud bod y peirianneg gylchdroi yn rhoi llawer o hwyl, er nad yw'n gyflawn.
Wrth gwrs, gallaf hefyd argymell chwarae'r gêm ei hun, gan ei bod yn cynnig mecanyddion gêm diddorol.

Cyflwyniad

Mae'r fformat data a ddefnyddir gan Outpost 2 yn cynnwys strwythur sy'n atgoffa o JFIF / PNG - mae gan y blociau data unigol benawd 8 byte bob amser. Felly, rwy'n dewis peidio â dogfennu'r penawdau unigol yn y mannau penodol priodol ac yn unig ddogfennu'r gwrthdrawiadau yno.

Mae'r fformat bob amser yn yr un peth; mae'r data defnyddiol yn cael eu hymgorffori ynddo:

Cyfeir. x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF cymeriadau
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Offest Math Data Enw Esboniad
0x0000 uint(32) Bytes Hudol

Mae'n cynnwys y wybodaeth am beth i'w ddisgwyl yn y bloc data nesaf.

Gwerthoedd a gydnabyddir:

  • 0x204C4F56 ('VOL '):
    Cyfaint
  • 0x686C6F76 ('VOLH'):
    Penawd Cyfaint
  • 0x736C6F76 ('VOLS'):
    Stringiau Cyfaint
  • 0x696C6F76 ('VOLI'):
    Gwybodaeth Cyfaint
  • 0x4B4C4256 ('BLCK'):
    Bloc Cyfaint
  • 0x504D4250 ('PBMP'):
    Data graffig
  • 0x4C415050 ('PPAL'):
    Palet lliw
  • 0x4C415043 ('CPAL'):
    Cludwr paletiau lliw
  • 0x64616568 ('head'):
    Penawd
  • 0x61746164 ('data'):
    Data defnyddiol
0x0004 uint(24) Hyd y bloc

Mae'n cynnwys gwybodaeth am ba mor fawr (mewn Bytiau) yw'r bloc data canlynol.

Mae'r data defnyddiol yn unig yn cael eu hystyried - ni chynnwysir y 8 Byt Penawd yn hynny.

0x0007 uint(8) Baneri?

Mae'n aneglur beth yn union yw diben y bloc hwn.

Yn y cyfrolau, mae'r gwerth hwn yn aml yn 0x80, yn y ffeiliau eraill mae'n aml yn 0x00. Mae hyn yn awgrymu ei fod yn set fan flagiau.

Cyfrolau

Mae'r cyfrolau yn gontenwr data ar gyfer y gêm, yn debyg i fformat archif fel, er enghraifft, Tarball. Ar y lleiaf yn Outpost 2, mae'r fformat yn cynnwys dim ond ffeiliau - nid ffolderi. Mae'n debyg y gellid simwleiddio'r rhain drwy henwi ffeiliau priodol.

Mae cyfrol yn cynnwys y penawd cyfrol a sawl bloc cyfrol sy'n cyd-fynd â'r ffeiliau penodol.

"Cyfrolau" yw'r ffeiliau sy'n gorffen â 'vol' yn y cyfeiriadur gêm.

Cyfeir. x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF cymeriadau
0x0000 56 4f 4c 20 -- -- -- -- -- -- -- -- -- -- -- -- V O L . . . . . . . . . . . .
Offest Math Data Enw Esboniad
0x0000 uint(32) Bytes Hudolus
0x0004 uint(24) Hyd y bloc
0x0007 uint(8) Baneri

Penawd Cyfrol

Cyfeir. x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF cymeriadau
0x0000 76 6f 6c 68 -- -- -- -- -- -- -- -- -- -- -- -- v o l h . . . . . . . . . . . .
Offest Math Data Enw Esboniad
0x0000 uint(32) Bytes Hudolus
0x0004 uint(24) Hyd y bloc
0x0007 uint(8) Baneri

Mae'r Penawd Cyfrol yn cynnwys dim data defnyddiol.
Mae'n gwasanaethu fel cynhwysydd yn unig.

Yn gyntaf, dylai'r ffrindiau cyfrol fod yn y Penawd Cyfrol; dilynir gan y gwybodaeth gyfrol.

Stringiau Cyfaint

Cyfeir. x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF cymeriadau
0x0000 76 6f 6c 69 -- -- -- -- -- -- -- -- -- -- -- -- v o l i . . . . . . . . . . . .
Offest Math Data Enw Esboniad
0x0000 uint(32) Bytes Hudolus
0x0004 uint(24) Hyd y bloc
0x0007 uint(8) Baneri
Cyfeir. x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF cymeriadau
0x0000 76 6f 6c 73 -- -- -- -- -- -- -- -- -- -- -- -- v o l s . . . . . . . . . . . .
Offest Math Data Enw Esboniad
0x0000 uint(32) Bytes Hudolus
0x0004 uint(24) Hyd y bloc
0x0007 uint(8) Baneri
0x0008 uint(32) Hyd y llwyth payload

Yn nodi faint o feiliau yw'r data dilynol yn ddata defnyddiol yn wirioneddol.

Mae'r data sy'n weddill yn y rhestr llinynnau swmp yn amlwg i'w hystyried fel garbage.

Yn y ffeiliau gyda dyddiadau diweddarach, mae'r 'data sy'n weddill' yn 0x00, sy'n awgrymu bod diffygion gyda'r offeryn yn ystod datblygu'r gêm, sef bod datblygwr wedi ymdrin â sefydlu'r byfferau'n gywir yn hwyr iawn, gan nad oes gan hyn unrhyw effaith ar y gêm, p'un ai yw'r data wedi'u sefydlu ai peidio.

0x000c uint(8)[] Rhestr Enwau Ffeiliau

Mae hwn yn restr o enwau ffeiliau a derbyniwyd gyda 0-Byte, sy'n disgwyl dim ond cymeriadau ASCII - o leiaf yn y data presennol.

Nid oes angen i chi ddadansoddi'r data yn fanwl, gan fod y cyfeiriadau i'r enwau ffeiliau yn cael eu cyfeirio'n uniongyrchol yn yr wybodaeth volum.

Mae'r Ffïrau Cyfrol yn rhestr o enwau ffeiliau a gynhelir yn y cyfnod.

Gwybodaeth am y Cyfaint

Cyfeir. x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF cymeriadau
0x0000 76 6f 6c 69 -- -- -- -- -- -- -- -- -- -- -- -- v o l i . . . . . . . . . . . .
Offest Math Data Enw Esboniad
0x0000 uint(32) Bytes Hudolus
0x0004 uint(24) Hyd y bloc
0x0007 uint(8) Baneri

Mae'r gwybodaeth volume yn cynnwys gwybodaeth fanwl am y ffeiliau. Yn rhyw ffordd, mae hyn yn debyg i gofrestr FAT (FAT = Tabl Cyflwyno Ffeiliau)

Mae nifer y ffeiliau yn deillio o'r maint bloc wedi'i rhannu gan hyd y cofrestriadau - 14 Byte.

Mae gan bob cofrestr ffeil y strwythur canlynol:

Cyfeir. x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF cymeriadau
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Offest Math Data Enw Esboniad
0x0000 uint(32) Offset Enw Ffeil

Mae'n nodi pa offset (!) o fewn y rhestr o enwau ffeiliau (Volume-Strings) y gellir dod o hyd i enw'r ffeil.

Mae hyn yn cyfeirio at ddechrau'r bloc data defnydd.

0x0004 uint(32) Offset ffeil

Mae'n nodi ble mae'r ffeil yn y ffeil gyfrol gyfan.

0x0008 uint(32) Maint y ffeil

Mae'n nodi pa mor fawr yw'r ffeil mewn Bytiau.

0x000c uint(16) Banerau?

Mae'n ymddangos bod gwybodaeth ychwanegol am godiad y ffeil ar gael.

  • 0x03 yw wedi'i osod pan fydd y ffeil wedi'i chymysgu. Mae'n ymddangos bod coeden Huffman yn cael ei defnyddio yma.
  • 0x80 yw'n ymddangos i fod bob amser wedi'i osod.

Bloc Cyfrol

Cyfeir. x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF cymeriadau
0x0000 56 42 4c 48 -- -- -- -- -- -- -- -- -- -- -- -- V B L H . . . . . . . . . . . .
Offest Math Data Enw Esboniad
0x0000 uint(32) Bytes Hudolus
0x0004 uint(24) Hyd y bloc
0x0007 uint(8) Baneri

Mae bloc cyfoeth yn gynhwysydd sy'n derbyn ffeiliau. Mae'n cynnwys unwaith eto - oherwydd y fformat bloc - yn ddibynadwy maint y ffeil, ac yna dilynir yn syth gan y data defnyddiol.

Teils

Cyfeir. x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF cymeriadau
0x0000 50 42 4d 50 -- -- -- -- -- -- -- -- -- -- -- -- P B M P . . . . . . . . . . . .
Offest Math Data Enw Esboniad
0x0000 uint(32) Byteau Hudol
0x0004 uint(24) Hyd y bloc
0x0007 uint(8) Baneri

Mae'r tiles yn fformat graffig Bitmap penodol i Outpost-2. Maent yn ymestyn dros 13 sets tile, a elwir yn "wells" (well0000.bmp hyd well0012.bmp), sydd yn y cyfanswm maps.vol.

Mae'r sets tile / Wells yn cynnwys y canlynol:

Enw Ffeil cynnwys
well0000.bmp Gweledigaeth fechan las o 32x32px - yn berffaith fel prawf i weld a yw eich llwythwr delwedd yn gweithio
well0001.bmp Yn cynnwys cerrig golau, mynyddoedd ar gerrig golau a nifer fawr o amrywiadau o graterau trawiad ar gerrig golau
well0002.bmp Yn cynnwys 'Doodads' cerrig golau - hynny yw elfennau a gellir eu rhoi ar gerrig golau i ychwanegu amrywiad (neu'n fwriadol fel strwythur, fel waliau), gan gynnwys vegetatiaeth
well0003.bmp Yn cynnwys strwythur crustog ar gerrig golau
well0004.bmp Yn cynnwys cerrig tywyll, mynyddoedd ar gerrig tywyll a nifer fawr o amrywiadau o graterau trawiad ar gerrig tywyll
well0005.bmp Yn cynnwys 'Doodads' cerrig tywyll - hynny yw elfennau a gellir eu rhoi ar gerrig tywyll i ychwanegu amrywiad (neu'n fwriadol fel strwythur, fel waliau)
well0006.bmp Yn cynnwys strwythur crustog ar gerrig tywyll, yn ogystal â thrawsnewidiadau rhwng cerrig golau a thwyll
well0007.bmp Yn cynnwys lava gan gynnwys 4-5 fframiau animations ohoni
well0008.bmp Yn cynnwys tywod a nifer fawr o amrywiadau o graterau trawiad ar dywod
well0009.bmp Yn cynnwys 'Doodads' tywod - hynny yw elfennau a gellir eu rhoi ar dywod i ychwanegu amrywiad (neu'n fwriadol fel strwythur, fel waliau)
well0010.bmp Yn cynnwys 48 o drawsnewidiadau o dywod i gerrig golau a thwyll
well0011.bmp Yn cynnwys capiau pole'r map, gyda cherrig tywyll fel is-structur
well0012.bmp Yn cynnwys capiau pole'r map, gyda cherrig golau fel is-structur

Ydy hi'n ddoeth peidio â rhaglennu'r tiles ymlaen llaw er mwyn eu cadw, gan fod y data ar gyfer y cylch dydd/nos yn dal i fod yn destun i newid - a byddai llawer iawn o ddata yn cael ei greu.

Dyma'r tiles yn graffeg 8bpp gyda phalet wedi'i ddynodi ar 32x32 pixel, sydd wedi'u trefnu'n gyffyrddus. Fodd bynnag, gallai mwy na hynny fod yn y set deiliau a greawdd.

Mae'r prif dŷ yn cynnwys 2 adran: head a data.

Pennawd Teils

Cyfeir. x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF cymeriadau
0x0000 68 65 61 64 -- -- -- -- -- -- -- -- -- -- -- -- h e a d . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Offest Math Data Enw Esboniad
0x0000 uint(32) Byteau Hudol
0x0004 uint(24) Hyd y bloc
0x0007 uint(8) Baneri
0x0008 uint(32) Fersiwn / Baneri?

Gallai hyn fod yn gyfeirnod fersiwn i'r fformat ffeil; yn yr holl ffeiliau sydd gennyf, roedd y gwerth 0x02 yma.

0x000c uint(32) Lled (Datrys Llinellol)

Mae'n nodi pa mor eang yw'r ffeil ddelwedd (mewn pixelau).

Yn y holl wells yn Outpost 2, bydd y gwerth 0x20 neu 32 yn cael ei ddisgwyl yma.

0x0010 uint(32) Uchder (Datrysiad Ffisegol)

Mae'n nodi pa mor uchel yw'r ffeil ddelwedd (mewn pixel).

Ar gyfer pob pwll yn Outpost 2, bydd y gwerth 0x20 neu 32 yn cael ei ddisgwyl yma.

0x0014 uint(32) Dyfnder lliw?

Mae'r ystyr o'r gwerth hwn yn anhysbys.

Amdanynt yn y ffeiliau a archwiliwyd, mae'n cynnwys y gwerth 8, felly gallai fod yn gyfeiriad at dyfnder lliw.

0x0018 uint(32) Dyfnder lliw 2?

Mae pwysigrwydd y gwerth hwn yn anhysbys.

Mae'n bosibl ei fod yn 'darged' dyfnder lliw.

Ar ôl yr wybodaeth hon, bydd ffeil palet yn y fformat RIFF safonol hefyd ar gael. Mae'r fanwl gywir yn cael ei chanfod - gan fod y paletiau hefyd yn ymddangos yn lleoedd eraill - dan Paletiau.

Data Teils

Cyfeir. x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF cymeriadau
0x0000 64 61 74 61 -- -- -- -- -- -- -- -- -- -- -- -- d a t a . . . . . . . . . . . .
Offest Math Data Enw Esboniad
0x0000 uint(32) Byteau Hudol
0x0004 uint(24) Hyd y bloc
0x0007 uint(8) Baneri

Yn olaf, mae'r data pixel gwag yn dilyn o'r chwith-uchaf yn ôl y llinell i'r dde-isaf.
Mae gwerth y data yn yr elfennau sy'n arferol yn ymddangos fel bitmapiau 8bpp yn cyfateb i'r mynegai o'r lliw yn y paled lliw.

Dechreuodd y data pixel yn y chwith uchaf ac yn gorffen yn y dde isaf.

Mae'r peiriant gêm yn codi'r tiles *mae'n debyg* ar alw.
Mae hyn, ymhlith pethau eraill, yn deillio o'r cylch dydd-nos sydd â 32 graddfa o tiles unigol. Mae'n ymddangos bod 'ychydig' yn cael ei dynnu o'r gwerth disgleirdeb bob tro. Ni chafwyd gwybodaeth fanwl hyd yn hyn, rwy'n gweithio ar y sail gyfrifo

v *= (daylight / 48) + 0.25;

gyda data HSV y pixel, lle mae daylight yn werth rhwng 0-31 ac mae v yn werth rhwng 0-1. Yn ogystal, rhaid ystyried bod ym mhob map, mae cwrthwyneb o 16 tiles ar y chwith a'r dde (sy'n gwasanaethu i ryddhau unedau'n gudd) yn bodoli.

Mynych hefyd, mae'n ymddangos bod y cylch dydd-nos yn diweddaru un colofn o'r map yn unig am bob cylch gêm.
Felly, mae cylch dydd-nos cyflym fel a ganlyn:

Visualiad o'r cylch dydd-nos

PRT

Cyfeir. x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF cymeriadau
0x0000 43 50 41 4c -- -- -- -- -- -- -- -- -- -- -- -- C P A L . . . . . . . . . . . .
Offest Math Data Enw Esboniad
0x0000 uint(32) Bytes Hudolus
0x0004 uint(24) Hydredd y paled

Yn hytrach na'r fformat bloc arferol, mae'n rhoi'r nifer o baletiau sydd i'w dod o hyd yn y ffeil hon - nid hyd y bloc mewn byte.

0x0007 uint(8) Banerau

Mae'n debyg, fel arfer, faner.

Fodd bynnag, ni wyf yn ymwybodol o unrhyw faner; gan fod yr holl werthoedd a wyddof yn cyfateb i 0x00, byddai hefyd yn bosibl bod nifer y paletiau yn syml yn uint(32).

Ar gyfer beth sydd PRT yn sefyll, nid yw'n glir gennyf; gallai fod yn 'Tabl Palet a Chydrannau' - gan mai dyma'r ffeil - a geir fel op2_art.prt yn y maps.vol - sy'n un o'r fath, neu gallai hyn ddisgrifio'r swyddogaeth yn dda.

Mae'r ffeil hon yn cynnwys rhestr o baletiau, tabl o'r holl bitmapiau a ddefnyddir, pob diffiniad animeiddiadau, a nifer o ddata anhysbys. Mae'n dilyn y fformat cynhwysydd presennol yn rhydd, gan nad yw pob cofrestr yn dilyn y cynllun hwn.

Mae'r adran CPAL (sy'n debyg o sefyll am gynhwysydd palet) yn cynnwys dim ond y data palet, gan ddweud faint o'r paletiau 8-bit sy'n fel arfer 1052 Byte sydd ar gael.

Mae'r cyfeiriad 1052-Byte ddim yn cael ei ystyried yn gysylltiedig, gan y gallai fformat y palet gynnwys maint paletiau gwahanol. Mae'n berthnasol dim ond i'r data a roddir gyda Outpost 2.

Ar ôl y rhestrau paletiau, dilynir yn syth ac heb benawd cychwyn, y rhestr o'r bitmapiau; yn yr un modd, dilynir y rhestrau animeiddiadau.
Mae pob un ohonynt yn dechrau gyda uint(32) (neu eto uint24+uint8 baneri?) sy'n cynnwys y nifer o gofrestriadau.

Paletiau

Cyfeir. x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF cymeriadau
0x0000 50 50 41 4c -- -- -- -- -- -- -- -- -- -- -- -- P P A L . . . . . . . . . . . .
Offest Math Data Enw Esboniad
0x0000 uint(32) Bytes Hudol
0x0004 uint(24) Hydred Paledennau

Mae'n rhoi, yn wahanol i'r fformat bloc arferol, y nifer o baledau sydd i'w dod o hyd yn y ffeil hon - nid hyd y bloc yn bytedau.

0x0007 uint(8) Baneri

Mae'n debyg, fel arfer, faner.

Fodd bynnag, does gennyf ddim gwybodaeth am faner; gan mai'r holl werthoedd a adwaenaf yw 0x00, gallai hefyd fod yn bosibl bod nifer y paletiau'n syml yn uint(32).

Mae'r gwybodaeth am blethau yn hawdd iawn i'w darllen.
Maen nhw'n cynnwys penawd a segment data.

Penawd y Paled

Cyfeir. x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF cymeriadau
0x0000 68 65 61 64 -- -- -- -- -- -- -- -- -- -- -- -- h e a d . . . . . . . . . . . .
Offest Math Data Enw Esboniad
0x0000 uint(32) Bytes Hudol
0x0004 uint(24) Hydred Paledennau

Mae'n rhoi, yn wahanol i'r fformat bloc arferol, y nifer o baledau sydd i'w dod o hyd yn y ffeil hon - nid hyd y bloc yn bytedau.

0x0007 uint(8) Baneri

Mae'n debyg, fel arfer, faner.

Fodd bynnag, does gennyf ddim gwybodaeth am faner; gan mai'r holl werthoedd a adwaenaf yw 0x00, gallai hefyd fod yn bosibl bod nifer y paletiau'n syml yn uint(32).

0x0008 uint(32) Fersiwn fformat paled?

Mae'n debyg ei fod yn diffinio pa fersiwn o fformat paled y mae'r paled yn ei dilyn.

Mae'n ymddangos bod pob paled Outpost2 yn berchen ar fersiwn 0x01.

Data Paledau

Cyfeir. x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF cymeriadau
0x0000 64 61 74 61 -- -- -- -- -- -- -- -- -- -- -- -- d a t a . . . . . . . . . . . .
Offest Math Data Enw Esboniad
0x0000 uint(32) Bytes Hudol
0x0004 uint(24) Hyd y Bloc
0x0007 uint(8) Baneri

Mae'r adran ddata yn cofrestru'r cofrestriadau paled unigol. Mae nifer y cofrestriadau paled yn deillio o hyd y bloc / 4.

Mae gan y cofrestriadau unigol y strwythur syml canlynol;

Cyfeir. x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF cymeriadau
0x0000 -- -- -- 04 -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Offest Math Data Enw Esboniad
0x0000 uint(8) Cydran Coch

Mae'n rhoi'r gyfran coch o'r lliw

0x0001 uint(8) Cydran Gwyrdd

Mae'n nodi'r gyfran gelyn o'r lliw

0x0002 uint(8) Cydran las

Mae'n nodi gyfran y glas yn y lliw

0x0003 uint(8) Ddim yn hysbys - Baneri?

Mae'n aneglur beth mae'r gwerth hwn yn ei olygu, gan ei fod yn ymddangos yn sylfaenol 0x04.

O ran y paletiau, dim ond hyn sydd i'w ddweud, mai’r rheolau canlynol sy’n berthnasol i’r paletiau a ddefnyddir ar gyfer animeiddiadau:

  • Mae'r lliw cyntaf bob amser yn dryloyw, waeth beth yw’r gwerth a nodir yno.
  • Mae cofrestriadau'r palet 1-24 yn cael eu hystyried fel lliwiau chwaraewr yn y paletiau 1-8.
    Mae'n aneglur ble mae'r lliwiau eraill, heblaw am chwaraewr 1, yn dod ohonynt.
    Rwy'n amau ​​bod y lliwiau sydd ar ôl wedi'u codio'n galed.

Cyfeirnod Palet

Bitmapiau

Cyfeir. x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF cymeriadau
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Offest Math Data Enw Esboniad
0x0000 uint(32) Lled wedi'i gyfeirio

Mae'n rhoi lled y llinellau data pixel yn y bytnau - gan fod y rhain wedi'u cyfeirio at y ffiniau 4-byt.

Felly mae'n hawdd cyrraedd llinell benodol o'r ddelwedd.

Pam mae'r gwerth hwn yn cael ei gadw'n benodol, er ei fod yn gallu cael ei gyfrifo, yw'n ansicr.
Mae'n bosib mai optimeiddio ar gyfer y cod rendro yw hwn.

0x0004 uint(32) Cyffroi

Mae'n nodi'r offset y llinell gyntaf yn y bitmap

0x0008 uint(32) Uchder

Rhoddwch uchder y delwedd yn pixels

0x000c uint(32) Lled

Mae'n nodi lled y ddelwedd yn picels

0x0010 uint(16) Typ

Mae'n nodi'r math o ddelwedd. Mae'n ymddangos mai masg bit ydyw:

  • 0x04 yn cael ei gosod pan ydy hi'n ddelwedd 1bpp.
  • 0x40 yn cael ei gosod pan ydy hi'n ddelwedd sydd angen gweithredu ffenestri.
0x0012 uint(16) Palet

Diffiniwch pa baled sydd i'w defnyddio o'r ffeil PRT

Mae strwythur data'r ffeil PRT hwn yn nodi sut mae'r bitmaps a ddefnyddir ar gyfer y sprites wedi'u hadeiladu. Mae'r bitmaps hyn yn gwasanaethu fel elfen unigol, y mae nifer ohonynt yn cael eu cysylltu i greu ffrâm animasiwn o sprite.

Mae'r data delwedd penodol yn cuddio yn y op2_art.BMP yn y cyfeiriadur gêm.
Nid yw'n glir pam mae'r ffeil bitmap hon yn cynnwys pennawd RIFF bitmap (mewn mwy neu lai cywir), ond mae'n debyg bod Outpost 2 yn defnyddio APIs system i lwytho'r graffeg, gan fod y pennawd hwn yn cael ei drosglwyddo dros dro a bod y meysydd amrywiol perthnasol yn cael eu gorchuddio.

Mae'r data pixel yn y ffeil BMP ar leoliad Offset + y uint32-offset, y gellir ei ddod o hyd iddo yn y ffeil BMP ar gyfeirnod 0x000A (offset data RIFF-Bitmap), ac mae'n unwaith eto'n cyfateb i drefniant rholio o'r gornel chwith uchaf i'r gornel dde isaf.

Gellir dylunio graffeg 1bpp monocrome fel y gall liw 0 fod yn dryloyw llwyr, tra bod lliw 1 yn du/graig hannertraws, gan fod y graffegau monocrome fel arfer yn cael eu defnyddio ar gyfer cysgodion cerbydau a adeiladau yn yr animasiynau.

gyda hynny, gellir cyfuno nifer o graffegau.

Modiwl preswyl diogel (Plymouth)

Animeiddiadau

Nawr rydym yn dod i gylchfa uchaf y disgyblaethau o fewn fformat data Outpost 2:
Ynddo ef, yr animeiddiadau.

Mae'r rhestrau animeiddiadau'n dechrau gyda phennawd byd-eang, sy'n gwasanaethu'n bennaf ar gyfer gwirio data. Ar ôl hynny, dilynir y diffiniadau animeiddiad penodol, sy'n rhannu'n 3 cham:

  1. Animeiddiad
    Mae animeiddiad yn y lefel uchaf; mae'n cynrychioli animeiddiad uned, adeilad neu 'animeiddiad gronyn' (erchwyn comed, tywydd, ffrwydrad) mewn sefyllfa benodol.
  2. Ffrâm
    Mae ffrâm yn ddelwedd unigol o fewn animeiddiad. Gall animeiddiad gynnwys ffrâm neu fwy.
  3. Isffrâm
    Mae isffrâm yn y wybodaeth am y dylid darlunio bitmap benodol dan gytundebau penodol ar leoliad penodol ffrâm. Gall ffrâm gynnwys isffrâm neu fwy.

Ar ôl hynny, dilynir yn syth y diffiniadau animeiddiad unigol.

Cyfeir. x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF cymeriadau
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Offest Math Data Enw Esboniad
0x0000 uint(32) Nifer o animatio'nau

Faint o setiau data animasi sy'n bodoli

0x0004 uint(32) Nifer y ffrâmiau

Faint fframiau sydd rhaid bod yn gyfanswm

0x0008 uint(32) Nifer o is-frameoedd

Faint subfframiau sydd yn y pen draw i fod ar gael

0x000c uint(32) Nifer o gofrestriadau dewisol

Faint o "gofrestriadau dewisol" sydd ar gael.

Animeiddio

Cyfeir. x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF cymeriadau
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0020 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Offest Math Data Enw Esboniad
0x0000 uint(32) Dihun 1

Gwybodaeth anhysbys

0x0004 uint(32) Bocs Ffin: Chwith

Mae'n nodi dechrau'r chwith (mewn pixel) o'r Bounding Box.

0x0008 uint(32) Fframwaith: Uchaf

Darperth dechrau uchaf y Bounding Box (mewn picseli).

0x000c uint(32) Bocs Ffin: Lled

Mae'n rhoi lled (mewn pixel) y Bounding Box i mewn.

0x0010 uint(32) Ffens Ffrâm: Uwch

Mae'n rhoi uchder (mewn pixel) y Bounding Box ar waith.

0x0014 uint(32) Offset: X

Mae'n nodi canol llorweddol yr animeiddiad

0x0018 uint(32) Offset: Y

Mae'n nodi canol fertigol yr animeiddiad

0x001c uint(32) Anwybyddu 2

Gwybodaeth anhysbys

0x0020 uint(32) Nifer y ffrâmiau

Mae'n nodi faint o ffrâmiau animeiddio sy'n rhan o'r animeiddiad hwn

0x0024 uint(32) Nifer Windows

Mae'n nodi faint o ffenestri i'w defnyddio wrth dynnu

Data'r haen uchaf, yr animeiddiad, yn bennaf ddata rheoli - mae'r Boundingbox yn cyfeirio at gydran y marc ar y cerbyd/adeilad, pan fo'r un hwnnw wedi'i ddewis, ac mae hefyd yn nodi pa ardal sydd i fod yn gellir clicio.

Mae'r offset yn bennaf yn pennu'r "pwynt sero"; y pwynt sy'n gorfod cael ei gyfrifo neu ei dynnu oddi ar gydrannau mewnol y gêm. Gallem hefyd ddweud yn fathemategol: mae'r offset yn cyfeirio yma at origyn y cydran.

Mae'r Windows, fel y mae'r offset, yn cynnwys (yng nghyd-destun pob Window) 4 gwerth uint(32), sy'n nodi ardal sy'n cael ei hystyried fel ymarferol ar gyfer subframes unigol. Ni chaniateir i unrhyw beth gael ei ddarlunio y tu allan i'r Windows, os yw'n briodol ar gyfer y bitmap.

Ffrâm

Cyfeir. x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF cymeriadau
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Offest Math Data Enw Esboniad
0x0000 uint(8) Nifer subframe a thoglo ar gyfer Dewisol 1, 2

Mae'r gwerth hwn yn cynnwys:

  • 0x7F (Masg Bit): Y nifer o isfframiau a ddefnyddir yn y ffrâm hon
  • 0x80: Y gwybodaeth am a ydynt yn bresennol neu beidio, yn ôl dewis 1 a 2
0x0001 uint(8) Anwybydd 1 a Thoggl ar gyfer Opsiynol 3, 4

Mae'r gwerth hwn yn cynnwys:

  • 0x7F (Masg bit): Anhysbys - Mae gennyf amheuaeth gref ei fod yn cyfeirio at nifer y gamticks sy'n mynd heibio cyn i'r ffrâm nesaf gael ei harddangos
  • 0x80: Yr wybodaeth am a oes Rhaglen 3 a 4 ar gael
0x0002 uint(8) Dewisol 1

Dieithr

0x0003 uint(8) Dewisol 2

Dieithr

0x0004 uint(8) Dewisol 3

Dieithr

0x0005 uint(8) Dewisol 4

Dieithr

Israddfa

Cyfeir. x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF cymeriadau
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Offest Math Data Enw Esboniad
0x0000 uint(16) Bitmap-Id

Mae'n nodi pa bitmap i'w defnyddio ar gyfer y subframe hwn

0x0002 uint(8) Dihun 1

Mae'n anwybyddus - fodd bynnag, fe'm rhoddwyd yn gryf i ddeall mai prif flaenoriaeth rendro (Z-Layer) yw hyn.

0x0003 uint(8) Subframe-Id

Mae'n nodi yn pa is-ffram rydym ni'n bod

0x0004 sint(16) Offset - Llorweddol

Mae'n nodi ble yn y ffrâm y dylid lleoli'r isffrâm, neu gyn belled â phylau y dylid symud y bitmap yn llorweddol

0x0006 sint(16) Offset - Fertigol

Mae'n nodi ble yn y ffrâm y dylid gosod y is-ffram, neu faint o blethau i symud y bitmap yn fertigol

Gallwn nawr gydosod ffrâmiau unigol, yn ogystal â chynnal animatio'n llawn, yma'n cael ei ddangos yn enghraifft ar animatio'n gymhleth, y gellir ei chanfod gyda'r Mynegai 500.

Animeiddiad 500

Animation 500 yn dangos sut i ddadlwytho Plymouth-Transporter sydd wedi'i llwytho â metel cyffredin. Mae hyn yn un o'r ychydig animasiynau sy'n defnyddio'r swyddogaeth Windowing.

Felly, gellir cyfuno'r animasiwn cyfan.
Mae yna broblem gyda'r llwytho uchaf, gan nad yw'r bit priodol yn y gwybodaeth graffig wedi'i gosod yma.

Yma mae ychydig mwy o sprites hardd wedi'u hanimeiddio o'r gêm:

Rendering o Animation 500 yn cael ei ddangos

Animation 500 wedi'i gosod yn llwyddiannus

Ffatri Adeiladau Plymouth

Maes Awyr Eden

Canolfan Feddyginiaethol Eden

SCAT

Maes Awyr Plymouth

Easteregg:
Molgiwr Nadolig

Easteregg:
Ddans Ci

Rhyngwyneb Defnyddiwr

Nawr mae angen i ni greu rhyngwyneb defnyddiwr y gêm, sydd wedi'i gynllunio mewn arddull metel wedi'i frwsio.

Ond mae hefyd yn amlwg yma nad oedd Dynamix yn gorfod dyfeisio'r olwyn eto; yma, ni chaiff dim ond yr APIs User32 a GDI32 a gynhelir gan Windows eu defnyddio - yn benodol, mae rheoli adnoddau User32 hefyd yn cael ei ddefnyddio.

Gellir dyfynnu'r rhain er enghraifft drwy raglenni fel Resource Hacker, a ddatblygwyd gan Angus Johnson fel freeware, neu - os ydych chi'n osgoi defnyddio Wine ar Linux / Mac OS - trwyddo'r wrestool sydd i gael yn icoutils.

Enw Ffeil Cynnwys
Outpost2.exe Yn cynnwys yn unig yr eicon o'r gêm, sy'n dangos y gorsaf gofrestru o flaen New Terra
op2shres.dll Yn cynnwys, y tu hwnt i graffeg ar gyfer rheolyddion fel ffiniau, botymau, botymau radio a chasgliadau, gefndiroedd sgwrs, delweddau cyd-fynd ar gyfer y testunau cenhadaeth stori a graffeg gefndir y prif fenyw
out2res.dll Yn cynnwys addurniadau ffenestr yn y gêm, eiconau ar gyfer metel cyffredin a phersonol, y sgrin lwytho, graffeg ar gyfer sgwrsiau yn ogystal â gweithrediadau graffeg cyrchwr, yn ychwanegol at y rhai animedig yn y cyfeiriadur gêm