Outpost 2 Qaababka Faylasha · bei.pm

Qoraalkan waxaa si otomaatig ah u turjumay OpenAI GPT-4o Mini.

Qaababka faylka ee ku qoran boggan waxay ku saleysan yihiin falanqaynta farsamada ee hantida maskaxeed ee Dynamix, Inc. iyo Sierra Entertainment.
Hantida maskaxeed waxay maanta qayb ka tahay Activision Publishing, Inc./ Activision Blizzard, Inc. iyo hadda waxaa leh Microsoft Corp..

Macluumaadka waxaa lagu ururiyey iyadoo la adeegsanayo Injineernimada Dhabta ah iyo Falanqaynta Xogta si loo helo kaydinta iyo is dhexgalka xogta taariikhiga ah.
Looma isticmaalin wax qeexitaanno gaar ah ama qarsoodi ah.

Ciyaarta waxaa hadda lagu iibsan karaa bogga gog.com sida soo dejin.

Farshaxanka ciyaarta

Qoraalkan soo socda wuxuu diiradda saarayaa fahamkeyga ku saabsan qaababka xogta ee ciyaarta istiraatiijiyadda waqtiga-dhabta ah "Outpost 2: Divided Destiny", taasoo la sii daayay 1997 iyada oo ay soo saartay Sierra iyo ay horumarisay Dynamix.

Waxaan la kulmay falanqaynta xogta ciyaarta - iyo waxa laga sameyn karo - laga bilaabo 01-da Noofambar 2015 ilaa 14-ka Noofambar 2015.

Macluumaadka aan ilaa hadda helay, sida ay sheegayaan, Dynamix - sida shirkadaha ganacsi ee kale - ma aysan soo saarin qaababka xogta gaar ah oo loogu talagalay Outpost 2, laakiin sidoo kale waxay u isticmaaleen horumarinta kale sida taxanaha Mechwarrior (waxaa la beddelay).
Tani waxay muujinaysaa in awoodda hal-abuurka ee qaababka faylasha ay si weyn u xaddidan tahay waxaana badanaa lagu dhisaa fikradaha ka horeeya qaabab caadi ah sida JFIF iyo RIFF.

Si loo fasirto jadwalka iyo qaababka xogta, macluumaad dheeri ah ayaa laga heli karaa Maxay yihiin maxay?.
Xogta halkan lagu sheegay guud ahaan waxaa loo fahmi karaa inay tahay Little Endian.

Ugu dambeyntii, waxa la odhan karaa in injineerinka dib u habeynta uu aad u xiiso badan yahay, in kastoo aanan dhammaystirnayn.
Dabcan, waxaan sidoo kale kugula talinayaa inaad ciyaarta naftaada ciyaarto, maadaama ay bixiso farsamooyin ciyaar oo xiiso leh.

Hordhac

Qaab-dhismeedka xogta ee Outpost 2 ayaa la mid ah JFIF / PNG - xirmooyinka xogta kalena had iyo jeer waxay leeyihiin 8 Byte Header. Sidaas darteed, waxaan iska dhaafayaa inaan diiwaangeliyo headers-ka kaladuwan meelaha gaarka ah ee ku habboon, waxaanan kaliya diiwaangelinayaa kala duwanaanshaha halkaas.

Qaabka had iyo jeer waa kan soo socda; xogta dhabta ahna waxaa lagu dhex qarinayaa:

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF xarfaha
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Fogaanta Nooca Xogta Magaca Sharaxaad
0x0000 uint(32) Bite-yada sixirka

Waxay ka kooban tahay macluumaad ku saabsan waxa la filayo xogta xigta.

Qiimayaasha la yaqaan:

  • 0x204C4F56 ('VOL '):
    Heerka
  • 0x686C6F76 ('VOLH'):
    Heerka-Header
  • 0x736C6F76 ('VOLS'):
    Heerka-Qeexida
  • 0x696C6F76 ('VOLI'):
    Macluumaadka Heerka
  • 0x4B4C4256 ('BLCK'):
    Block-ka Heerka
  • 0x504D4250 ('PBMP'):
    Xogta Sawirka
  • 0x4C415050 ('PPAL'):
    Paletka Midabka
  • 0x4C415043 ('CPAL'):
    Weelka Paletka Midabka
  • 0x64616568 ('head'):
    Header
  • 0x61746164 ('data'):
    Xogta Adeegsiga
0x0004 uint(24) Dhererka Block-ka

Waxay ka kooban tahay macluumaad ku saabsan cabirka (in Byte) ee bloogga xogta ee soo socda.

Halkan waxaa loola jeedaa xogta lafteeda - 8-ka Header-Byte ma jiraan.

0x0007 uint(8) Calaamadaha?

Waa aan la yaqaan waxa uu xayndaabkan dhab ahaantii u adeegayo.

Qiyaasta waxaa badanaa lagu arkaa 0x80, faylal kale badana waxaa lagu arkay 0x00. Tani waxay muujinaysaa in ay tahay set calan.

Mugga

Volumes waa weel xogeed oo loogu talagalay ciyaarta, waxayna la mid tahay qaab kaydinta sida Tarball. Ugu yaraan Outpost 2, qaabkani wuxuu kaliya aqoonsan yahay faylasha - ma jiro gal. Si kastaba ha noqotee, waxaa laga yaabaa in kuwaas lagu daydo magacyada faylasha ku habboon.

Volume wuxuu ka kooban yahay Volume-Header iyo dhowr Volume Blocks oo u dhigma faylasha gaarka ah.

"Volumes" waa faylasha leh dhamaadka 'vol' ee galka ciyaarta.

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF xarfaha
0x0000 56 4f 4c 20 -- -- -- -- -- -- -- -- -- -- -- -- V O L . . . . . . . . . . . .
Fogaanta Nooca Xogta Magaca Sharaxaad
0x0000 uint(32) Byte-yada Xariifka ah
0x0004 uint(24) Dhererka Block-ga
0x0007 uint(8) Calamada

Qaybta Mugga

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF xarfaha
0x0000 76 6f 6c 68 -- -- -- -- -- -- -- -- -- -- -- -- v o l h . . . . . . . . . . . .
Fogaanta Nooca Xogta Magaca Sharaxaad
0x0000 uint(32) Byte-yada Xariifka ah
0x0004 uint(24) Dhererka Block-ga
0x0007 uint(8) Calamada

Heerka Volume-ka ma laha wax xog ah oo la isticmaalo.
Wuxuu u adeegaa kaliya sida weel.

Xogta ugu horeysa ee ku jirta Heerka Volume-ka waa inay noqdaan xadhigyada Volume; ka dibna waxaa ku xiga macluumaadka Volume-ka.

Xidhiidhada Mugga

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF xarfaha
0x0000 76 6f 6c 69 -- -- -- -- -- -- -- -- -- -- -- -- v o l i . . . . . . . . . . . .
Fogaanta Nooca Xogta Magaca Sharaxaad
0x0000 uint(32) Byte-yada Xariifka ah
0x0004 uint(24) Dhererka Block-ga
0x0007 uint(8) Calamada
Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF xarfaha
0x0000 76 6f 6c 73 -- -- -- -- -- -- -- -- -- -- -- -- v o l s . . . . . . . . . . . .
Fogaanta Nooca Xogta Magaca Sharaxaad
0x0000 uint(32) Byte-yada Xariifka ah
0x0004 uint(24) Dhererka Block-ga
0x0007 uint(8) Calamada
0x0008 uint(32) Dhererka Payload-ka

Muujinayaa tirada Bytes ee xogta soo socota ee dhab ahaan ah xogta la isticmaalo.

Xogta haray ee liiska Volume-Strings waxay u muuqataa in loo tixgeliyo garbage.

Faylasha taariikhda dambe leh, xogta 'haray' waa 0x00, taasoo muujin karta dhibaatooyin ku saabsan qalabka qalabka intii lagu jiray horumarinta ciyaarta, taasoo la micno ah in horumariyaha uu si dambe u daryeelay habaynta saxda ah ee kaydinta, maadaama aysan saameyn ku yeelanayn ciyaarta haddii xogtu la habeyn yahay ama aan la habeyn.

0x000c uint(8)[] Liiska Magacyada Faylasha

Kani waa liis magacyada faylasha oo ah 0-byte-terminated, kaasoo - ugu yaraan qaybta xogta ee halkan ku jirta - kaliya u muuqda inuu sugaayo xarfo ASCII ah.

Ma jiraan wax loo baahdo in si qoto dheer loo falanqeeyo xogtan marka la falanqeynayo, maadaama macluumaadka Volume-ka si toos ah loogu tixraacayo offsets-ka magacyada faylasha.

Volume Strings waa liis magacyada faylasha ee ku jira volumka.

Macluumaadka Voluumka

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF xarfaha
0x0000 76 6f 6c 69 -- -- -- -- -- -- -- -- -- -- -- -- v o l i . . . . . . . . . . . .
Fogaanta Nooca Xogta Magaca Sharaxaad
0x0000 uint(32) Byte-yada Xariifka ah
0x0004 uint(24) Dhererka Block-ga
0x0007 uint(8) Calamada

Macluumaadka muggu wuxuu ka kooban yahay macluumaad faahfaahsan oo ku saabsan faylasha. Waxayna u egyihiin hab nooc ah diiwaanka faylka (FAT = File Allocation Table).

Tirada faylasha waxay ka timaadaa cabirka blokiga oo loo qaybiyo dhererka diiwaannada - 14 byte.

Diiwaannada kala duwan waxay leeyihiin qaab dhismeedkan:

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF xarfaha
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Fogaanta Nooca Xogta Magaca Sharaxaad
0x0000 uint(32) Magaca Faylka-Offset

Waxay tusinaysaa meesha ay ku taallo magaca faylka ee liiska magacyada faylasha (Xargaha Volume) iyadoo la adeegsanayo offset (!).

Tani waxay tilmaamaysaa bilowga qaybta xogta.

0x0004 uint(32) Faylka-Offset

Waxay muujineysaa meesha ay faylku ku yaallo gudaha faylka guud ee Volume-ka.

0x0008 uint(32) Cabbirka Faylka

Waxay muujinaysaa sida weyn faylku yahay ee byte ahaan.

0x000c uint(16) Calamada?

Waxay u egtahay inay bixiso macluumaad dheeri ah oo ku saabsan koodhka faylka.

  • 0x03 waxaa la dejiyay marka faylku la isku duwo. Halkan waxaa si cad loogu adeegsanayaa geed Huffmann ah.
  • 0x80 muuqaal ahaan mar walba waa la dejiyay.

Blok Volum

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF xarfaha
0x0000 56 42 4c 48 -- -- -- -- -- -- -- -- -- -- -- -- V B L H . . . . . . . . . . . .
Fogaanta Nooca Xogta Magaca Sharaxaad
0x0000 uint(32) Byte-yada Xariifka ah
0x0004 uint(24) Dhererka Block-ga
0x0007 uint(8) Calamada

Volume-Block waa weel qaada faylasha. Waxay si kaliya u leh mar kale - sababo la xiriira qaabka blockiga - faylasha cabbirka iyo ka dibna waxay si toos ah u raacaan xogta la isticmaalo.

Tileyada

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF xarfaha
0x0000 50 42 4d 50 -- -- -- -- -- -- -- -- -- -- -- -- P B M P . . . . . . . . . . . .
Fogaanta Nooca Xogta Magaca Sharaxaad
0x0000 uint(32) Bytes-ka Sixirka
0x0004 uint(24) Dhererka Block-ka
0x0007 uint(8) Calamada

Tiles-kani waa qaab-grafik Bitmap oo khaas u ah Outpost-2. Waxay ka kooban yihiin 13 Tilesets, loo yaqaan "wells" (well0000.bmp ilaa well0012.bmp), kuwaas oo ku dhex jira volume-ka maps.vol.

Tilesets / Wells waxay ka kooban yihiin waxyaabahan:

Magaca Faylka Waxyaabaha
well0000.bmp Garaaf buluug ah oo cabirkiisu yahay 32x32px - ku habboon in lagu tijaabiyo haddii qalabkaaga sawirrada uu shaqeynayo
well0001.bmp Waxay ka kooban tahay dhagax iftiin leh, buuro ku yaal dhagax iftiin leh iyo noocyo badan oo ka mid ah godadka dhaca ee dhagax iftiin leh
well0002.bmp Waxay ka kooban tahay 'Doodads' dhagax iftiin leh - sida walxaha lagu dhigo si loogu fidiya (ama si ula kac ah sida dhisme, tusaale ahaan derbiyada) dhagax iftiin leh, oo ay ku jiraan dhirta
well0003.bmp Waxay ka kooban tahay qaab dhismeed ka samaysan xabag dhagax iftiin leh
well0004.bmp Waxay ka kooban tahay dhagax madow, buuro ku yaal dhagax madow leh iyo noocyo badan oo ka mid ah godadka dhaca ee dhagax madow leh
well0005.bmp Waxay ka kooban tahay 'Doodads' dhagax madow leh - sida walxaha lagu dhigo si loogu fidiya (ama si ula kac ah sida dhisme, tusaale ahaan derbiyada) dhagax madow leh
well0006.bmp Waxay ka kooban tahay qaab dhismeed ka samaysan xabag dhagax madow leh, iyo isdhexgalka u dhexeeya dhagax iftiin leh iyo dhagax madow leh
well0007.bmp Waxay ka kooban tahay lava oo leh 4-5 frames animation ah oo kala duwan
well0008.bmp Waxay ka kooban tahay ciid iyo noocyo badan oo ka mid ah godadka dhaca ee ciidda
well0009.bmp Waxay ka kooban tahay 'Doodads' ciid - sida walxaha lagu dhigo si loogu fidiya (ama si ula kac ah sida dhisme, tusaale ahaan derbiyada) ciidda
well0010.bmp Waxay ka kooban tahay 48 isdhexgal oo ka mid ah ciidda iyo dhagax iftiin leh iyo dhagax madow leh
well0011.bmp Waxay ka kooban tahay daboolka polar ee khariidadda, oo leh dhagax madow sida saldhig
well0012.bmp Waxay ka kooban tahay daboolka polar ee khariidadda, oo leh dhagax iftiin sida saldhig

Waa muhiim in la sameeyo si sax ah, in Tiles aan hore loo muujin si loo keydiyo, maadaama xogta ku saabsan wareega maalinta/habeenka ay weli tahay in la shaqeeyo - waxaana jiri doona xog aad u badan.

Tile-yadu waa 8bpp sawirro leh palette la tilmaamay oo leh xallin 32x32 pixel, kuwaas oo si isdaba joog ah loo habeeyay. Si kastaba ha noqotee, Tileset-kan waxaa ku jiri kara tiro ka badan

Wejiga ugu muhiimsan wuxuu ka kooban yahay 2 qeybood: head iyo data.

Cinwaanka Tiles

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF xarfaha
0x0000 68 65 61 64 -- -- -- -- -- -- -- -- -- -- -- -- h e a d . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Fogaanta Nooca Xogta Magaca Sharaxaad
0x0000 uint(32) Bytes-ka Sixirka
0x0004 uint(24) Dhererka Block-ka
0x0007 uint(8) Calamada
0x0008 uint(32) Nooca / Calamada?

Tani waxay noqon kartaa tilmaanta nooca feylka; dhammaan faylasha aan haysto waxay halkan ku qoran yihiin qiimaha 0x02

0x000c uint(32) Ballac (Xallinta Joogtada)

Waxay tilmaamaysaa sida ballaaran faylka sawirka yahay (pixel ahaan).

Dhamaan Wells-ka Outpost 2, halkan waxaa laga filayaa qiimaha 0x20 ama 32.

0x0010 uint(32) Dherer (Xallinta toosan)

Waxay muujinaysaa sida sare ee faylka sawirka (pixel ahaan).

Dhammaan Wells-ka Outpost 2 halkan waxaa laga filayaa in qiimaha 0x20 ama 32 uu yahay.

0x0014 uint(32) Qoto-dhafka midabka?

Macnaha qiimahan ma cadda.

Maadaama uu ku jiro dhammaan faylasha la baaray qiimaha 8, waxaa laga yaabaa in uu yahay tilmaanta qoto dheer ee midabka.

0x0018 uint(32) Qoto-dheereedka midabka 2?

Macnaha qiimahan ma cadda.

Waxaa laga yaabaa inay tahay 'ujeeddo'-qoto-dheer.

Macluumaadkan ka dib, waxaa jiri doona fayl palette ah oo ku jira qaabka RIFF ee la isku raacay. Tilmaamaha saxda ah waxaa laga helayaa - maadaama palettes ay meelo kale ka muuqdaan - hoosta Palettada.

Xogta Tiles

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF xarfaha
0x0000 64 61 74 61 -- -- -- -- -- -- -- -- -- -- -- -- d a t a . . . . . . . . . . . .
Fogaanta Nooca Xogta Magaca Sharaxaad
0x0000 uint(32) Bytes-ka Sixirka
0x0004 uint(24) Dhererka Block-ka
0x0007 uint(8) Calamada

Ugu dambeyntii, xogta pixel-ka ayaa ka bilaabmaysa bidix-dhanka kore ee safafka ilaa midig-dhanka hoose.
Xogta qiimaha ee sawirada badanaa loo yaqaan 8bpp-Bitmaps waxay u dhigantaa index-ka midabka ee palette-ka midabka.

Xogta pixel-ka waxay ka bilaabmaysaa kor bidix waxayna ku dhammaanaysaa hoose midig.

Engine-ka ciyaarta wuxuu sawiraa Tiles *sida muuqata* on-demand.
Tani waxay u muuqataa inay sabab u tahay wareegga maalin-nox, oo leh 32 heerar oo tiles ah. Waxaa muuqata in qiimaha iftiinka laga jarayo 'yar'. Qiimayaal sax ah weli lama go'aamin, waxaan ku shaqeynayaa xisaabtan

v *= (daylight / 48) + 0.25;

iyadoo la adeegsanayo xogta HSV ee pixels, halka daylight ay tahay qiimo u dhexeeya 0-31 iyo v uu yahay qiimo u dhexeeya 0-1. Sidoo kale waa in la tixgeliyaa in khariidadda ay leedahay 16 tiles oo xuduud ah bidix iyo midig (tani waxay u adeegtaa in la qarsoodi ugu dhiso unugyo).

Intaa waxaa dheer, wareegga maalin-nox wuxuu u muuqdaa inuu kaliya cusboonaysiinayo hal tiir oo khariidadda ah mar kasta oo ciyaar socoto.
Wareeg maalin-nox oo dhaqso ah wuxuu u egyahay sidan:

Muuqaalka wareegga maalin-nox

