อนิเมชั่น · bei.pm
รูปแบบไฟล์ที่อธิบายไว้ในหน้านี้อิงจากการวิเคราะห์ทางเทคนิคของทรัพย์สินทางปัญญาจาก Dynamix, Inc. และ Sierra Entertainment.
ทรัพย์สินทางปัญญาในปัจจุบันเป็นส่วนหนึ่งของกลุ่ม Activision Publishing, Inc. / Activision Blizzard, Inc. และในขณะนี้เป็นของ Microsoft Corp..
ข้อมูลเหล่านี้ถูกรวบรวมผ่าน การวิศวกรรมย้อนกลับ และ การวิเคราะห์ข้อมูล เพื่อวัตถุประสงค์ในการจัดเก็บข้อมูลและความสามารถในการทำงานร่วมกันกับข้อมูลประวัติศาสตร์.
ไม่มีสเปคที่เป็นกรรมสิทธิ์หรือเป็นความลับถูกใช้.
เกมนี้สามารถซื้อได้ในราคาเป็นดาวน์โหลดที่ gog.com.
ตอนนี้เราจะมาที่ระดับสูงสุดของสาขาภายในรูปแบบข้อมูล Outpost 2:
การเคลื่อนไหว.
รายการการเคลื่อนไหวจะเริ่มต้นด้วยหัวข้อทั่วไประดับโลก ซึ่งมีไว้เพื่อการตรวจสอบข้อมูลเป็นหลัก.
หลังจากนั้นจะเป็นการกำหนดการเคลื่อนไหวที่ชัดเจนซึ่งแบ่งออกเป็น 3 ระดับ:
-
การเคลื่อนไหว
การเคลื่อนไหวคือหน่วยที่สูงที่สุด; มันแสดงถึงการเคลื่อนไหวของหน่วยหนึ่ง, อาคารหนึ่ง หรือ 'การเคลื่อนไหวของอนุภาค' (การโจมตีของดาวหาง, สภาพอากาศ, การระเบิด) ในสถานการณ์เริ่มต้นที่กำหนด. -
เฟรม
เฟรมคือภาพเดียวภายในการเคลื่อนไหว. การเคลื่อนไหวสามารถมีเฟรมหนึ่งหรือหลายเฟรมได้. -
ซับเฟรม
ซับเฟรมคือข้อมูลเกี่ยวกับการที่ภาพบิตแมพ tertentu จะถูกวาดในตำแหน่งเฉพาะของเฟรมภายใต้เกณฑ์บางประการ. เฟรมสามารถมีซับเฟรมหนึ่งหรือหลายซับเฟรมได้.
หลังจากนั้นจะมีการกำหนดการเคลื่อนไหวแต่ละรายการตามมา.
Adr | 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) | จำนวนรายการที่เลือกได้ | มี"รายการที่เลือกได้"กี่รายการอยู่บ้าง |
อนิเมชัน
Adr | 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) | ออฟเซ็ต: X | ระบุจุดกึ่งกลางแนวนอนของการเคลื่อนไหว |
0x0018 | uint(32) | ออฟเซ็ต: Y | ระบุจุดกึ่งกลางแนวตั้งของการเคลื่อนไหว |
0x001c | uint(32) | ไม่รู้จัก 2 | ข้อมูลที่ไม่รู้จัก |
0x0020 | uint(32) | จำนวนเฟรม | ระบุจำนวนเฟรมอนิเมชั่นในอนิเมชั่นนี้ |
0x0024 | uint(32) | จำนวนหน้าต่าง | ระบุจำนวนหน้าต่างที่ต้องใช้ในการวาด |
ข้อมูลของชั้นบนสุดที่เกี่ยวข้องกับอนิเมชันนั้นเป็นข้อมูลการจัดการเป็นหลัก - Boundingbox หมายถึงพิกัดของเครื่องหมายรอบรถยนต์/อาคาร เมื่อมันถูกเลือกและยังบอกถึงพื้นที่ที่สามารถคลิกได้ด้วย.
ออฟเซ็ตเป็นตัวกำหนด "จุดศูนย์"; จุดที่ต้องนำไปคำนวณหรือหักออกจากพิกัดภายในเกม. กล่าวอีกอย่างหนึ่งได้ว่า: ออฟเซ็ตที่นี่หมายถึงจุดกำเนิดของพิกัด.
ในกรณีของหน้าต่าง (Windows) เช่นเดียวกับออฟเซ็ต จะมีค่า uint(32) จำนวน 4 ค่า (ต่อ 1 หน้าต่าง) ที่กำหนดพื้นที่ซึ่งใช้ได้สำหรับแต่ละซับเฟรม. นอกเหนือจากหน้าต่าง หากไม่ได้กำหนดไว้ในบิตแมพ จะไม่สามารถวาดได้.
กรอบ
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | อักขระ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ออฟเซ็ต | ชนิดข้อมูล | ชื่อฟิลด์ข้อมูล | คำอธิบาย |
---|---|---|---|
0x0000 | uint(8) | จำนวน Subframe และ Toggle สำหรับตัวเลือก 1, 2 | ค่านี้ประกอบด้วย:
|
0x0001 | uint(8) | ไม่รู้จัก 1 และปุ่มเปลี่ยนสำหรับตัวเลือก 3, 4 | ค่าดังกล่าวประกอบด้วย:
|
0x0002 | uint(8) | ตัวเลือก 1 | ไม่ทราบ |
0x0003 | uint(8) | ตัวเลือก 2 | ไม่ทราบ |
0x0004 | uint(8) | ทางเลือก 3 | ไม่ทราบ |
0x0005 | uint(8) | ตัวเลือก 4 | ไม่ทราบ |
ซับเฟรม
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | อักขระ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ออฟเซ็ต | ชนิดข้อมูล | ชื่อฟิลด์ข้อมูล | คำอธิบาย |
---|---|---|---|
0x0000 | uint(16) | ไอดีแผนภาพ | ระบุว่า Bitmap ใดจะถูกใช้สำหรับ Subframe นี้ |
0x0002 | uint(8) | ไม่รู้จัก 1 | ยังไม่ทราบ - แต่ฉันสงสัยอย่างมากว่านี่น่าจะเกี่ยวข้องกับลำดับความสำคัญของการเรนเดอร์ (Z-Layer) |
0x0003 | uint(8) | Subframe-Id | ระบุว่าเราอยู่ใน Subframe ไหน |
0x0004 | sint(16) | ออฟเซ็ต - แนวนอน | ระบุว่าควรวาง Subframe ไว้ที่ไหนภายในกรอบ หรือควรเลื่อน Bitmap ออกไปทางขวากี่พิกเซล |
0x0006 | sint(16) | ออฟเซ็ต - แนวตั้ง | ระบุว่าภายในเฟรมจะวางซับเฟรมไว้ที่ไหน หรือจะย้ายบิตแมพในแนวตั้งขึ้นหรือลงกี่พิกเซล |
ด้วยเหตุนี้เราสามารถประกอบเฟรมแต่ละเฟรมรวมถึงอนิเมชั่นทั้งหมดได้ตามต้องการ โดยยกตัวอย่างที่อนิเมชั่นที่ซับซ้อนซึ่งมีดัชนี 500 เป็นตัวอย่าง
การเคลื่อนไหว 500
อนิเมชัน 500 แสดงให้เห็นว่า รถขนส่ง Plymouth ที่บรรทุกแร่ธรรมดากำลังถูกขนถ่ายออก ซึ่งเป็นหนึ่งในอนิเมชันไม่กี่ตัวที่ใช้ฟังก์ชันการจัดการหน้าต่าง
และนี่คือวิธีที่เราสามารถรวมอนิเมชันทั้งหมดเข้าด้วยกัน
น่าเสียดายที่มีปัญหากับฝาประตูโหลดด้านบน เนื่องจากบิตที่เกี่ยวข้องในข้อมูลประเภทกราฟิกไม่ได้ถูกตั้งค่า
นี่คือสไปรต์ที่สวยงามอื่นๆ ที่มีอนิเมชันจากเกม: