Outpost 2 ფაილის ფორმატები · bei.pm
ამ გვერდზე აღწერილი ფაილების ფორმატები ეფუძნება Dynamix, Inc. და Sierra Entertainment-ის ინტელექტუალური საკუთრების ტექნიკურ ანალიზს.
ინტელექტუალური საკუთრება დღეს არის Activision Publishing, Inc.-ის / Activision Blizzard, Inc.-ის მასის ნაწილი და ამჟამად ეკუთვნის Microsoft Corp..
მعلوماتები შეიკრიბა Reverse Engineering და დატების ანალიზის საშუალებით არქივირების და ისტორიული მონაცემებთან ინტერპერატიულობის მიზნით.
არ ყოფილა გამოყენებული რაიმე სამ Proprietary ან კონფიდენციალური სპეციფიკაციები.
ამჟამად თამაში შესაძლებელია შეძენა gog.com-ზე როგორც ჩამოსატვირთი.
ქვემოთ მოცემული სტატიის სერია აღწერს ჩემს მიღწევებს მონაცემთა ფორმატებზე რეალური დროის სტრატეგიულ თამაშში "Outpost 2: Divided Destiny", რომელიც 1997 წელს გამოაქვეყნა Sierra და შექმნა Dynamix.
მე ძირითადად დაკავებული ვიყავი თამაშის მონაცემების ანალიზით - და რაც მათთან ერთად აკეთებს - 2015 წლის 1 ნოემბრიდან 14 ნოემბრამდე.
მნიშვნელოვანი ინფორმაციის მიხედვით, რომელიც ამ დროისთვის მოვიპოვე, Dynamix - როგორც ბევრი კომერციული კომპანია - არ იმუშავებდა სპეციალურად Outpost 2-ისთვის შექმნილ მონაცემთა ფორმატებზე, არამედ გამოიყენებდა სხვა განვითარებებში, მაგალითად, Mechwarrior სერიაში (გადამუშავებული).
ამის გარდა, უნდა აღინიშნოს, რომ მონაცემთა ფორმატების ინოვაციური ძალა პრაქტიკულად შეზღუდულია და ხშირად ეფუძნება უფრო ძველ კონცეფციებს, როგორიცაა JFIF და RIFF.
ასაკის და მონაცემთა ფორმატების ინტერპრეტაციისათვის დამატებითი ინფორმაცია ხელმისაწვდომია რა არის რა? გვერდზე.
აქ გამოკვეთილი მონაცემები ზოგადად უნდა აღიქმებოდეს როგორც Little Endian.
დასკვნის სახით, შეიძლება ითქვას, რომ რევერსული ინჟინერია ძალიან სახალისო იყო, მიუხედავად იმისა, რომ ეს არ არის სრულყოფილი.
რა თქმა უნდა, ასევე შეგიძლია ვურჩიოთ, რომ თავად ითამაშოთ თამაში, რადგან მას საინტერესო თამაშის მექანიკა აქვს.
შესახებ
Outpost 2-ის მიერ გამოყენებული მონაცემების ფორმატები JFIF / PNG-ს მსგავსია - ცალკეული მონაცემთა ბლოკები ყოველთვის შეიცავს 8 ბაიტიან სათაურებს. ამიტომ გადავწყვიტე, რომ კონკრეტულ ადგილებში თითოეული სათაური არ დოკუმენტირდეს და მხოლოდ გადახვევები აღვნიშნო.
ფორმატი ყოველთვის ასეთია; რეალური მონაცემები მასშია ჩადებული:
მისამართი | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | სიმბოლო | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ოფსეტი | მონაცემთა ტიპი | სახელი | განმარტება |
---|---|---|---|
0x0000 | uint(32) | მაჯიკური ბაიტები | ინფორმაციის შემცველობა იმის შესახებ, რაც შემდეგ მონაცემთა ბლოკში უნდა ველოდოთ. ცნობილი მნიშვნელობები:
|
0x0004 | uint(24) | ბლოკის სიგრძე | რაც შეეხება ინფორმაციას, თუ რამდენი დიდია (ბაიტებში) შემდეგი მონაცემთა ბლოკი. ამ შემთხვევაში იგულისხმება მხოლოდ სუფთა მონაცემები - 8 ჰედერ-ბაიტი არ შედის მასში. |
0x0007 | uint(8) | პატარძალები? | არ არის ცნობილი, რისთვისაა ეს ბლოკი ზუსტად საჭირო. ვოლიუმებში ეს მნიშვნელობა ხშირად 0x80-ია, სხვა ფაილებში კი ხშირად 0x00. ეს მიუთითებს იმაზე, რომ ეს არის დროშების ნაკრები. |
ნაწილები
ხარისხები წარმოადგენს მონაცემთა კონტეინერს თამაშისთვის, მსგავსი არქივის ფორმატთან, როგორიცაა Tarball. მინიმუმ Outpost 2-ში ეს ფორმატი მხოლოდ ფაილებზე მუშაობს - არა ფolders-ზე. სავარაუდოდ, ეს შეიძლება შეიქმნას შესაბამისი ფაილების სახელების გამოყენებით.
ხარისხი შედგება ხარისხის თავიდან და რამდენიმე ხარისხის ბლოკებისგან, რომლებიც კონკრეტულ ფაილებს შეესაბამება.
"ხარისხები" არის ფაილები, რომელთა გაფართოება 'vol'
არის თამაშის დირექტორიაში.
მისამართი | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | სიმბოლო | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 4f | 4c | 20 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | O | L | . | . | . | . | . | . | . | . | . | . | . | . |
ოფსეტი | მონაცემთა ტიპი | სახელი | განმარტება |
---|---|---|---|
0x0000 | uint(32) | მაჯიკური ბაიტები | |
0x0004 | uint(24) | ბლოკის სიგრძე | |
0x0007 | uint(8) | მდებარეობები |
ხმის სათაური
მისამართი | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | სიმბოლო | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 68 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | h | . | . | . | . | . | . | . | . | . | . | . | . |
ოფსეტი | მონაცემთა ტიპი | სახელი | განმარტება |
---|---|---|---|
0x0000 | uint(32) | მაჯიკური ბაიტები | |
0x0004 | uint(24) | ბლოკის სიგრძე | |
0x0007 | uint(8) | მდებარეობები |
ანგარიშის თავში არ არის რაიმე მონაცემები.
ეს მხოლოდ კონტეინერის როლს ასრულებს.
ანგარიშის თავში პირველი უნდა იყოს ანგარიშის სტრინგები; მას შემდეგ უნდა მივყვეთ ანგარიშის ინფორმაციას.
მოცულობის სტრიქონები
მისამართი | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | სიმბოლო | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
ოფსეტი | მონაცემთა ტიპი | სახელი | განმარტება |
---|---|---|---|
0x0000 | uint(32) | მაჯიკური ბაიტები | |
0x0004 | uint(24) | ბლოკის სიგრძე | |
0x0007 | uint(8) | მდებარეობები |
მისამართი | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | სიმბოლო | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 73 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | s | . | . | . | . | . | . | . | . | . | . | . | . |
ოფსეტი | მონაცემთა ტიპი | სახელი | განმარტება |
---|---|---|---|
0x0000 | uint(32) | მაჯიკური ბაიტები | |
0x0004 | uint(24) | ბლოკის სიგრძე | |
0x0007 | uint(8) | მდებარეობები | |
0x0008 | uint(32) | ტვირთის სიგრძე | აჩვენებს რამდენი ბიტი არის შემდეგი მონაცემების რეალურად სასარგებლო მონაცემები. მონაცემების დანარჩენი ნაწილი Volume-Strings სიაში აშკარად გაყიდულია. დოკუმენტებში, რომლებიც უფრო გვიან თარიღითაა, ეს 'დანარჩენი მონაცემები' არის 0x00, რაც შეიძლება მიუთითებდეს ინსტრუმენტების ნაკრების ნაკლოვანებებზე თამაშის განვითარების პროცესში, კერძოდ, რომ მხოლოდ ძალიან გვიან იზრუნა რაიმე განვითარება ბუფერის სწორად ინიციალიზაციაზე, რადგან არ აქვს გავლენა თამაშზე, იქნება მონაცემები ინიციალიზებული თუ არა. |
0x000c | uint(8)[] | ფაილების სახელების სია | ეს არის 0-ბაიტამდე შეწყვეტილი სიის ფაილების სახელებით, რომლებიც - მინიმუმ ამ მონაცემების კომპონენტში - მხოლოდ ASCII სიმბოლოების არსებობას მოელის. მონაცემების ანალიზზე ამ მონაცემთა ბლოკის უფრო დეტალური განხილვა საჭირო არ არის, რადგან მოცულობის ინფორმაციის მიხედვით პირდაპირ მითითებულია ფაილების სახელების ოფსეტები. |
წამების სტრიქონები არის ფაილების სახელების სია, რომლებიც მოცულობაში აარსებულია.
ხმის ინფორმაცია
მისამართი | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | სიმბოლო | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
ოფსეტი | მონაცემთა ტიპი | სახელი | განმარტება |
---|---|---|---|
0x0000 | uint(32) | მაჯიკური ბაიტები | |
0x0004 | uint(24) | ბლოკის სიგრძე | |
0x0007 | uint(8) | მდებარეობები |
ხმის ინფორმაცია შეიცავს დეტალურ ინფორმაციას ფაილებზე. ეს გარკვეულწილად წარმოადგენს FAT დირექტორიის ჩანაწერის ტიპს (FAT = ფაილის განაწილების ცხრილი)
ფაილების რაოდენობა მიიღება ბლოკის ზომის გაყოფით directory ჩანაწერების სიგრძეზე - 14 ბაიტი.
ცალკეული დირექტორიის ჩანაწერები თითოეულ შემთხვევაში შემდეგი სტრუქტურისთვის არიან განკუთვნილნი:
მისამართი | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | სიმბოლო | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ოფსეტი | მონაცემთა ტიპი | სახელი | განმარტება |
---|---|---|---|
0x0000 | uint(32) | ფაილების სახელების ოფსეტი | აჩვენებს, სად მდებარეობს ფაილის სახელი ფაილის სახელების სიაში (ვოლიუმის სტრინგებში) ხელნაწერის (!) მიხედვით. ეს ეხება მონაცემთა ბლოკის დასაწყისს. |
0x0004 | uint(32) | ფაილის ოფსეტი | მიანიშნებს, რომელი ოფსეტით მდებარეობს ფაილი მთლიანი მოცულობის ფაილში. |
0x0008 | uint(32) | ფაილის ზომა | მაჩვენებს, რამდენი ბაიტი აქვს ფაილს. |
0x000c | uint(16) | ნიშნები? | ალბათ დამატებითი ინფორმაცია ეხმარება ფაილის კოდირებაზე.
|
ხმის ბლოკი
მისამართი | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | სიმბოლო | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 42 | 4c | 48 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | B | L | H | . | . | . | . | . | . | . | . | . | . | . | . |
ოფსეტი | მონაცემთა ტიპი | სახელი | განმარტება |
---|---|---|---|
0x0000 | uint(32) | მაჯიკური ბაიტები | |
0x0004 | uint(24) | ბლოკის სიგრძე | |
0x0007 | uint(8) | მდებარეობები |
ვოლიუმის ბლოკი არის კონტეინერი, რომელიც შეიცავს ფაილებს. ის მოიცავს მხოლოდ ერთხელ - ბლოკის ფორმატის გამო - გადაჭარბებულად ფაილის ზომას და მის შემდეგ პირდაპირ მოჰყვება მომხმარებელის მონაცემები.
ტაილები
მისამართი | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | სიმბოლო | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 50 | 42 | 4d | 50 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | P | B | M | P | . | . | . | . | . | . | . | . | . | . | . | . |
ოფსეტი | მონაცემთა ტიპი | სახელი | განმარტება |
---|---|---|---|
0x0000 | uint(32) | მაგიური ბაიტები | |
0x0004 | uint(24) | ბლოკის სიგრძე | |
0x0007 | uint(8) | ფლაგები |
ტაილები არის Outpost-2-ს სპეციფიური
ბიტმაპ-გრაფიკის ფორმატი. ისინი მოიცავს 13 ტაილსეტს,
რომელიც "ჭ wells" well0000.bmp -დან well0012.bmp
-მდე,
რომლებიც იმყოფებიან მოცულობაში maps.vol.
ამასთან, ტაილსეტები / ჭები შეიცავს შემდეგს:
ფაილის სახელი | შინაარსი |
---|---|
well0000.bmp | 32x32პიქსელი ზომის, ლურჯი გრაფიკა - იდეალურია ტესტისთვის, რომ დაადგენთ, მუშაობს თუ არა თქვენი იმიჯის ლოდერი |
well0001.bmp | შეიცავს ნათელ ქანებს, მთების ქედებს ნათელ ქანებზე და countless ვარიანტებს კრატერების ნათელ ქანებზე |
well0002.bmp | შეიცავს ნათელი ქანების 'Doodads' - ანუ ელემენტები, რომლებიც შეიძლება მოთავსდეს ნათელ ქანებზე, რათა გაათავისუფლონ სივრცე (ანდა შეგნებულად, როგორც სტრუქტურა, მაგალითად კედლები), მათ შორის მცენარეულობა |
well0003.bmp | შეიცავს ქერქისებრ სტრუქტურას ნათელ ქანებზე |
well0004.bmp | შეიცავს ბნელ ქანებს, მთების ქედებს ბნელ ქანებზე და countless ვარიანტებს კრატერების ბნელ ქანებზე |
well0005.bmp | შეიცავს ბნელ ქანებზე 'Doodads' - ანუ ელემენტები, რომლებიც შეიძლება მოთავსდეს ბნელ ქანებზე, რათა გაათავისუფლონ სივრცე (ანდა შეგნებულად, როგორც სტრუქტურა, მაგალითად კედლები) |
well0006.bmp | შეიცავს ქერქისებრ სტრუქტურას ბნელ ქანებზე, ასევე გადასვლებს ნათელ და ბნელ ქანებს შორის |
well0007.bmp | შეიცავს ლავას, მათ შორის 4-5 ფრეგმენტის ანიმაციას |
well0008.bmp | შეიცავს ქვიშას და countless ვარიანტებს კრატერების ქვიშაში |
well0009.bmp | შეიცავს ქვიშის 'Doodads' - ანუ ელემენტები, რომლებიც შეიძლება მოთავსდეს ქვიშაზე, რათა გაათავისუფლონ სივრცე (ანდა შეგნებულად, როგორც სტრუქტურა, მაგალითად კედლები) |
well0010.bmp | შეიცავს 48 გადასვლას ქვიშიდან ნათელ და ბნელ ქანებზე |
well0011.bmp | შეიცავს რუკის პოლარული ყეფები, ბნელი ქანით როგორც ქვედა ფენა |
well0012.bmp | შეიცავს რუკის პოლარული ყეფები, ნათელი ქანით როგორც ქვედა ფენა |
მნიშვნელოვანია, რომ Tiles-ები წინასწარ არ იქნეს rendered, რათა მათ კეშირებული იყოს, რადგან დღის/ღამის ციკლის მონაცემები ჯერ კიდევ უნდა დამუშავდეს - და ძალიან ბევრი მონაცემი წარმოიქმნება.
Tiles-ები არის 8bpp გრაფიკა ინდექსირებული პალიტრით 32x32 პიქსელის გადაჭიმულობით, რომელიც ერთმანეთთან არის განლაგებული. თუმცა, ამგვარად შექმნილ Tileset-ში შეიძლება ბევრად მეტი იყოს
მთავარი კონტეინერი შედგება 2 სექციიდან: head
და data
.
ტილეს სათაური
მისამართი | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | სიმბოლო | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 68 | 65 | 61 | 64 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | h | e | a | d | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ოფსეტი | მონაცემთა ტიპი | სახელი | განმარტება |
---|---|---|---|
0x0000 | uint(32) | მაგიური ბაიტები | |
0x0004 | uint(24) | ბლოკის სიგრძე | |
0x0007 | uint(8) | ფლაგები | |
0x0008 | uint(32) | ვერსია / დროშები? | ეს შესაძლოა იყოს ფაილის ფორმატის ვერსიის მითითება; ყველა ჩემს ხელთ არსებულ ფაილში აქ იყო მნიშვნელობა |
0x000c | uint(32) | სიგანე (ჰორიზონტალური რეზოლუცია) | აჩვენებს, რამდენად ფართოა სურათის ფაილი (პიქსელებში). ყველა Outpost 2-ის ველის შემთხვევაში, აქ უნდა ველოდოთ მნიშვნელობას |
0x0010 | uint(32) | სიმაღლე (ვერტიკალური რეზოლუცია) | აჩვენებს, რამდენად მაღალია სურათის ფაილი (პიქსელებში). Outpost 2-ის ყველა ჭაში აქ იქნება მოსალოდნელი მნიშვნელობა |
0x0014 | uint(32) | ფართობის სიღრმე? | ამ მნიშვნელობის მნიშვნელობა უცნობია. რადგან ის ყველა შემოწმებულ ფაილში შეიცავს მნიშვნელობას |
0x0018 | uint(32) | ფერს სიღრმე 2? | ამ მნიშვნელობის მნიშვნელობა უცნობია. შესაძლოა, რომ ეს არის 'მიზნის' ფერის სიღრმე. |
ამ მონაცემების მიხედვით, შემდეგ იქნება სტანდარტიზებული RIFF ფორმატში წარმოდგენილი პალეტების ფაილი. ზუსტი სპეციფიკაცია მოიძება - რადგან პალეტები სხვაგანაც ჩანს - გვერდზე პალეტები.
ტაილების მონაცემები
მისამართი | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | სიმბოლო | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 64 | 61 | 74 | 61 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | d | a | t | a | . | . | . | . | . | . | . | . | . | . | . | . |
ოფსეტი | მონაცემთა ტიპი | სახელი | განმარტება |
---|---|---|---|
0x0000 | uint(32) | მაგიური ბაიტები | |
0x0004 | uint(24) | ბლოკის სიგრძე | |
0x0007 | uint(8) | ფლაგები |
ბოლოს, აქ უკვე მოდის სუფთა პიქსელური მონაცემები, ზემოდან მარცხნიდან მარჯვნივ რიგობრივად.
მონაცემების მნიშვნელობა იმ გრაფიკების შემთხვევაში, რომლებიც ჩვეულებრივ 8bpp-ბიტმაპების ფორმატშია წარმოდგენილი, соответствует цветის ინდექსს ფერის პალიტრაში.
თამაშის ძრავა ტაილს *შესაძლოა* მოთხოვნის საფუძველზე ხატავს.
ეს, სავარაუდოდ, უკავშირდება დღის და ღამის ციკლს, რომელიც 32 სხვადასხვა ტაილს იცნობს. ამ დროს, აშკარად, ბBrightness-ის მნიშვნელობიდან 'პატარა' იწურება. ზუსტი მნიშვნელობები ჯერ ვერ გაწვდილია, მე კი ანგარიშით ვმუშაობ
v *= (daylight / 48) + 0.25;
პიქსელების HSV მონაცემებით, სადაც daylight არის 0-31 სიხშირის მნიშვნელობა და v არის 0-1 შორის მნიშვნელობა. გარდა ამისა, უნდა აღინიშნოს, რომ რუკაზე თითოეულ მხარეს 16 ტაილის საზღვარი არსებობს (ეს განკუთვნილია ერთეულების უხილავი გამოჩენისთვის).
დამატებით, დღის და ღამის ციკლი თითო თამაშის ციკლზე მხოლოდ რუკის ერთი სვეტის განახლებას ახორციელებს.
დაიხვეწილი დღის და ღამის ციკლი შემდეგნაირად გამოიყურება:
პარტ
მისამართი | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | სიმბოლო | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 43 | 50 | 41 | 4c | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | C | P | A | L | . | . | . | . | . | . | . | . | . | . | . | . |
ოფსეტი | მონაცემთა ტიპი | სახელი | განმარტება |
---|---|---|---|
0x0000 | uint(32) | მაჯიური ბაიტები | |
0x0004 | uint(24) | პალეტების სიგრძე | სხვადასხვა ნორმალური ბლოკის ფორმატიდან, აჩვენებს იმ პალეტების რაოდენობას, რომელიც ამ ფაილში შეგიძლიათ მოიძიოთ - არა ბლოკის სიგრძეს ბაიტებში. |
0x0007 | uint(8) | ფლადები | შესაძლოა, როგორც ყოველთვის, დროშები. თუმცა, არ ვიცნობ არც ერთ დროშას; რადგან ყველა ცნობილი მნიშვნელობა |
რა მიზნით არის PRT
ზუსტად არ ვიცი; შესაძლებელი იქნებოდა მაგალითად 'Palette and Ressource Table' - რადგან ეს ფაილი - რომელიც მოიძიება როგორც op2_art.prt maps.vol-ში - სწორედ ასეთი ტიპისაა, ან ეს ფუნქცია საკმაოდ კარგად აღწერს.
ამ ფაილში არის პალეტების ჩამონათვალი, ყველა გამოყენებული bitmap-ის ცხრილი, ყველა ანიმაციის განსაზღვრის ინფორმაცია და კიდევ ბევრი უცნობი მონაცემი. ის მხოლოდ ნაწილობრივ ემთხვევა წინა კონტეინერის ფორმატს, რადგან არა ყველა ჩანაწერი შეესაბამება ამ სქემას.
CPAL
-სექცია (შესაძლოა, პალეტების კონტეინერს ნიშნავს) მხოლოდ პალეტების მონაცემებს მოიცავს, მიუთითებს, რამდენი ჩვეულებრივ 1052 ბაიტიანი 8-बიტური პალეტაა ხელმისაწვდომი.
1052-ბაიტიანი ციფრი არ ითვლება სავალდებულოდ, რადგან პალეტის ფორმატი პოტენციურად სხვადასხვა ზომის პალეტებს ითვალისწინებს. ის მხოლოდ იმ მონაცემებზე ვრცელდება, რომლითაც Outpost 2 გამოდის.
პალეტების ჩამონათვალის შემდეგ დაუყოვნებლივ და გარეშე შემავალი წარწერის, უკვე იწყება bitmap-ების ჩამონათვალი; ასევე დაუყოვნებლივ მოსდევს ანიმაციების ჩამონათვალი.
ორივე იწყება uint(32)-ით (ან ისევ uint24+uint8 flags?) რომელიც შეიცავს მონაცემების რაოდენობას.
პალეტები
მისამართი | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | სიმბოლო | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 50 | 50 | 41 | 4c | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | P | P | A | L | . | . | . | . | . | . | . | . | . | . | . | . |
ოფსეტი | მონაცემთა ტიპი | სახელი | განმარტება |
---|---|---|---|
0x0000 | uint(32) | მაგიური ბაიტები | |
0x0004 | uint(24) | პალეტების სიგრძე | არეგულირებს ნორმალურ ბლოკურ ფორმატთან შედარებით, ამ ფაილში არსებულ პალეტების რაოდენობას - არა ბლოკის სიგრძეს ბიტებში. |
0x0007 | uint(8) | ჯვრები | შესაძლოა, როგორც ჩვეულებრივ, დროშები. თუმცა, არცერთი დროშა არ არის ცნობილი; რადგან ყველა ცნობილი მნიშვნელობა |
პალეტის ინფორმაცია ძალიან მარტივად იკითხება.
ისინი შედგება თითოეული ჰედერისა და მონაცემთა სეგმენტისგან.
პალეტების სათაური
მისამართი | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | სიმბოლო | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 68 | 65 | 61 | 64 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | h | e | a | d | . | . | . | . | . | . | . | . | . | . | . | . |
ოფსეტი | მონაცემთა ტიპი | სახელი | განმარტება |
---|---|---|---|
0x0000 | uint(32) | მაგიური ბაიტები | |
0x0004 | uint(24) | პალეტების სიგრძე | არეგულირებს ნორმალურ ბლოკურ ფორმატთან შედარებით, ამ ფაილში არსებულ პალეტების რაოდენობას - არა ბლოკის სიგრძეს ბიტებში. |
0x0007 | uint(8) | ჯვრები | შესაძლოა, როგორც ჩვეულებრივ, დროშები. თუმცა, არცერთი დროშა არ არის ცნობილი; რადგან ყველა ცნობილი მნიშვნელობა |
0x0008 | uint(32) | პალეტების ფორმატის ვერსია? | სავარაუდოდ განსაზღვრავს, რომელი პალეტის ფორმატის ვერსიას იცავს პალეტა. ყველა Outpost2-ის პალეტას, როგორც ჩანს, აქვს ვერსია |
პალეტის ინფორმაცია
მისამართი | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | სიმბოლო | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 64 | 61 | 74 | 61 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | d | a | t | a | . | . | . | . | . | . | . | . | . | . | . | . |
ოფსეტი | მონაცემთა ტიპი | სახელი | განმარტება |
---|---|---|---|
0x0000 | uint(32) | მაგიური ბაიტები | |
0x0004 | uint(24) | ბლოკის სიგრძე | |
0x0007 | uint(8) | ჯვრები |
მონაცემების სექცია შედგება ინდივიდუალური პალეტების ჩანაწერებისგან. პალეტების ჩანაწერების რაოდენობა განისაზღვრება ბლოკის სიგრძის / 4-ზე.
ინდივიდუალური ჩანაწერები აქვთ შემდეგი, მარტივი სტრუქტურა;
მისამართი | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | სიმბოლო | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | 04 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ოფსეტი | მონაცემთა ტიპი | სახელი | განმარტება |
---|---|---|---|
0x0000 | uint(8) | წითელი კომპონენტი | მიანიშნებს ფერის წითელი წილის შესახებ |
0x0001 | uint(8) | მწვანე კომპონენტი | მიანიშნებს ფერის მწვანე წილის რაოდენობაზე |
0x0002 | uint(8) | ლურჯი კომპონენტი | მიანიშნებს ფერის ლურჯი წილის შესახებ |
0x0003 | uint(8) | უცნობი - დროშები? | არ არის გარკვეული, რას ნიშნავს ეს მნიშვნელობა, რადგან ის აშკარად ძირითადად არის |
პალეტებზე მხოლოდ ეს უნდა ითქვას, რომ ანიმაციებისთვის გამოყენებული პალეტების შემთხვევაში შემდეგი წესები მოქმედებს:
- პირველი ფერი ALWAYS არის გამჭვირვალე, არ აქვს მნიშვნელობა იქ რა მნიშვნელობაა მითითებული.
-
პალეტების ჩანაწერები 1-24 ითვლება როგორც მოთამაშის ფერი პალეტებში 1-8.
სადაც ფერები მოთამაშე 1-ისგან განსხვავებით მოდის, unclear არის ჩემთვის.
მივიჩნევ, რომ დარჩენილი ფერები არის hardcoded.
ბიტმაპები
მისამართი | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | სიმბოლო | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ოფსეტი | მონაცემთა ტიპი | სახელი | განმარტება |
---|---|---|---|
0x0000 | uint(32) | მოუწვდილი სიგანე | მიჩვენებს პიქსელური მონაცემების ხაზების სიგანის მნიშვნელობას ბაიტებში - რადგან ეს არის 4-ბაიტიანი საზღვრებისკენ მორგებული. ამგვარად, სწრაფად შეიძლება კონკრეტულ გამოსახულების ხაზზე გადასვლა. რატომ ინახება ეს მნიშვნელობა ცალკე, მიუხედავად იმისა, რომ ის შეიძლება გამოითვალოს, გაურკვეველია. |
0x0004 | uint(32) | ოფსეტი | შენიშნავს ბიტმაპში პირველ ხატულას ოფსეტს |
0x0008 | uint(32) | სიმაღლე | გამოაქვს სურათის სიმაღლე პიქსელებში |
0x000c | uint(32) | სიგანე | შეუთავსებს სიგანეს სურათის პიქსელებში |
0x0010 | uint(16) | ტიპი | ნაჩვენებია გამოსახულების ტიპი. აქ, როგორც ჩანს, საუბარია ბიტმასკაზე:
|
0x0012 | uint(16) | პალიტრა | განმარტავს, რომელი პალიტრა უნდა გამოყენებულ იქნას PRT ფაილში |
PRT ფაილის ეს მონაცემთა სტრუქტურა მიუთითებს, თუ როგორ არის შექმნილი სურათები, რომლებიც გამოიყენება სპრაიტებისთვის. ეს სურათები მსახურობენ როგორც ერთეული, რომელთა მრავალი ნაწილები შეიკვრება სპრაიტის ანიმაციის ჩარჩოში.
კონკრეტული სურათის მონაცემები იმალება
op2_art.BMP თამაშის დირექტორიაში.
რატომ აქვს ამ Bitmap ფაილს (მთავარად სწორი) RIFF Bitmap ჰედერი,
არ არის გარკვეული. სავარაუდოდ, Outpost 2 იყენებს სისტემურ API-ებს გრაფიკის ჩატვირთვისთვის,
ამ ჰედერის დროებით მიღების გზით, ხოლო შესაბამისი, ცვალებადი ველია შეცვლილი.
პიქსელური მონაცემები BMP ფაილში არის ადგილ Offset + uint32-Offset, რომელიც BMP ფაილში მდებარეობს მისამართზე 0x000A (RIFF Bitmap მონაცემების ოფსეტი), და კვლავ შეესაბამება ზოლური განლაგების იმავე წესით, რომელიც იწყება ზედა მარცხნიდან და მთავრდება მარჯვენა ქვედა მხარეს.
მონოქრომული 1bpp გრაფიკები შეიძლება დახატოს ისე, რომ ფერი 0 იყოს სრულყოფილი გამჭვირვალობა, ხოლო ფერი 1 იყოს ნახევრად გამჭვირვალე შავი/მუქი ნაცრისფერი, რადგან მონოქრომული გრაფიკები ჩვეულებრივ გამოიყენება მანქანების და შენობების ჩრდილებისთვის ანიმაციებში.
ამას უკვე მრავალი გრაფიკის შეკრება შეუძლია.
ანიმაცია
ახლა გადავდივართ Outpost 2-ის მონაცემთა ფორმატების დისციპლინების მეფე კლასაზე:
ანიმაციებზე.
ანიმაციის სიები იწყება გლობალური ჰედერით, რომელიც ძირითადად მონაცემების ვერიფიკაციისთვის არის განკუთვნილი. ამის შემდეგ მოდის კონკრეტული ანიმაციის განსაზღვრებები, რომლებიც 3 ეტაპად იყოფა:
-
ანიმაცია
ანიმაცია არის უმაღლესი ინსტანცია; იგი წარმოაჩენს ერთეულის, შენობის ან 'პარტიკულების ანიმაციის' (კომეტის დარტყმა, ამინდი, აფეთქება) ანიმაციას კონკრეტულ საწყის მდგომარეობაში. -
ფრემი
ფრემი არის ერთი სურათი ანიმაციის ფარგლებში. ანიმაცია შეიძლება შეიცავდეს ერთ ან რამდენიმე ფრემს. -
მოქნილი ფრემი
მოქნილი ფრემი არის ინფორმაცია იმის შესახებ, რომ კონკრეტული ბიტმაპი უნდა იყოს დახატული კონკრეტულ კრიტერიუმებზე დაყრდნობით კონკრეტულ ფრემის პოზიციაზე. ფრემი შეიძლება შეიცავდეს ერთ ან რამდენიმე მოქნილ ფრემს.
შემდეგ მოდის უკვე კონკრეტული ანიმაციის განსაზღვრებები.
მისამართი | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | სიმბოლო | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ოფსეტი | მონაცემთა ტიპი | სახელი | განმარტება |
---|---|---|---|
0x0000 | uint(32) | ანიმაციების რაოდენობა | რამდენი ანიმაციური მონაცემებია ხელმისაწვდომი |
0x0004 | uint(32) | ფრემების რაოდენობა | რამდენი ფრემი უნდა იყოს ჯამში |
0x0008 | uint(32) | პარამეტრების რაოდენობა | რამდენი სუბფრეიმი უნდა იყოს ჯამში |
0x000c | uint(32) | სავალდებულო ჩანაწერების რაოდენობა | რამდენი "არასავალდებულო ჩანაწერია" ხელმისაწვდომი. |
ანიმაცია
მისამართი | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | სიმბოლო | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0020 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ოფსეტი | მონაცემთა ტიპი | სახელი | განმარტება |
---|---|---|---|
0x0000 | uint(32) | უცნობი 1 | უცნობი ინფორმაცია |
0x0004 | uint(32) | ბოქსი: მარცხნივ | მიანიჭებს მარცხენა დასაწყისის (პიქსელებში) Bounding Box-ის. |
0x0008 | uint(32) | ბრენდული ყუთი: ზედა | ბრძანებს Bounding Box-ის ზედა დასაწყისს (პიქსელებში). |
0x000c | uint(32) | ბრძოლა: სიგანე | მიუთითებს Bounding Box-ის სიგანეს (პიქსელებში). |
0x0010 | uint(32) | ბოქსის საზღვრები: სიმაღლე | განსაზღვრავს Bounding Box-ის სიმაღლეს (პიქსელებში). |
0x0014 | uint(32) | Offset: X | მაკლავს ანიმაციის ჰორიზონტალურ ცენტრალურ წერტილს |
0x0018 | uint(32) | ოდრეკი: Y | ჩააწვდოს ანიმაციის ვერტიკალური ცენტრი |
0x001c | uint(32) | უცნობი 2 | უცნობი ინფორმაცია |
0x0020 | uint(32) | ფრემების რაოდენობა | მიუთითებს, თუ რამდენი ანიმაციის ჩარჩოა ამ ანიმაციაში ჩართული |
0x0024 | uint(32) | ბრენდის რაოდენობა | შეგიძლიათ მიუთითოთ, რამდენი ფანჯრის გამოყენებაა საჭირო ხატვის დროს |
აუცილებელი მონაცემები ზედა ფენის, ანიმაციის, ძირითადად ადმინისტრაციული მონაცემებია - Boundingbox აღნიშნავს ავტომობილის/შენობის მარკირების კოორდინატებს, როდესაც ის შერჩეულია და ასევე მიუთითებს, რომელი ტერიტორია უნდა იყოს დააჭერადი.
Offset ძირითადად განსაზღვრავს "ნულოვანი წერტილი"; წერტილი, რომელიც უნდა იყოს გათვალისწინებული ან უნდა იყოს გამოტანილი თამაშის შიდა კოორდინატებთან. უფრო მათემატიკურად რომ ვთქვათ: offset აქ განიხილავს კოორდინატების წარმოშობას.
Windows-ების შემთხვევაში, ისევე როგორც offset-ის შემთხვევაში, თითოეულ (დაახლოებით თითოეული Windows-ისთვის) 4 uint(32)-წარმოებულ მნიშვნელობებს მოიცავს, რომლებიც განსაზღვრავს ტერიტორიას, რომელიც ინდივიდუალური სუბფრეიმებისთვის გამოყენებადია. Windows-ის გარეთ, თუ ეს bitmap-ისთვის შესაბამისია, დახატვა არ უნდა მოხდეს.
ჩარჩო
მისამართი | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | სიმბოლო | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ოფსეტი | მონაცემთა ტიპი | სახელი | განმარტება |
---|---|---|---|
0x0000 | uint(8) | სუბფრეიმების რაოდენობა და გადართვა ვარიანტისთვის 1, 2 | ამი მნიშვნელობა შეიცავს:
|
0x0001 | uint(8) | უცნობი 1 და გადართვა ვარიანტისთვის 3, 4 | ამ მნიშვნელობაში შედის:
|
0x0002 | uint(8) | ნებაყოფლობითი 1 | უცნობი |
0x0003 | uint(8) | დამატებითი 2 | უცნობი |
0x0004 | uint(8) | მიუხედავად იმისა, რომ ეს არის ვარიანტი 3 | უცნობი |
0x0005 | uint(8) | ოპციონალური 4 | უცნობი |
ზედმხარის ჩარჩო
მისამართი | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | სიმბოლო | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ოფსეტი | მონაცემთა ტიპი | სახელი | განმარტება |
---|---|---|---|
0x0000 | uint(16) | ბიტმაპ-იდენტიფიკატორი | ჩაანაცვლებს, რომელი ბიტმაპი უნდა გამოყენებულ იქნას ამ სუბფრეიმისთვის |
0x0002 | uint(8) | უცნობი 1 | არ არის ცნობილი - თუმცა მე ძლიერ ვივარაუდებ, რომ ეს_render_პირიორიტეტთან (Z-შრე) არის დაკავშირებული. |
0x0003 | uint(8) | ქვემასპინძური იდენტიფიკატორი | აჩვენებს, რომელ სუბფრეიმში ვიმყოფებით |
0x0004 | sint(16) | ოფსეტი - ჰორიზონტალური | მიანიშნებს, სად უნდა იყოს სუბფრეიმი ფრეშის შიგნით განლაგებული, ან რამდენი პიქსელით უნდა იყოს ბიტმაპი ჰორიზონტალურად გადატანილი |
0x0006 | sint(16) | ოფსეტი - ვერტიკალური | გაძლევს ინფორმაციას, სად უნდა განთავსდეს სუბფრეიმი ჩარჩოს შიგნით, ან რამდენი პიქსელით უნდა გადაიწიოს ბიტმაპი ვერტიკალურად |
ამით შეგვიძლია შევკრიბოთ როგორც ინდივიდუალური ფრემები, ისე სრული ანიმაციები, რაც ამ კომპლექსური ანიმაციის, ინდექსით 500, მაგალითზე არის დემონსტრირებული
ანიმაცია 500
ანიმაცია 500 აჩვენებს, როგორ აუღებენ პლიმუთის ტრანსპორტერს, რომელიც ჩვეულებრივი მადნით არის დატვირთული. ეს არის ერთ-ერთი რამდენიმე ანიმაცია, რომელიც იყენებს ფანჯრის ფუნქციონალობას.
და ასე შეიძლება შეეწყოს სრული ანიმაცია.
სამწუხაროდ, არსებობს კიდევ ერთი პრობლემა ზედა დატვირთვის ფანჯარასთან, რადგან აქ შესაბამისი ბიტი გრაფიკული ტიპის ინფორმაციაში არ არის დაყენებული.
აქ არის კიდევ რამდენიმე მშვენივრად ანიმირებული სპრაიტი თამაშიდან:
მომხმარებლის ინტერფეისი
ახლა თამაშის მომხმარებლის ინტერფეისი აკლია, რომელიც ბრილიანტის მეტალის სტილშია შესრულებული.
მაგრამ აქაც ჩანს, რომ Dynamix საჭიროა, რომ რადიკალურად არაფერი შეცვალოს; აქ მხოლოდ Windows-ის მიერ გაწვდილი User32 და GDI32 API-ები გამოიყენება - განსაკუთრებით User32-ის რესურსების მართვა.
მაგალითად, ეს შეიძლება მოიხელმძღვანელოს ისეთ პროგრამებზე, როგორიცაა Angus Johnson-ის მიერ თავისუფალი პროგრამის სახით შექმნილი Resource Hacker, ან - თუ Linux / Mac OS-ზე Wine-ის გამოყენება გაწვდილი არ არის - icoutils-ში არსებული wrestool-ის მეშვეობით ამოიღონ.
ფაილის სახელი | შინაარსი |
---|---|
Outpost2.exe | შედგება მხოლოდ თამაშის გამოსახულებისგან, რომელიც აჩვენებს კოსმოსურ სადგურს New Terra-ზე |
op2shres.dll | შეიცავს ნახატების გარდა მართვის ელემენტებისთვის, როგორიცაა საზღვრები, ღილაკები, რადიო ღილაკები და ჩექბოქსები, ასევე დიალოგის ფონებს, ისტორიის მისიის ტექსტების თანმხლები სურათებს და მთავარი მენიუს ფონურ გამოსახულებას |
out2res.dll | შეიცავს თამაშის ინტერფეისის დეკორაციას, სიმბოლოებს ჩვეულებრივი და სპეციალური მეტალისთვის, დატვირთვის ეკრანს, დიალოგებისთვის გამოსახულებებს და სხვა კურსორების გამოსახულებებს, დამატებით თამაშის დირექტორიაში არსებულ ანიმირებულებთან ერთად |