Cruthan Fhiosrachadh Outpost 2 · bei.pm

Chaidh an teacsa seo a thionndadh gu fèin-ghluasadach le OpenAI GPT-4o Mini.

Tha na cruthan faidhle air an duilleag seo stèidhichte air anailis theicnigeach air maoin inntleachdail bho Dynamix, Inc. agus Sierra Entertainment.
Tha an maoin inntleachdail a-nis mar phàirt de Activision Publishing, Inc. / Activision Blizzard, Inc. agus tha i an-dràsta fo shealbh Microsoft Corp..

Chaidh na fiosrachadh a chruinneachadh tro Reverse Engineering agus anailis dàta airson adhbharan a’ choimeas agus eadar-obrachadh le dàta eachdraidheil.
Cha deach cleachdadh a dhèanamh de shpeictrean maoin no dìomhair sam bith.

Tha an geama ri fhaighinn an-dràsta airson ceannach mar luchdachadh sìos air gog.com.

Ealaint a' chluiche

Tha an sreath artaigil seo a’ clàradh mo thuigse mu na foirm dachaigh ann an "Outpost 2: Divided Destiny", a chaidh a leigeil ma sgaoil le Sierra ann an 1997 agus a chaidh a thogail le Dynamix.

Thug mi aire do dh'analas air na dàta den chluiche eadar 1 an t-Samhain 2015 agus 14 an t-Samhain 2015, a' toirt seachad mo chuid rannsachaidh.

Às deidh na h-uimhir a fhuair mi, tha e coltach gu bheil Dynamix - mar a tha mòran chompanaidhean malairteach - air cuid de na foirmichean dàta a chruthachadh, chan ann a-mhàin airson Outpost 2, ach cuideachd air an cleachdadh ann an leasachadh eile mar eisimpleir ann an sreath Mechwarrior (air a bhith air atharrachadh).
A bharrachd air sin, faodar cuideachd a ràdh gu bheil cumhachd na h-innleachdas a tha ann am foirmichean dàta gu bhith gu math cuingealaichte agus gu bheil e tric air a thogail air bun-bheachdan a tha ann mu thràth bho fhòraman àbhaisteach mar JFIF agus RIFF.

Tha fiosrachadh eile airson eadar-theangachadh nan clàran agus foirmichean dàta ri fhaighinn fo Dè tha ann?.
Tha na dàta a tha air an toirt seachad an seo gu h-iomlan mar Little Endian.

Aig an deireadh, faodaidh mi a ràdh gu bheil an inneal ath-thogail air a bhith gu math inntinneach, eadhon ged nach eil e coileanta.
Gu dearbh, tha mi a' moladh cuideachd gun cluich thu fhèin an cluiche, leis gu bheil e a' tabhann meacanaig chluich inntinneach.

Ro-ràdh

Tha na cruthan dàta a thathar a' cleachdadh ann an Outpost 2 coltach ri JFIF / PNG - tha na blocaichean dàta fa leth an-còmhnaidh le cinn-uidhe 8 byte. Mar sin, tha mi a' cumail às do bhith a' sgrìobhadh a h-uile cinn-uidhe aig na freagairtean freagairteach agus dìreach a' clàradh na h-eadar-dhealachaidhean.

Tha an cruth an-còmhnaidh mar a leanas; tha na dàta feumail fhèin ann an sin air an cur a-steach:

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Rudachadh Seòrsa Dàta Ainm Mìneachadh
0x0000 uint(32) Bytean Draoidheil

Tha an fhiosrachadh gu h-àrd a' toirt seachad mion-fhiosrachadh mu na tha ri fhaicinn anns a' bhloc dàta a tha romhainn.

Luachan aithnichte:

  • 0x204C4F56 ('VOL '):
    Cruinneachadh
  • 0x686C6F76 ('VOLH'):
    Crìoch-lìon
  • 0x736C6F76 ('VOLS'):
    Strìngan Cruinneachaidh
  • 0x696C6F76 ('VOLI'):
    Fiosrachadh mu Chrìoch
  • 0x4B4C4256 ('BLCK'):
    Bloc Cruinneachaidh
  • 0x504D4250 ('PBMP'):
    Dàta grafaigeach
  • 0x4C415050 ('PPAL'):
    Palet dath
  • 0x4C415043 ('CPAL'):
    Container paletan dath
  • 0x64616568 ('head'):
    Crìoch
  • 0x61746164 ('data'):
    Dàta feumail
0x0004 uint(24) Fad an bloca

Tha an fhiosrachadh ann mu dheidhinn cho mòr (ann an Bytean) 's a tha an bloca dàta a leanas.

Tha na h-àrd-dhàta fìor a' ciallachadh - chan eil na 8 Byte àrd-dhàta anns an àireamh seo.

0x0007 uint(8) Brataichean?

