ฉันจะใช้สไปรต์ 2D ที่แสดงผลล่วงหน้าซึ่งสามารถเผชิญกับทิศทางใดได้อย่างไร


28

ฉันได้รับ Googling ว่าเกมเช่น Clash of Clans ให้กองทหารของพวกเขาอย่างไรและดูเหมือนว่าพวกเขาเป็นแบบจำลอง 3 มิติล่วงหน้าไปยัง 2D sprite ชีทก่อนรันไทม์และแสดงภาพ 2 มิติเหล่านั้นที่รันไทม์ อย่างไรก็ตามกองทหารใน Clash of Clans สามารถเผชิญกับทิศทางใดก็ได้

ในเกมที่คล้ายกันของฉันถ้าผมจะสร้างภาพทุกปฐมนิเทศ (0-360 องศา) สำหรับประเภททหารทุก (มี 18 ชนิด) ที่แต่ละเฟรมในการเคลื่อนไหวของพวกเขาพวกเขาจะมีการผลิตขนาดใหญ่จำนวนของภาพ ฉันไม่สามารถจินตนาการได้ว่านี่คือสิ่งที่นักพัฒนารายอื่นกำลังทำอยู่ดังนั้นฉันจะทำสิ่งนี้สำเร็จจริง ๆ ได้อย่างไร


2
เทคนิคที่คุณอ้างถึงนั้นเรียกว่า "Billboarding" โดยวิธีการ
Weckar E.

คำตอบ:


45
  1. โดยทั่วไปมีทิศทางน้อยกว่า 360 ทิศทาง กรณีทั่วไปคือ 8 หรือ 16 ภาพเคลื่อนไหวค่อนข้างสั้นเช่นกัน

  2. ระบบอัตโนมัติคือเพื่อนของคุณ เขียนสคริปต์ Blender / 3DMax / etc เพื่อโหลดโมเดลจากรายการแสดงผลในทุกเฟรมและทิศทางที่ต้องการไปยังรูปภาพ แท็กรูปภาพตามเนื้อหาและระบุที่อยู่จากเกม

  3. บรรจุทุกอย่างลงใน atlases texture (aka sprite sheets) เพื่อการเข้าถึงที่รวดเร็วยิ่งขึ้น

ในท้ายที่สุดคุณจะได้พบกับสไปรต์มากมายที่อัดแน่นอยู่ในแผนที่ของโหล ไม่ใช่เรื่องใหญ่อะไรเช่นนี้;)

ฉันหาภาพจาก CoC ไม่ได้ แต่ที่นี่คือ Diablo II ซึ่งใช้วิธีการเดียวกันกับภาพเคลื่อนไหวตัวละคร เช่นการโจมตีระยะประชิดของ Amazon:

enter image description here


4
ความสมดุลของการเรนเดอร์พลังงาน / เวลาเทียบกับพื้นที่เก็บข้อมูลและเวลาดาวน์โหลด
M. Mimpen

3
"แผนที่" คืออะไร? ลิงก์ใด ๆ
BЈовић

7
@ BЈовићมองหา "Texture Atlas" เป็นแนวคิดทั่วไป
Kromster พูดว่าสนับสนุน Monica

2
อาจเป็นเรื่องที่น่าสังเกตว่าในการหารือเกี่ยวกับเทคนิคนี้โดยนักพัฒนาของ Blizzard North พวกเขาได้ข้อสรุปว่าเป็นมาตรการหยุดช่องว่างแปลก ๆ เพื่อจัดการกับช่วงเวลาที่น่าอึดอัดใจในความสามารถด้านกราฟิกของพีซี ท้ายที่สุดความคุ้มค่า มีการสัมภาษณ์เกี่ยวกับเรื่องนี้และในที่สุดมันก็ใช้เวลามากในการแสดงทุกอย่างอีกครั้งซึ่งข้อสรุปทั่วไปคือมันไม่ใช่วิธีการที่ยอดเยี่ยม (และเกมต่อไปของพวกเขาจะเป็น 3D)
KRyan

1
@KRyan นอกจากนี้ดี! ฉันเดาว่าเป็นเพราะจำนวน NPC และอุปกรณ์ VAST จำนวนมากใน D2 สำหรับ CoC และแพลตฟอร์มมือถือนั่นคือความสมดุลที่แตกต่าง
Kromster พูดว่าสนับสนุน Monica

8

โปรดระลึกถึงความละเอียดต่ำของภาพเหล่านี้ด้วย มีอีกสองสิ่งที่คุณสามารถทำได้เพื่อประหยัดพื้นที่แม้ว่าฉันจะไม่ทราบว่า Clash of Clans ประเภทใดที่ใช้:

  • คุณสามารถตั้งค่าตำแหน่งสำหรับกองทหารเพื่อเผชิญกับทิศทางมาตรฐาน (N, E, S, W, NE, SE, SW, NW) บ่อยกว่าไม่ได้แล้วปรับให้เหมาะสำหรับทิศทางมาตรฐานเท่านั้น

  • คุณสามารถใช้วิธีการรวมซึ่งคุณแสดงผลล่วงหน้าเพียงบางทิศทางเท่านั้น ในระหว่างเฟรมคุณสามารถแสดงกองทหารที่ไม่ตรงกับภาพที่มีอยู่หรือใช้ภาพที่ใกล้เคียงที่สุดหากคุณหมดเวลา

  • ใช้สมมาตรซ้าย / ขวาทุกครั้งที่ทำได้เพื่อลดจำนวนเฟรมที่จัดเก็บไว้ครึ่งหนึ่ง

  • คุณสามารถจัดลำดับความสำคัญของภาพเคลื่อนไหวบางอย่างเช่นการเดินและการพักผ่อนจัดเก็บเส้นทางและเฟรมเพิ่มเติมสำหรับสิ่งเหล่านี้ จากนั้นลดความสำคัญของภาพเคลื่อนไหวอื่น ๆ เช่นการแกว่งดาบที่คุณเก็บทิศทางและเฟรมให้น้อยลง (ฉันแนะนำให้เก็บทิศทางเพิ่มเติมสำหรับเฟรมแรกและเฟรมสุดท้ายของการแกว่ง)

  • คุณสามารถปลอมเส้นทางที่เหลือโดยใช้ภาพที่ใกล้เคียงที่สุดแล้วยืดออก

