อนิเมชั่น · bei.pm

เผยแพร่เมื่อ 19/11/2015·อัปเดตเมื่อ 13/02/2025·ไทย
ข้อความนี้ได้รับการแปลโดยอัตโนมัติผ่าน OpenAI GPT-4o Mini

รูปแบบไฟล์ที่อธิบายไว้ในหน้านี้อิงจากการวิเคราะห์ทางเทคนิคของทรัพย์สินทางปัญญาจาก Dynamix, Inc. และ Sierra Entertainment.
ทรัพย์สินทางปัญญาในปัจจุบันเป็นส่วนหนึ่งของกลุ่ม Activision Publishing, Inc. / Activision Blizzard, Inc. และในขณะนี้เป็นของ Microsoft Corp..

ข้อมูลเหล่านี้ถูกรวบรวมผ่าน การวิศวกรรมย้อนกลับ และ การวิเคราะห์ข้อมูล เพื่อวัตถุประสงค์ในการจัดเก็บข้อมูลและความสามารถในการทำงานร่วมกันกับข้อมูลประวัติศาสตร์.
ไม่มีสเปคที่เป็นกรรมสิทธิ์หรือเป็นความลับถูกใช้.

เกมนี้สามารถซื้อได้ในราคาเป็นดาวน์โหลดที่ gog.com.

ตอนนี้เราจะมาที่ระดับสูงสุดของสาขาภายในรูปแบบข้อมูล Outpost 2:
การเคลื่อนไหว.

รายการการเคลื่อนไหวจะเริ่มต้นด้วยหัวข้อทั่วไประดับโลก ซึ่งมีไว้เพื่อการตรวจสอบข้อมูลเป็นหลัก.
หลังจากนั้นจะเป็นการกำหนดการเคลื่อนไหวที่ชัดเจนซึ่งแบ่งออกเป็น 3 ระดับ:

  1. การเคลื่อนไหว
    การเคลื่อนไหวคือหน่วยที่สูงที่สุด; มันแสดงถึงการเคลื่อนไหวของหน่วยหนึ่ง, อาคารหนึ่ง หรือ 'การเคลื่อนไหวของอนุภาค' (การโจมตีของดาวหาง, สภาพอากาศ, การระเบิด) ในสถานการณ์เริ่มต้นที่กำหนด.
  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

ค่านี้ประกอบด้วย:

  • 0x7F (บิตมาสก์): จำนวนซับเฟรมที่ใช้ในเฟรมนี้
  • 0x80: ข้อมูลเกี่ยวกับการมีอยู่ของ Optional 1 และ 2
0x0001 uint(8) ไม่รู้จัก 1 และปุ่มเปลี่ยนสำหรับตัวเลือก 3, 4

ค่าดังกล่าวประกอบด้วย:

  • 0x7F (มาสก์บิต): ไม่ทราบ - ฉันมีความเห็นว่าเป็นจำนวน Gameticks ที่ใช้เวลาจนถึงกรอบถัดไปที่จะปรากฏ
  • 0x80: ข้อมูลเกี่ยวกับการมีอยู่ของ Optional 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 ที่บรรทุกแร่ธรรมดากำลังถูกขนถ่ายออก ซึ่งเป็นหนึ่งในอนิเมชันไม่กี่ตัวที่ใช้ฟังก์ชันการจัดการหน้าต่าง

และนี่คือวิธีที่เราสามารถรวมอนิเมชันทั้งหมดเข้าด้วยกัน
น่าเสียดายที่มีปัญหากับฝาประตูโหลดด้านบน เนื่องจากบิตที่เกี่ยวข้องในข้อมูลประเภทกราฟิกไม่ได้ถูกตั้งค่า

นี่คือสไปรต์ที่สวยงามอื่นๆ ที่มีอนิเมชันจากเกม:

การเรนเดอร์ของอนิเมชัน 500 ได้รับการแสดงให้เห็น

อนิเมชัน 500 ที่ถูกประกอบเสร็จสมบูรณ์

โรงงานอาคารพลีมัธ

ท่าอวกาศอีเดน

ศูนย์การแพทย์อีเดน

SCAT

ท่าอวกาศพลีมัธ

อีสเตอร์เอ็กซ์:
ซานตาคลอส

อีสเตอร์เอ็กซ์:
สุนัขของแดน