Chan eil fhios dè cho cudromach 's a tha an bloc seo.

San t-sreath tha an luach seo gu tric 0x80, ann an faidhlichean eile tha e gu tric 0x00. Tha seo a' moladh gu bheil e na shuidheachadh bratach.

Tomhaichean

Tha na Volumes mar dhàta-container airson a' gheama, coltach ri cruth-archive mar eisimpleir Tarball. Aig a' phunt as lugha ann an Outpost 2, tha an cruth a' gabhail a-steach faidhlichean - chan eil e a' gabhail a-steach pasgain. 'S e coltas gu bheil e comasach na pasgain sin a chur air dòigh tro na h-ainmean faidhle freagairteach.

Tha Volume a' gabhail a-steach a' cheannard Volume agus grunn bhlocan Volume, a tha freagairteach do na faidhlichean sònraichte.

'Bha "Volumes" na faidhlichean le crìoch 'vol' anns a' phasgan gheama.

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 56 4f 4c 20 -- -- -- -- -- -- -- -- -- -- -- -- V O L . . . . . . . . . . . .
Rudachadh Seòrsa Dàta Ainm Mìneachadh
0x0000 uint(32) Bitàichean Draoidheil
0x0004 uint(24) Fad a' bhloc
0x0007 uint(8) Brataichean

Ceann-latha a' mhodh

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 76 6f 6c 68 -- -- -- -- -- -- -- -- -- -- -- -- v o l h . . . . . . . . . . . .
Rudachadh Seòrsa Dàta Ainm Mìneachadh
0x0000 uint(32) Bitàichean Draoidheil
0x0004 uint(24) Fad a' bhloc
0x0007 uint(8) Brataichean

Tha am Pàipear Volume a' toirt seachad nach eil duilleagan fiosrachadh sam bith.
Tha e a' frithealadh mar choimeas.

Mar a' chiad dhàta anns a' Phàipear Volume, bu chòir na sreathan Volume a bhith ann; bidh fiosrachadh mu dheidhinn an Volume a' tighinn às deidh sin.

Strìon Tùs

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 76 6f 6c 69 -- -- -- -- -- -- -- -- -- -- -- -- v o l i . . . . . . . . . . . .
Rudachadh Seòrsa Dàta Ainm Mìneachadh
0x0000 uint(32) Bitàichean Draoidheil
0x0004 uint(24) Fad a' bhloc
0x0007 uint(8) Brataichean
Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 76 6f 6c 73 -- -- -- -- -- -- -- -- -- -- -- -- v o l s . . . . . . . . . . . .
Rudachadh Seòrsa Dàta Ainm Mìneachadh
0x0000 uint(32) Bitàichean Draoidheil
0x0004 uint(24) Fad a' bhloc
0x0007 uint(8) Brataichean
0x0008 uint(32) Fhad an luchd-puist

Seallaidh e dè an àireamh de bhitean a tha fìor-ùs aig na dàta a leanas.

Tha na dàta a tha air fhàgail ann an liosta na h-ìomhaighean coltach ris a bhith mar sgudail.

Ann an faidhlichean le ceann-latha nas fhaide air adhart, tha na 'dàta a tha air fhàgail' 0x00, a dh’ fhaodadh a bhith a’ nochdadh eas-bhuannachdan le innealan fàs rè leasachaidh na geama, a’ ciallachadh gu bheil e coltach gu robh neach-leasachaidh a’ dèiligeadh ris an tobar gu ceart ro dheireadh, oir chan eil buaidh aig a’ ghrèin air an geama ma tha na dàta air an tobar no nach eil.

0x000c uint(8)[] Liosta Ainm-Fhiosrachadh

Tha seo na liosta de dh'ainmean-fhàil 0-byte-terminichte, a tha - as lugha anns an stuth dàta a tha rim faighinn - a' freagair ri caractaran ASCII a-mhàin.

Chan eil feum air an dàta seo a sgrìobadh nas mionaidiche nuair a tha sinn a' parseadh na dàta, oir tha na h-inneach-tionnsgain den ainmean-fhàil air an toirt a-steach gu dìreach anns na freagairtean tomhas.

Tha na Slatan-tomhais Volume nan ainm-fhògar a tha ann an liosta de fhìor ainmichean faidhle a tha anns an t-seilbh.

Fiosrachadh mu Thomhas

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 76 6f 6c 69 -- -- -- -- -- -- -- -- -- -- -- -- v o l i . . . . . . . . . . . .
Rudachadh Seòrsa Dàta Ainm Mìneachadh
0x0000 uint(32) Bitàichean Draoidheil
0x0004 uint(24) Fad a' bhloc
0x0007 uint(8) Brataichean

Tha na h-innealan fiosrachadh mu dheidhinn na h-eagran a’ toirt a-steach fiosrachadh nas mionaidiche mu na faidhlichean. Tha seo na sheòrsa de dh’inntrigidh chlàr FAT (FAT = Clàr Freagairtean Fhaidhle).