โดยรวมแล้วเราอาจกำลังพูดถึง 18 หน่วยถึง 8 ทิศทางอาจเป็นภาพเคลื่อนไหว 2 วินาทีที่ 20 เฟรมต่อวินาทีโดยเฉลี่ย 64x64 พิกเซลและประมาณ 2 ไบต์ต่อพิกเซล นั่นคือ 18x2x20x64x64x2 = 50 MB พวกเขายังอาจขยายจำนวนทิศทางความละเอียดและจำนวนเฟรมตามความสามารถของอุปกรณ์และจำนวนหน่วยที่ใช้บนแผนที่


2
นอกจากนี้คุณยังสามารถเปลี่ยนจากป้ายโฆษณาเป็นแบบจำลอง 3 มิติได้หากคุณซูมเข้าใกล้วัตถุที่ต้องการดังนั้นจึงเป็นการปิดภาพ 3 มิติแล้วใช้ 2d ที่เร็วขึ้นเมื่อคุณมีจำนวนมากทำงานอยู่เบื้องหลัง การจัดการการเปลี่ยนแปลงอย่างราบรื่นอาจเป็นเรื่องยุ่งยาก
ทิม B

@TimB ไหนดีโดยเฉพาะอย่างยิ่งเพราะคุณแสดงผลความละเอียดสูงและใช้รูปภาพสำหรับความละเอียดต่ำ
ปีเตอร์

2

นอกเหนือจากคำตอบ @Kromster โปรดทราบว่ารูปภาพมักถูกบีบอัดอย่างมีนัยสำคัญและในรูปภาพ "atlas" ขนาดใหญ่ที่มีองค์ประกอบที่ทำซ้ำมากมาย (เช่นพื้นหลังว่าง) การบีบอัดมีความสำคัญ ดังนั้น "ขนาด" สุดท้ายของภาพไม่ได้เป็นเพียงการคูณขนาดภาพแต่ละภาพโดยตรง


5
การบีบอัดทำงานแตกต่างกันสำหรับ GPU มากกว่า jpegs โดยเฉพาะ GPU บนมือถือในอุปกรณ์ที่เขียนขึ้นสำหรับ Clash of Clans en.wikipedia.org/wiki/S3_Texture_Compressionกล่าวอีกนัยหนึ่ง: พื้นหลังว่างเปล่านั้นไม่เกี่ยวข้องกับการบีบอัดพื้นผิว 100%
ปีเตอร์

-2

สำหรับตัวอย่างคลาสสิกฉันแนะนำให้คุณดาวน์โหลด Doom ดั้งเดิมซึ่งใช้สไปรต์ 2D ในสภาพแวดล้อมแบบหลอกหลอก -3D สไปรท์มีทิศทางหันหน้า 8 ทิศทาง (สัมพันธ์กับมุมมองของผู้เล่น) และจากหน่วยความจำประมาณ 8 ขนาดต่างกันเมื่อเข้าใกล้ นี่เป็นสิ่งที่มองเห็นได้ แต่มันก็พอยอมรับได้สำหรับการเล่นเกม ในเกม Clash หรือเกมที่มีมิติเท่ากันอื่น ๆ ไม่จำเป็นต้องพิจารณาระยะทางแน่นอน


ไม่มีขนาดแตกต่างกัน การเรนเดอร์เพิ่งจะไร้เดียงสาที่ใกล้เคียงที่สุดปรับขึ้น / ลงตามที่ต้องการ
...

@R .. ขอบคุณสำหรับการแก้ไข ไม่กี่ปีที่ผ่านมาตั้งแต่ฉันเล่น! :)
เกรแฮม

1
ขออภัย แต่นี่ไม่ได้ตอบคำถาม "ฉันจะใช้ .. " ได้อย่างไร
Kromster กล่าวว่าสนับสนุน Monica

@ Kromster ดังนั้นสำหรับคำถามที่ถามว่า "ฉันจะใช้สิ่งนี้ได้อย่างไร" ฉันไม่ตอบคำถามด้วยภาพรวมอย่างรวดเร็วของเกมคลาสสิคที่นำมาใช้ (8 มุมแทนที่จะเป็น 360) และกล่าวถึงว่าพวกเขาทำได้อย่างไรโดยเฉพาะ ดูง่ายเมื่อคุณเล่นเพราะเห็นได้ชัดว่า OP ไม่สามารถบอกได้ใน Clash? และสังเกตเห็นความแตกต่างระหว่างกรณีทั่วไปและกรณีเฉพาะของมุมมองภาพสามมิติหรือไม่? ฉันจะยอมรับอย่างอิสระว่ามันไม่ดีเท่าคำตอบของคุณ แต่มีความแตกต่างระหว่างคำตอบที่มีคุณภาพต่ำกว่าและไม่ตอบคำถาม
เกรแฮม
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.