PRT

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF xarfaha
0x0000 43 50 41 4c -- -- -- -- -- -- -- -- -- -- -- -- C P A L . . . . . . . . . . . .
Fogaanta Nooca Xogta Magaca Sharaxaad
0x0000 uint(32) Byte-yada Jaduunka
0x0004 uint(24) Dhererka Palettiga

Tusmo, marka loo eego qaabka caadiga ah ee block-ka, tirada paletiyada laga heli karo faylkan - maahan dhererka block-ka ee byte-yada.

0x0007 uint(8) Calamada

Waxaa suurtagal ah, sidii caadiga ahayd, calamo.

Aniga ma aqaano calamo; maadaama dhammaan qiimayaasha aan aqaano ay la mid yihiin 0x00, sidoo kale waxaa suurtagal ah in tirada paletku ay si fudud u tahay uint(32).

>Waxa PRT dhab ahaantii uu u taagan yahay ma aqaan; waxaa suurtagal ah in uu yahay 'Palette and Ressource Table' - maadaama faylkan - oo lagu heli karo sida op2_art.prt ee maps.vol - uu yahay mid noocaas ah, ama tani ay si wanaagsan u sharraxayso shaqadiisa.

Faylkani wuxuu ka kooban yahay liis palettos ah, jaantus ku saabsan dhammaan bitmap-yada la isticmaalay, dhammaan qeexidda animation-ka iyo sidoo kale tiro xog ah oo aan la garanayn. Waxay raacdaa qaab-dhismeedka weelka ee hore si aan toos ahayn, maadaama aan dhammaan diiwaannada ay raacaan qaabkan.

Qaybta CPAL (waxay u taagan tahay Paletten-Weel) waxay kaliya ku xidhaysaa xogta palette, iyadoo muujineysa tirada palettos-ka 8-bit ah ee caadi ahaan 1052 byte ah.

>Qiyaasta 1052-byte maaha mid qasban, maadaama qaabka palette uu suurtagal ahaan leeyahay cabbirro palette oo kala duwan. Waxay kaliya khuseysaa xogta la socda, oo lagu keenay Outpost 2.

>Ka dib liiska palettos, liiska bitmap-yada ayaa si toos ah u xiga iyada oo aan lahayn cinwaan hordhac ah; sidaas oo kale, liisaska animation-ka ayaa si toos ah u xiga.
>Labada dhinacba waxay ku bilaabmaan uint(32) (ama mar kale uint24+uint8 calamad?) oo muujinaya tirada diiwaannada.

Palettada

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF xarfaha
0x0000 50 50 41 4c -- -- -- -- -- -- -- -- -- -- -- -- P P A L . . . . . . . . . . . .
Fogaanta Nooca Xogta Magaca Sharaxaad
0x0000 uint(32) Byteska Jaduunka
0x0004 uint(24) Dhererka Paletka

Waxay tilmaamaysaa tirada paletada ee ku jirta faylkan, taasoo ka duwan qaabka caadiga ah ee block - maahan dhererka block-ka ee baytka.

0x0007 uint(8) Calamada

Suurtagal ahaan, sida caadiga ah, calamo.

Anigu ma garanayo calamo; maadaama dhammaan qiimayaasha aan aqaan ay u dhigmaan 0x00, waxaa suurtagal ah in tirada palettiga ay si fudud u tahay uint(32).

Macluumaadka palettiyada waa mid si sahlan loo akhriyi karo.
Waxay ka kooban yihiin cinwaan iyo qayb xogeed.

Madaxa Paletka

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF xarfaha
0x0000 68 65 61 64 -- -- -- -- -- -- -- -- -- -- -- -- h e a d . . . . . . . . . . . .
Fogaanta Nooca Xogta Magaca Sharaxaad
0x0000 uint(32) Byteska Jaduunka
0x0004 uint(24) Dhererka Paletka

Waxay tilmaamaysaa tirada paletada ee ku jirta faylkan, taasoo ka duwan qaabka caadiga ah ee block - maahan dhererka block-ka ee baytka.

0x0007 uint(8) Calamada

Suurtagal ahaan, sida caadiga ah, calamo.

Anigu ma garanayo calamo; maadaama dhammaan qiimayaasha aan aqaan ay u dhigmaan 0x00, waxaa suurtagal ah in tirada palettiga ay si fudud u tahay uint(32).

0x0008 uint(32) Nooca qaabka pallet-ka?

Waxay u muuqataa in la qeexay nooca palett-ka ee palett-ka raacayo.

Dhamaan palett-yada Outpost2 waxay u muuqdaan inay leeyihiin nooca 0x01.

Xogta Palettiga

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF xarfaha
0x0000 64 61 74 61 -- -- -- -- -- -- -- -- -- -- -- -- d a t a . . . . . . . . . . . .
Fogaanta Nooca Xogta Magaca Sharaxaad
0x0000 uint(32) Byteska Jaduunka
0x0004 uint(24) Dhererka Block-ka
0x0007 uint(8) Calamada