Tha àireamh na faidhlichean a’ tighinn bho mheud a’ bhoc a’ roinn le fad na h-inntrigidh chlàraidh - 14 byte.

Tha structar gach inntrigidh chlàraidh a’ coimhead mar seo:

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Rudachadh Seòrsa Dàta Ainm Mìneachadh
0x0000 uint(32) Àireamh freagairtean faidhle

Tha e a' comharrachadh an àite (!) taobh a-staigh an liosta ainm-fhògradh (sruthan tomhais) far a bheil ainm a' faidhle a' freagairt.

Tha seo a' freagairt ri toiseach a' bhloc fiosrachaidh.

0x0004 uint(32) Offset faidhle

Tha e ag innse dè an àite a tha am faidhle a' freagairt ann an iomall an fhàilidhean iomlan.

0x0008 uint(32) Meud faidhle

Seallaidh e dè cho mòr 'sa tha an faidhle ann am bytean.

0x000c uint(16) Brataichean?

Tha e coltach gu bheil fiosrachadh a bharrachd mu chòdachadh faidhle ann.

  • 0x03 air a shuidheachadh nuair a tha an faidhle comprimte. Tha coltas ann gu bheil cruth-huffman air a chleachdadh an seo.
  • 0x80 tha e coltach gu bheil e air a shuidheachadh an-còmhnaidh.

Bloc Volume

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 56 42 4c 48 -- -- -- -- -- -- -- -- -- -- -- -- V B L H . . . . . . . . . . . .
Rudachadh Seòrsa Dàta Ainm Mìneachadh
0x0000 uint(32) Bitàichean Draoidheil
0x0004 uint(24) Fad a' bhloc
0x0007 uint(8) Brataichean

Tha bloc voluma na chontair a tha a' cumail faidhlichean. Tha e a' toirt a-steach a' mheud faidhle a-rithist - airson cruth a' bhloc - ann an dòigh ro-lùbte, agus às deidh sin tha na dàta cleachdaidh a' tighinn dìreach às deidh sin.

Bileagan

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 50 42 4d 50 -- -- -- -- -- -- -- -- -- -- -- -- P B M P . . . . . . . . . . . .
Rudachadh Seòrsa Dàta Ainm Mìneachadh
0x0000 uint(32) Bitean Magadha
0x0004 uint(24) Fad a' bhloc.
0x0007 uint(8) Brataichean

Tha na Tiles na fhòirneart sònraichte airson Outpost-2, format grafaige Bitmap. Tha iad a’ leudachadh thairis air 13 Tilesets, ris an canar “wells” (well0000.bmp gu well0012.bmp), a tha a-staigh maps.vol.

Tha na Tilesets / Wells a’ toirt a-steach na leanas:

Àireamh-fhìrinn Susbaint
well0000.bmp Grafaig gorm 32x32px - freagairtean math airson deuchainn a dhèanamh ma thèid am freagairtean ìomhaigh agad a chleachdadh
well0001.bmp Tha e a' toirt a-steach creag shoilleir, slighean beanntan air creag shoilleir agus àireamh mhòr de sheòrsaichean de phuingean buaidh ann an creag shoilleir
well0002.bmp Tha 'Doodads' creag shoilleir ann - freagairtean a ghabhas cur air creag shoilleir airson sgaoileadh (no mar structar, leithid ballaichean), a' gabhail a-steach feur
well0003.bmp Tha structar crusta ann air creag shoilleir
well0004.bmp Tha e a' toirt a-steach creag dhorcha, slighean beanntan air creag dhorcha agus àireamh mhòr de sheòrsaichean de phuingean buaidh ann an creag dhorcha
well0005.bmp Tha 'Doodads' creag dhorcha ann - freagairtean a ghabhas cur air creag dhorcha airson sgaoileadh (no mar structar, leithid ballaichean)
well0006.bmp Tha structar crusta ann air creag dhorcha, agus cuideachd atharrachaidhean eadar creag shoilleir agus creag dhorcha
well0007.bmp Tha lava ann, a' toirt a-steach 4-5 freagairtean animation
well0008.bmp Tha gainmheach ann agus àireamh mhòr de sheòrsaichean de phuingean buaidh ann an gainmheach
well0009.bmp Tha 'Doodads' gainmheach ann - freagairtean a ghabhas cur air gainmheach airson sgaoileadh (no mar structar, leithid ballaichean)
well0010.bmp Tha 48 atharrachaidhean de gainmheach gu creag shoilleir agus creag dhorcha ann
well0011.bmp Tha a' chàrn an polar air a' mhapa, le creag dhorcha mar bhunait
well0012.bmp Tha a' chàrn an polar air a' mhapa, le creag shoilleir mar bhunait

Is eòlach gu bheil e freagairteach airson cur an gnìomh ceart, nach cuir na Tileannan an roimhe seo gus am bi iad air am cacheadh, leis gu bheil feum air an dàta airson an t-sreath latha/oidhche a phròiseasadh - agus bheireadh sin mòran mòran dàta.

Tha na Tileannan nan grafaigean 8bpp le palas indexte le fuasglaidhean de 32x32 piogsail, a tha air an cur ri chèile. Ach ann an seata Tile a chaidh a chruthachadh mar sin, faodaidh barrachd gu mòr a bhith ann.

Tha am prìomh-thuairisgeul a’ toirt a-steach 2 earrannan: head agus data.

Ceann na h-uisge

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 68 65 61 64 -- -- -- -- -- -- -- -- -- -- -- -- h e a d . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Rudachadh Seòrsa Dàta Ainm Mìneachadh
0x0000 uint(32) Bitean Magadha
0x0004 uint(24) Fad a' bhloc.
0x0007 uint(8) Brataichean
0x0008 uint(32) Versan / Bratach?

Fàilte, dh'fhaodadh seo a bhith na chomharra air dreach an fhòrmata faidhle; ann an na faidhlichean uile a tha agam, bha an luach 0x02 an seo.

0x000c uint(32) Leud (Fhad an t-sràid)

Innsear mar choitcheann a tha leud na faidhle ìomhaigh (ann an pixelan).

Airson a h-uile Wells ann an Outpost 2, feumaidh an luach 0x20 no 32 a bhith an seo.

0x0010 uint(32) Àirde (Fhuasgladh dìreach)

Seallaidh e ciamar a tha àirde na faidhle dhealbh (ann am pixels).

Airson a h-uile Wells ann an Outpost 2, bu chòir don luach 0x20 no 32 a bhith a’ freagairt an-seo.

0x0014 uint(32) Doimhneachd dath?

Chan eil fiosrachadh aig an luach seo.

Leis gu bheil an luach 8 aige ann an gach faidhle a chaidh a sgrùdadh, dh'fhaodadh gu bheil e na chomharra air doimhneachd dath.

0x0018 uint(32) Doimhneachd dath 2?

Tha brìgh an luach seo gun fhios.

Is dòcha gur e 'domhan'-dath domhainn a th' ann.

Às dèidh na freagairtean sin, thèid faileas pàilleat ann an cruth RIFF àbhaisteach a thoirt seachad. Gheibhear an sònrachadh mionaideach - leis gu bheil na pailtean a' nochdadh ann an àiteachan eile - fon Pailtean.

Dàta na Freagairtean

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 64 61 74 61 -- -- -- -- -- -- -- -- -- -- -- -- d a t a . . . . . . . . . . . .
Rudachadh Seòrsa Dàta Ainm Mìneachadh
0x0000 uint(32) Bitean Magadha
0x0004 uint(24) Fad a' bhloc.
0x0007 uint(8) Brataichean

Mu dheireadh thall, tha na freagairtean pixeldhàta a' tighinn ann an sreath, bho shìos gu h-àrd gu clì gu deas.
Tha luachan an dàta anns na grafaigean a tha mar as trice ann an cruth 8bpp-Bitmaps freagairteach don innleachd a tha anns a' phalait dath.

Tha na freagairtean pixeldhàta a' tòiseachadh aig a' bhonn chlì agus a' crìochnachadh aig a' bhonn deas.

Tha an einnsean geama a’ clàradh na h-àrdachaidhean *gabh mo chreideas* nuair a thèid iarraidh.
Cleachdadh seo, am measg rudan eile, mar thoradh air an t-sreath latha agus oidhche, a tha 32 freagairtean de na h-àrdachaidhean fa leth. Tha coltas gu bheil 'beagan' air a thogail bhon luach soilleireachd. Cha robh luachan mionaideach air an stèidheachadh fhathast, tha mi ag obair air an stèidh chruinne.

v *= (daylight / 48) + 0.25;

a rèir an dàta HSV de na pixilean, far a bheil daylight na luach eadar 0-31 agus tha v na luach eadar 0-1. A bharrachd air sin, bu chòir a bhith faiceallach gu bheil ann an cleachdadh na mapa, tha 16 h-àrdachaidhean air an taobh clì agus deas (a bhios a’ frithealadh air spèis dhearbhte airson a’ chlò-bhualadh de aonadan) ann.

A bharrachd air an sin, tha coltas gu bheil an t-sreath latha agus oidhche a’ freagairt air a’ mhapa aig gach geama-cykl.
Mar sin, tha an t-sreath latha agus oidhche leasaichte a’ coimhead mar a leanas:

Sealladh air an t-sreath latha agus oidhche

