Fformatau Ffeiliau Outpost 2 · bei.pm
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.
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:
|
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.
|
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 |
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 |
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 |
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 |
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.
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:
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 |
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 |
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 |
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 |
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 |
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.
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. |
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:
|
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.
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:
-
Animeiddiad
Mae animeiddiad yn y lefel uchaf; mae'n cynrychioli animeiddiad uned, adeilad neu 'animeiddiad gronyn' (erchwyn comed, tywydd, ffrwydrad) mewn sefyllfa benodol. -
Ffrâm
Mae ffrâm yn ddelwedd unigol o fewn animeiddiad. Gall animeiddiad gynnwys ffrâm neu fwy. -
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:
|
0x0001 | uint(8) | Anwybydd 1 a Thoggl ar gyfer Opsiynol 3, 4 | Mae'r gwerth hwn yn cynnwys:
|
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:
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 |