Qaybta xogta waxay qaadataa diiwaanada pallet-ka ee kala duwan. Tirada diiwaanada pallet-ka waxay ka timaadaa dhererka block-ga / 4.

Diiwaannada kala duwan waxay leeyihiin qaab sahlan oo sidan oo kale ah;

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF xarfaha
0x0000 -- -- -- 04 -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Fogaanta Nooca Xogta Magaca Sharaxaad
0x0000 uint(8) Qaybta Cas

Waxay muujineysaa qaybta cas ee midabka

0x0001 uint(8) Qaybta Cagaaran

Waxay muujinaysaa qaybta cagaaran ee midabka

0x0002 uint(8) Qaybta buluugga

Waxa uu muujinayaa saamiga buluugga ah ee midabka

0x0003 uint(8) Aan la aqoon - Calanka?

Waa aan caddayn waxa qiimahaan uu ka dhigan yahay, maadaama uu u muuqdo inuu aasaas ahaan 0x04 yahay.

Ku saabsan palet-yada, waxa kaliya ee aan dhihi karno waa, in palet-yada loo isticmaalo animation-yada ay ku xiran yihiin xeerarka soo socda:

  • Midabka ugu horreeya had iyo jeer waa HOOSEYN, xitaa haddii qiime kale la bixiyo.
  • Entries palet-ka 1-24 waxaa loo tixgelinayaa midabka ciyaartoyda ee palet-yada 1-8.
    Goobta midabada aan ka helno ciyaartoyga 1, ma cadda.
    Waan qiyaasayaa in midabada kale ay yihiin kuwo xiran.

Tixraaca Palet-yada

Bitmaps

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF xarfaha
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Fogaanta Nooca Xogta Magaca Sharaxaad
0x0000 uint(32) Ballaca la hagaajiyay

Waxay muujinaysaa ballaca xariiqyada xogta pixel-ka ee baytka - maadaama ay ku xirantahay xuduudaha 4-baytka.

Sidaas awgeed, si dhakhso ah ayaa suurtagal u ah in la booqdo xariiqda sawirka gaarka ah.

Maxaa sababay in qiimahan si gaar ah loo keydiyo, inkastoo la xisaabin karo, ma cadda.
Waxay noqon kartaa hagaajinta koodhka sawir qaadista.

0x0004 uint(32) Lugow

Muujinaya offset-ka khadka koowaad ee bitmap-ka

0x0008 uint(32) Dherer

Waxay muujineysaa dhererka sawirka ee pixel-ka

0x000c uint(32) Ballac

Waxay muujinaysaa ballaca sawirka ee pixels

0x0010 uint(16) Noocyada

Nooca sawirka ayaa tilmaamaya. Halkan waxay u muuqataa in ay tahay Bitmaske:

  • 0x04 waa la dejiyey, haddii ay tahay garaaf 1bpp ah.
  • 0x40 waa la dejiyey, haddii ay tahay garaaf u baahan in la fuliyo Windows.
0x0012 uint(16) Palette

qeexaya, paletka ka timaada faylka PRT ee la isticmaali doono

Qaab-dhismeedka xogta faylka PRT ayaa muujinaya sida bitmaps-ka loo isticmaalo ee loogu talagalay Sprites ay u dhisan yihiin. Bitmaps-kan waxay u adeegaan sida qayb gooni ah, oo badan ayaa lagu ururiyay hal qaab animation ah ee Sprite oo la isku daray.

Xogta sawirka gaarka ah waxay ku qarsan tahay op2_art.BMP gudaha galka ciyaarta.
Waxaa cadayn ah sababta faylka bitmap-kan uu u leeyahay (badanaa sax ah) RIFF-bitmap header, taasna ma cadda. Waxaa suurtagal ah in Outpost 2 ay isticmaasho API-yada nidaamka si ay u shido sawirada, iyadoo la qaadayo header-kan si ku meel gaar ah iyo in la qoro meelaha kala duwan ee la xiriira.

Xogta pixel-ka waxay ku jirtaa faylka BMP oo ku yaal booska Offset + uint32-Offset, taas oo laga heli karo faylka BMP cinwaanka 0x000A (RIFF-bitmap xogta offset), oo ku habboon qaabka safka ah oo ka bilaabanaya bidix ilaa hoos.

Naqshadaha monochrome 1bpp waxaa lagu sawiri karaa sida midabka 0 uu yahay hufnaan buuxda, iyo midabka 1 waa madow/cad oo hufan, maadaama naqshadaha monochrome guud ahaan loo isticmaalo hooska gaadiidka iyo dhismayaasha ee animations laga isticmaalo.

Haddaba, waxaa la isku dari karaa sawirro badan.