PRT

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 43 50 41 4c -- -- -- -- -- -- -- -- -- -- -- -- C P A L . . . . . . . . . . . .
Rudachadh Seòrsa Dàta Ainm Mìneachadh
0x0000 uint(32) Bailtean Magic
0x0004 uint(24) Fad na palet.

Thoir, an àite an cruth bloigh àbhaisteach, an àireamh de phalatan a lorgar anns an fhaidhle seo - chan e an fhada de'n bhloigh ann am bytean.

0x0007 uint(8) Bratachagan

Faodar, mar a tha e àbhaisteach, brataichean.

Chan eil mi eòlach air brataichean sam bith; leis gu bheil a h-uile luach a tha aithnichte dhomh freagairtean 0x00, bhiodh e cuideachd comasach gu bheil an àireamh de phalettes dìreach na uint(32).

Chan eil fhios agam dè tha PRT gu sònraichte a’ ciallachadh; dh’fhaodadh e a bhith mar eisimpleir 'Table Palette agus Resource' - oir is e seo am faidhle - a lorgar mar op2_art.prt anns a’ maps.vol - a tha na sheòrsa, no dh’fhaodadh seo a bhith a’ tuairisgeul gu math air an fhiontar.

Tha an faidhle seo a’ toirt a-steach liosta de phalettes, clàr mu na bitmaps uile a thathar a’ cleachdadh, na h-ainmean-gnìomh agus sreath de dh’fhaighinn neo-aithnichte. Bidh e a’ leantainn an cruth container roimhe gu h-ionnann, oir chan eil na clàran uile a’ leantainn an scheama seo.

Tha an roinn CPAL (a’ comharrachadh coltas airson 'Container Palette') a’ toirt a-steach na dachaigh palette a-mhàin, le bhith ag innse dè na 1052 Byte 8-bit palettes a th’ ann.

Chan eil an sealladh 1052 Byte seo mar shònrachadh dligheach, leis gu bheil an cruth palette ag iarraidh meudan palette eadar-dhealaichte. Tha e dìreach freagairteach do na dàta ris a bheil Outpost 2 air a lìbhrigeadh.

Às deidh na liostaichean palette, tha an liosta de na bitmaps a’ tighinn gu dìreach agus gun cheann-latha ro-làimh; tha na liostaichean gnìomh cuideachd a’ tighinn dìreach às deidh sin.
Tha gach fear air a thòiseachadh le uint(32) (no a-rithist uint24+uint8 flags?) a tha a’ toirt a-steach an àireamh de chlàran.

Pailtean

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 50 50 41 4c -- -- -- -- -- -- -- -- -- -- -- -- P P A L . . . . . . . . . . . .
Rudachadh Seòrsa Dàta Ainm Mìneachadh
0x0000 uint(32) Bytes Magic
0x0004 uint(24) Fad na palainne

Thoir, an àite an cruth bloic àbhaisteach, an àireamh de phaleti a th' ann an seo faidhle - cha not an fhaid a tha san bloc ann an bytean.

0x0007 uint(8) Brataichean

Seadh, coltach ris a' ghnàth, brataichean.

Chan eil fhios agam air brataichean sam bith; leis gu bheil na luachan a tha fhios agam uile a' freagairt ri 0x00, dh'fhaodadh e cuideachd a bhith na dh'fhaodadh gum biodh an àireamh palatan dìreach na uint(32).

Tha na fiosrachadh mu phalainnean gu math furasta a leughadh.
Tha iad air an dhèanamh suas de cheann agus earrann dàta.

Ceann Palatain

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 68 65 61 64 -- -- -- -- -- -- -- -- -- -- -- -- h e a d . . . . . . . . . . . .
Rudachadh Seòrsa Dàta Ainm Mìneachadh
0x0000 uint(32) Bytes Magic
0x0004 uint(24) Fad na palainne

Thoir, an àite an cruth bloic àbhaisteach, an àireamh de phaleti a th' ann an seo faidhle - cha not an fhaid a tha san bloc ann an bytean.

0x0007 uint(8) Brataichean

Seadh, coltach ris a' ghnàth, brataichean.

Chan eil fhios agam air brataichean sam bith; leis gu bheil na luachan a tha fhios agam uile a' freagairt ri 0x00, dh'fhaodadh e cuideachd a bhith na dh'fhaodadh gum biodh an àireamh palatan dìreach na uint(32).

0x0008 uint(32) Versan de phalletean?

Tha e coltach gu bheil e a' mìneachadh dè an versan de dh'fhoirmtean palatan a tha a' leantainn na palatan.

Tha a h-uile palatan Outpost2 a' nochdadh gu bheil versan 0x01 aca.

Fiosrachadh air Pailtean

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 64 61 74 61 -- -- -- -- -- -- -- -- -- -- -- -- d a t a . . . . . . . . . . . .
Rudachadh Seòrsa Dàta Ainm Mìneachadh
0x0000 uint(32) Bytes Magic
0x0004 uint(24) Fhad an blocaidh
0x0007 uint(8) Brataichean

Tha an roinn dàta a' gabhail a-steach na h-inntrigeadh pallet fa leth. Tha an àireamh de na h-inntrigeadh pallet a' tighinn bho fhada a' bhocsa / 4.

Tha na h-inntrigeadh fa leth a' faighinn an structar sìmplidh seo;

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 -- -- -- 04 -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Rudachadh Seòrsa Dàta Ainm Mìneachadh
0x0000 uint(8) Comhphàirt dearg

Tha e a' toirt seachad an caogad dearg den dath

0x0001 uint(8) Comh-phàirt ghlas

Tha e a' toirt comas do phàirt uaine na dath a chomharrachadh

0x0002 uint(8) Gné gorm

Tha e a' nochdadh an guth gorm den dath

0x0003 uint(8) Gun fhios - Bratach?

Tha e do-chreidsinneach dè tha an luach seo a’ ciallachadh, oir tha e coltach gu bheil e bunasach 0x04.

Mu na palet, tha e furasta a ràdh, gu bheil na riaghailtean a leanas a’ freagairt air na palet a tha air an cleachdadh airson animation:

  • Tha a’ chiad dhath ALBAIDHEAGH, ge bith dè an luach a tha air a thoirt seachad an sin.
  • Tha na h-inntrighean palet 1-24 a’ freagairt ri dath an t-se player 1-8.
    Cha bhith mi soilleir mu far a bheil na dathannan a’ tighinn bho na cluicheadairean eile, ach tha mi a’ freagairt gu bheil na dathannan eile air an cruthachadh gu cruaidh.

Freagairtean Palet

Bith-mapaichean

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Rudachadh Seòrsa Dàta Ainm Mìneachadh
0x0000 uint(32) Leud Còmhnard

Tha e a' toirt seachad leud na loidhnichean dàta pixele ann an Byte - leis gu bheil iad freagairteach do chrìochan 4-Byte.

Mar sin, tha e furasta a bhith comasach air loidhne shònraichte de dhealbhaidhean a thaghadh.

Carson a tha an luach seo air a stòradh gu h-eachdraidheach, ged a dh’fhaodadh e a bhith air a thomhas, tha e mì-thuigsinn.
Is dòcha gu bheil e na dhòigh-leasachaidh airson a’ chòd freagairte.

0x0004 uint(32) Fàilligeadh

Tha e a' comharrachadh an àite àireamh a' chiad loidhne anns a' bhit-mapa

0x0008 uint(32) Àrdachd

Thoir a-steach àirde a' bhìdeil ann am pixelan

0x000c uint(32) Leud

Thoir seachad leud na h-ìomhaigh ann an pixel

0x0010 uint(16) Seòrsa

Thoir cunntas air seòrsa na h-àrd-chruth. Tha e coltach gu bheil e na bitmasg:

  • 0x04 air a shuidheachadh ma tha e na dhreach 1bpp.
  • 0x40 air a shuidheachadh ma tha e na dhealbhaiche a dh'fheumas windowing a dhèanamh.
0x0012 uint(16) Palette

Déanaibh cinnteach dè an palette a bu chòir a chleachdadh bhon faidhle PRT

Tha structar dàta na faidhle PRT a’ mìneachadh mar a tha na bitmaps a thathar a’ cleachdadh airson na sprites air an togail. Tha na bitmaps sin mar phàirt aon, às an tig mòran còmhla gu freagairtean animachaidh de sprite.

Tha na dàta ìomhaigh sònraichte a’ fhalach anns a’ op2_art.BMP anns an eòlas-cluiche.
Carson a tha an faidhle bitmap seo a’ freagairt ri ceann-tòiseachaidh RIFF bitmap (a tha gu h-ìosal ceart), tha e duilich a thuigsinn. Is dòcha gu bheil Outpost 2 a’ cleachdadh APIan siostam gus na grafaigean a luchdadh, le bhith a’ gabhail a-steach an ceann-tòiseachaidh seo gu h-ùineach agus a’ toirt a-steach na raointean freagairteach a tha ag atharrachadh.

Tha na dàta piogsail ri fhaighinn sa BMP aig an àite Offset + an uint32-Offset, a th’ ann an BMP aig seòladh 0x000A (dàta RIFF-Bitmap offset), agus tha e a’ freagairt ris an t-sreath a tha air a shònrachadh bhon àirde gu h-àrd gu deas gu h-ìosal.

Tha grafaigean monochrome 1bpp air an tarraing mar as urrainn, gur e dath 0 a tha freagairteach gu làn sholas, agus dath 1 a tha na dhath dubh/grey leth-thrèigidh, leis gu bheil na grafaigean monochrome a’ cleachdadh gu h-àbhaisteach airson duilleagan freagairteach do chàraichean agus togalaichean anns na freagairtean.