Módulo guri oo la ilaaliyo (Plymouth)

Muuqaaleynta

Hadda waxaan u gudbaynaa fasalka boqorka ee cilmiga gudaha qaababka xogta Outpost 2:
Animayshinnada.

Liisaska animayshinka waxaa lagu bilaabaa header caalami ah, oo ujeedkiisu yahay xaqiijinta xogta. Kadibna waxaa raaca qeexitaannada animayshinka gaarka ah, oo lagu kala soocay 3 heerar:

  1. Animayshinka
    Animayshinku waa heerka ugu sarreeya; waxay muujinaysaa animayshinka unug, dhisme ama 'animayshinka qaybaha' (dhicitaanka komet, cimilada, qaraxa) xaalad gaar ah.
  2. Frame
    Frame waa sawir kaliya oo ku dhex jira animayshinka. Animayshinku wuxuu ka koobnaan karaa hal ama in ka badan frames.
  3. Subframe
    Subframe waa macluumaadka ku saabsan in bitmap gaar ah loo sawiro meel gaar ah oo frame ah iyadoo la raacayo shuruudo gaar ah. Frame wuxuu ka koobnaan karaa hal ama in ka badan subframes.

Kadib, si toos ah ayaa loo raaci doonaa qeexitaannada animayshinka.

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF xarfaha
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Fogaanta Nooca Xogta Magaca Sharaxaad
0x0000 uint(32) Tirada animasyonada

Imisa diiwaanno animayshanka ah ayaa jira

0x0004 uint(32) Tirada Frames

Immisa frames guud ahaan waa in ay jiraan

0x0008 uint(32) Tirada Subframes

Immisa subframes ah oo guud ahaan ay tahay in la helo

0x000c uint(32) Tirada diiwaanada ikhtiyaariga ah

Immisa "qoritaanno ikhtiyaari ah" ayaa jira.

Muqaal

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF xarfaha
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0020 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Fogaanta Nooca Xogta Magaca Sharaxaad
0x0000 uint(32) Qof aan la aqoon 1

Macluumaad aan la aqoon

0x0004 uint(32) Sanduuqa Xadeynta: Bidix

Waxay tilmaamaysaa bilowga bidix (pixel ahaan) ee Bounding Box.

0x0008 uint(32) Sanduuqa Xadeynta: Kor

Waxay tilmaamaysaa bilowga sare (pixel ahaan) ee Bounding Box.

0x000c uint(32) Sanduuqa Xadeynta: Ballac

Waa cabirka ballaca (pixels) ee Bounding Box.

0x0010 uint(32) Sanduuqa Xadka: Dhererka

Waxay muujinaysaa dhererka (pixels) ee Bounding Box.

0x0014 uint(32) Qaybinta: X

Muujinaya bartamaha toosan ee animation-ka

0x0018 uint(32) Fogaanta: Y

Muujinaya bartamaha toosan ee animation-ka

0x001c uint(32) Aan la aqoon 2

Macluumaad aan la aqoon

0x0020 uint(32) Tirada Frames

Wuxuu muujinayaa tirada sawirrada animation-ka ee ku jira animation-kan

0x0024 uint(32) Tirada Daaqadaha

Waxay tilmaamaysaa tirada daaqadaha ee la adeegsanayo marka la sawirayo

Xogta lakabka sare, ee animation-ka, waxay si weyn u tahay xog maamul - Boundingbox waxay tilmaamaysaa isku-dhafka calaamadda ku saabsan gaadhi/dhisme, marka la doorto iyo sidoo kale waxay muujinaysaa aagga la gujin karo.

Offset-ku wuxuu si weyn u go'aamiyaa "barta eber"; barta, oo lagu xisaabinayo isku-dhafka ciyaarta ama laga jarayo. Waxa kale oo lagu dhihi karaa xisaabta: offset-ka halkan wuxuu tilmaamayaa asalka isku-dhafka.

Windows-yadu waxay la mid yihiin offset-ka, waxayna ka kooban yihiin (mid kasta Windows) 4 uint(32)-qiime, kuwaas oo muujinaya aagga loo isticmaali karo subframes-ka gaarka ah. Dibadda Windows-yada, haddii ay u diyaar tahay bitmap-ka, looma oggola in la sawiro.

Qaab

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF xarfaha
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Fogaanta Nooca Xogta Magaca Sharaxaad
0x0000 uint(8) Tirada subframe-ka iyo Toggle-ka ee Ikhtiyaar 1, 2

Qiimahani wuxuu ka kooban yahay:

  • 0x7F (Bitmask): Tirada subframes-ka ee lagu isticmaalay frame-kan
  • 0x80: Macluumaadka ku saabsan haddii Optional 1 iyo 2 ay jiraan