Gus seo a dhèanamh, faodaidh tu mòran grafaigean a chur còmhla mu thràth.

Modul taighe a tha fo dhìon (Plymouth)

Freagairtean

A-nis tha sinn a' tighinn gu clas rìoghail nan disciplínn a-staigh foirmtean dàta Outpost 2:
Na h-animachdan.

Thèid liostaichean nan animachdan a thòiseachadh le ceann-uidhe cruinne, a tha gu h-ìoranta airson dearbhadh dàta. Às dèidh sin, thig na mìneachaidhean animachdan sònraichte, a tha air an roinn ann an 3 ìrean:

  1. Animation
    Is e animachadh an ìre as àirde; tha e a' riochdachadh animachd aonad, togalaich no 'animachd phàirteach' (duilgheadas comataidh, aimsir, patadh) ann an suidheachadh sònraichte.
  2. Frame
    Is e frame aon dhealbh a-staigh animachd. Faodaidh animachd aon no barrachd freumhan a bhith ann.
  3. Subframe
    Is e subframe an fhiosrachadh mu dheidhinn gu bheil bitmap sònraichte air a tharraing gu àite sònraichte freumh. Faodaidh freumh aon no barrachd subfreumhan a bhith ann.

Às dèidh sin, thig na mìneachaidhean animachdan fa leth.

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Rudachadh Seòrsa Dàta Ainm Mìneachadh
0x0000 uint(32) Àireamh nan freagairtean

Fiosrachadh mu dheidhinn dè an àireamh de shuaicheantasan animation a tha ann

0x0004 uint(32) Àireamh freagairtean

Cia mheud freumh a bu chòir a bhith ann gu h-iomlan

0x0008 uint(32) Àireamh subframes

Ciamar a bu chòir gum bi àireamh iomlan de subframes ann

0x000c uint(32) Àireamh nan roghainnean roghnaichte

Àireamh de "thachartasan roghnaichte" a tha ann.

Freagairtean

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0020 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Rudachadh Seòrsa Dàta Ainm Mìneachadh
0x0000 uint(32) Ainmichte 1

Fiosrachadh neo-eòlaichte

0x0004 uint(32) Bocsa Frèam: Ceanglaichean

Tha e a' comharrachadh toiseach na Bounding Box (ann am piogsain) air an taobh chlì.

0x0008 uint(32) Caibideil: Àrd

Thoir cunntas air an toiseach àrd (ann am piogsan) den Bounding Box.

0x000c uint(32) Bann Gèar: Leud

Tha e a’ toirt seachad leud (ann am picteil) na Bounding Box.

0x0010 uint(32) Bho chùl a' bhogsa: Àrdachd

Tha e a’ sealltainn àirde (ann an Pixel) na Bounding Box.

0x0014 uint(32) Offset: X

Seallaidh e meadhan chorr an fheachdachaidh

0x0018 uint(32) Offset: Y

Tha e a' cur an cèill mheadhan na h-èiginn sa chionn.

0x001c uint(32) Neo-ainmichte 2

Fiosrachadh neo-eòlach

0x0020 uint(32) Àireamh freagairtean

Freagair ciamar a tha uimhir de frèamannan gnìomhachaidh anns an animation seo

0x0024 uint(32) Àireamh Windows

Innse dha, dè na h-uinneagan a bu chòir a bhith air an cleachdadh nuair a tha thu a' peantadh

Tha dàta na h-àrd-sheallaidh, an t-animachadh, mar sin na dàta rianachd eadar-nàiseanta - tha Boundingbox a' comharrachadh na co-òrdanachdan na comharra timcheall air an vehicle/toiseach, nuair a thèid a thaghadh agus tha e cuideachd a' sealltainn dè na raointean a bu chòir a bhith freagairteach.

Tha an Offset a' comharrachadh gu h-àraidh an "àrdachadh"; an pùnt a tha ri cur ris no a thogail air co-òrdanachdan na geama. Faodar a ràdh cuideachd ann an dòigh matamataigeach: tha an Offset a' comharrachadh an tùs co-òrdanachdan an seo.

Tha na Windows, mar an Offset, a' gabhail a-steach 4 uint(32)-luach gach Window, a tha a' comharrachadh raon a tha freagairteach airson subframes fa leth. A-muigh às na Windows, ma tha sin freagairteach airson an Bitmap, chan fhaodar a bhith a' peantadh.

Frèam

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Rudachadh Seòrsa Dàta Ainm Mìneachadh
0x0000 uint(8) Àireamh subframe agus Toggle airson Roghainn 1, 2

Tha an luach seo a' toirt a-steach:

  • 0x7F (Bitmasg): An àireamh de subframes a th' ann an-dràsta san fhreagair
  • 0x80: An fhiosrachadh mu dheidhinn a bheil Optional 1 agus 2 ann