0x0001 uint(8) Aan la aqoonsan 1 iyo Toggle loogu talagalay Ikhtiyaar 3, 4

Qiimahani wuxuu ka kooban yahay:

  • 0x7F (Bitmask): Lama yaqaan - Waxaan qiyaasayaa in tani ay tahay tirada Gameticks-ka ee dhaafaya ilaa sawirka xiga la muujinayo
  • 0x80: Macluumaadka ku saabsan haddii Ikhtiyaari 3 iyo 4 ay jiraan
0x0002 uint(8) Ikhtiyaar 1

Aan la aqoon

0x0003 uint(8) Ikhtiyaar 2

Aan la aqoon

0x0004 uint(8) Ikhtiyaar 3

Aan la aqoon

0x0005 uint(8) Ikhtiyaar 4

Aan la aqoon

Qaybta Hoose

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF xarfaha
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Fogaanta Nooca Xogta Magaca Sharaxaad
0x0000 uint(16) Bitmap-Id

Muujinaya bitmap-ka loo isticmaali doono subframe-kan

0x0002 uint(8) Qof aan la aqoon 1

Ma cadda - Si kastaba ha ahaatee, waxaan si xoog leh u maleynayaa in tani ay tahay mudnaanta sawirka (Z-Layer).

0x0003 uint(8) Subframe-Id

Waxay muujinaysaa, xaggee ku suganahay subframe-ka

0x0004 sint(16) Offset - Toosan

Muujinaya halka gudaha qaab-dhismeedka (Frames) uu subframe la dhigayo, ama inta pixels ah ee bitmap-ka loo dhaqaajinayo dhinaca toosan.

0x0006 sint(16) Offset - Farsamooyinka toosan

Waxay muujinaysaa meesha gudaha frame-ka lagu dhejinayo subframe-ka, ama inta pixels ah ee bitmap-ka si toos ah loo dhaqaajinayo

Marka waxaan hadda isku dari karnaa qaababka gaar ah iyo sidoo kale animation-yada dhamaystiran, halkan waxaan ku muujinaynaa tusaale ahaan animation aad u adag, taas oo leh index 500.

Animation 500

Animation 500 waxay muujinaysaa sida loo furo Plymouth-transportka oo lagu shubay macdan caadi ah. Tani waa mid ka mid ah dhowr animation oo isticmaala faacadda daaqadaha.

Sidaas awgeed, dhammaan animation-ka ayaa la isugu geeyey.
Nasiib darro, weli waxaa jira dhibaato ku saabsan furitaanka sare, maadaama halkan bit-ka ku habboon aan lagu maamulin macluumaadka nooca sawirka.

Halkan waxaa ah qaar ka mid ah sprites-ka si qurux badan loo animoobay oo ka tirsan ciyaarta:

Muuqaalka Animation 500 ayaa sharxaya

Animation 500 oo si dhamaystiran loo isugu geeyey

Farshaxanka Dhismaha Plymouth

Portka Hawada Eden

Xarunta Caafimaadka Eden

SCAT

Portka Hawada Plymouth

Easteregg:
Santa Claus

Easteregg:
Dans Dog

Interface-ka Isticmaalaha

Hadda waxaa ka maqan interface-ka isticmaale ee ciyaarta, kaas oo ku qoran muuqaal bir la burburiyey.

Laakiin halkan sidoo kale waxaa muuqata in Dynamix aysan u baahnayn inay dib u iclaamiso; halkan kaliya looma isticmaalin API-yada User32 iyo GDI32 ee uu Windows bixiyo - gaar ahaan waxaa sidoo kale la isticmaalay maaraynta khayraadka ee User32.

Kuwani waxaa lagu soo saari karaa tusaale ahaan barnaamijyada sida Angus Johnson uu Freeware ahaan u sameeyay Resource Hacker, ama - haddii aad ka baqayso in aad isticmaasho Wine hoosta Linux / Mac OS - adigoo kaashanaya wrestool oo ku jira icoutils.

Magaca Faylka Waxyaabaha
Outpost2.exe Kaliya waxay ka kooban tahay astaanta ciyaarta, taasoo muujineysa saldhigga hawada ee New Terra
op2shres.dll Waxay ka kooban tahay sawirro loogu talagalay xakamaynta sida xuduudaha, badhamada, badhamada raadiyaha iyo sanduuqyada xulashada, sidoo kale asalka wada hadalka, sawirrada kaalmada ee qoraallada hawlgalka sheekooyinka iyo sawirka asalka ee menu-ga ugu weyn
out2res.dll Waxay ka kooban tahay qurxinta daaqadaha gudaha ciyaarta, astaamaha birta caadiga ah iyo khaaska ah, shaashadda laadinta, sawirrada wada hadalka iyo kuraas kale oo sawirro ah, intaa waxaa dheer kuwa firfircoon ee galka ciyaarta