0x0001 uint(8) Neon 1 agus Togail airson Roghail 3, 4

Tha an luach seo a' toirt a-steach:

  • 0x7F (Bitmaske): Neo-eòlaichte - Tha mi a' creidsinn gu làidir gur e seo an àireamh de Gameticks a thachras, gus am bi an ath freagairtean air an sealltainn
  • 0x80: Am fiosrachadh mu dheidhinn a bheil Optional 3 agus 4 ann
0x0002 uint(8) Roghainn 1

Neo-eòlach

0x0003 uint(8) Roghainneil 2

Neo-eòlach

0x0004 uint(8) Roghainn 3

Neo-eòlach

0x0005 uint(8) Roghainn 4

Neo-eòlach

Fo-frame

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Rudachadh Seòrsa Dàta Ainm Mìneachadh
0x0000 uint(16) Bitmap-ID

Seallaidh e dè an bitmap a dh’fhaodas a bhith air a chleachdadh airson an subframe seo

0x0002 uint(8) Ainmichte 1

Tha e neo-eòlaichte - ach tha mi a' freagairt gu làidir gu bheil e mu dheidhinn prìomhachd render (Z-Layer).

0x0003 uint(8) Subframe-Id

Seallaidh e càite a bheil sinn anns an subframe

0x0004 sint(16) Offset - Ceàrnagach

Seallaidh e far a bheil an subframe freagairte ann an frame, no dè cho fada 's a bu chòir an bitmap a ghluasad gu h-horizontach ann an puingean.

0x0006 sint(16) Offset - Crochadh dìreach

Innsaich far a bheil an subframe ri chur a-steach taobh a-staigh an freagairte, no cia mheud piogsan a dh'fheumas an bitmap a ghluasad gu vertical.

Mar sin, faodaidh sinn a-nis freagairtean fa leth, a thig còmhla le gèamannan slàn, a chuir ri chèile, agus seo mar eisimpleir air gèamann nas toinnte, an gèam le an t-innleachd 500, air a thaisbeanadh.

Freagairt 500

Tha an Animation 500 a' sealltainn mar a thèid càr-giùlain Plymouth, a tha freagairte gu àbhaisteach, a chur às. 'S e seo aon de na beagan animations a tha a' cleachdadh an gnìomh Windowing.

Agus mar sin, faodar an animation gu lèir a chur còmhla.
Gu mì-fhortanach, tha duilgheadas ann fhathast le an uinneag càradh, oir chan eil an bit freagairteach suidhichte ann an an fiosrachadh seòrsa gràfhig.

Seo beagan eile, air a' chluich, a tha air an dealbhachadh gu brèagha:

Tha an Rendering de Animation 500 a' sealltainn

Animation 500 deiseil air a chur còmhla

Factara Plymouth

Port-fhallain Eden

Centre meidigeach Eden

SCAT

Port-fhallain Plymouth

Easteregg:
Naomh Nollaig

Easteregg:
Cù Dans

Freagairtean Cleachdaiche

A-nis tha an eadar-aghaidh cleachdaiche den gheama air fhàgail, a tha air a chumail ann an stoidhle meatailt brushed.

Ach tha e soilleir cuideachd gu bheil Dynamix nach robh feum aige an roth a dhèanamh a-rithist; chan eil e dìreach a' cleachdadh na h-API User32 agus GDI32 a thèid seachad le Windows - gu h-àraidh, tha e cuideachd a' cleachdadh riaghladh ghoireasan User32.

Faodar sin a thoirt a-mach, mar eisimpleir, tro phrògraman mar an Resource Hacker a chaidh a thoirt a-mach le Angus Johnson mar Freeware, no - ma tha feum air Wine fo Linux / Mac OS - le cuideachadh bhon wrestool a tha a-staigh icoutils.

Àireamh-fhòma Susbaint
Outpost2.exe Thèid a’ chruinneachadh a dhèanamh air an ìomhaigh de na geamannan, a thèid a thaisbeanadh air an ionad-fànais New Terra
op2shres.dll Tha e a’ toirt a-steach grafaigean airson nithean smachd leithid crìochan, putanan, putanan-ràdh agus bogsaichean-seice, a bharrachd air cùl-fhiosrachadh còmhraidh, ìomhaighean a tha freagairteach do na teacsaichean sgeulachd, agus grafaigean cùl-fhiosrachadh don mhion-nì a-mhàin
out2res.dll Tha e a’ toirt a-steach sgeadachadh na h-uinneig ann an geama, ìomhaighean airson meatailtean àbhaisteach agus sònraichte, an sgrìn luchdachadh, grafaigean airson còmhraidhean, a bharrachd air barrachd grafaigean cursair, a bharrachd air na grafaigean beòthail anns a’ bhun-tomhais geama