Làm cách nào tôi có thể triển khai các họa tiết 2D được kết xuất sẵn có thể đối mặt với bất kỳ hướng nào?


28

Tôi đã hiểu được cách các trò chơi như Clash of Clans kết xuất quân của họ và có vẻ như chúng là các mô hình 3D được kết xuất trước thành các tấm sprite 2D trước khi chạy và hiển thị các hình ảnh 2d đó khi chạy. Tuy nhiên, quân đội trong Clash of Clans có thể phải đối mặt với bất kỳ hướng nào.

Trong trò chơi tương tự của tôi, nếu tôi tạo một hình ảnh cho mọi hướng (0-360 độ) cho mỗi loại quân đội (có 18 loại) ở mỗi khung hình trong hoạt hình của chúng, chúng sẽ phải tạo ra một lượng lớn hình ảnh. Tôi không thể tưởng tượng đây là những gì các nhà phát triển khác đang làm, vậy làm thế nào tôi thực sự có thể hoàn thành việc này?


2
Nhân tiện, kỹ thuật mà bạn đang đề cập đến được gọi là "Billboarding".
Weckar E.

Câu trả lời:


45
  1. Thông thường có ít hơn 360 hướng. Trường hợp phổ biến là 8 hoặc 16. Ảnh động cũng khá ngắn.

  2. Tự động hóa là bạn của bạn. Viết tập lệnh Blender / 3DMax / etc để tải mô hình từ danh sách, hiển thị nó trong mọi khung hình cần thiết và hướng đến một hình ảnh. Tag hình ảnh theo nội dung và giải quyết chúng từ trò chơi.

  3. Đóng gói mọi thứ vào tập bản đồ họa (còn gọi là tấm sprite) để truy cập nhanh hơn.

Cuối cùng, bạn sẽ kết thúc với một vài nhánh cây, được đóng gói gọn gàng thành hàng tá atlours. Không phải là một vấn đề lớn;)

Tôi không thể tìm thấy hình ảnh từ CoC, nhưng đây là Diablo II, sử dụng cách tiếp cận tương tự với hoạt hình nhân vật. Ví dụ: cuộc tấn công cận chiến của Amazon:

nhập mô tả hình ảnh ở đây


4
Sự cân bằng của sức mạnh / thời gian kết xuất so với không gian lưu trữ và thời gian tải xuống.
M. Mimpen

3
Một "bản đồ" là gì? Bất kỳ liên kết?
BЈовић 14/03/2017

7
@ BЈовић Tìm "Texture Atlas". Đó là khái niệm rất phổ biến.
Kromster nói ủng hộ Monica

2
Có thể đáng chú ý rằng trong các cuộc thảo luận về kỹ thuật này của các nhà phát triển Blizzard North, về cơ bản họ đã đi đến kết luận rằng đó là một biện pháp ngăn chặn kỳ lạ để xử lý một khoảnh khắc khó xử trong khả năng đồ họa của PC, và thậm chí sau đó nó không thực sự cuối cùng là giá trị nó. Có một cuộc phỏng vấn về nó, và cuối cùng phải mất rất nhiều thời gian để kết xuất lại mọi thứ mà kết luận chung là đó không phải là một cách tiếp cận tuyệt vời (và trò chơi tiếp theo của họ chắc chắn sẽ là 3D).
KRyan

1
@KRyan bổ sung tốt! Tôi đoán đó là do số lượng NPC và thiết bị VAST trong D2. Đối với CoC và nền tảng di động đó là một sự cân bằng khác nhau.
Kromster nói hỗ trợ Monica

8

Cũng nên nhớ độ phân giải thấp của những hình ảnh này. Có một vài điều nữa bạn có thể làm để tiết kiệm dung lượng, mặc dù tôi không biết những thứ nào được Clash of Clans sử dụng:

  • Bạn có thể thiên vị vị trí cho quân đội để đối mặt với các hướng tiêu chuẩn (N, E, S, W, NE, SE, SW, NW) thường xuyên hơn không, sau đó chỉ tối ưu hóa cho các hướng tiêu chuẩn.

  • Bạn có thể thực hiện một cách tiếp cận kết hợp, trong đó bạn chỉ kết xuất trước một số hướng. Trong khung hình, bạn có thể hiển thị các đội quân không khớp với hình ảnh hiện có hoặc sử dụng hình ảnh gần nhất nếu bạn hết thời gian.

  • Sử dụng đối xứng trái / phải bất cứ khi nào có thể để cắt giảm một nửa số khung được lưu trữ.

  • Bạn có thể ưu tiên một số hình ảnh động nhất định như đi bộ và nghỉ ngơi, lưu trữ nhiều hướng và khung cho những thứ này. Sau đó khử kích hoạt các hình ảnh động khác, như vung kiếm, nơi bạn lưu trữ ít hướng và khung hơn (tôi khuyên bạn nên giữ nhiều hướng hơn cho khung đầu tiên và cuối cùng của cú swing).

  • Bạn có thể giả mạo các hướng còn lại bằng cách sử dụng hình ảnh gần nhất sau đó kéo dài nó.

Nhìn chung, chúng ta có thể nói về 18 đơn vị, tối đa 8 hướng, có thể là 2 giây hoạt hình ở 20 khung hình mỗi giây, trung bình 64x64 pixel và khoảng 2 byte mỗi pixel. Đó là 18x2x20x64x64x2 = 50 MB. Họ cũng có thể chia tỷ lệ số hướng, độ phân giải và số khung dựa trên khả năng của thiết bị và số lượng đơn vị được sử dụng trên bản đồ.


2
Bạn cũng có thể chuyển từ bảng quảng cáo sang mô hình 3d nếu bạn phóng to gần một đối tượng nhất định - vì vậy, nó ở gần 3d và sau đó sử dụng 2d nhanh hơn khi bạn có nhiều thứ chạy xung quanh trong nền. Xử lý quá trình chuyển đổi suôn sẻ có thể là khó khăn mặc dù.
Tim B

@TimB Điều này đặc biệt tốt vì cuối cùng bạn hiển thị độ phân giải cao và sử dụng hình ảnh cho độ phân giải thấp.
Peter

2

Ngoài câu trả lời @Kromster, lưu ý rằng hình ảnh thường được nén đáng kể và trong các hình ảnh "bản đồ" lớn có nhiều yếu tố lặp lại (ví dụ: nền trống), việc nén là rất đáng kể. Vì vậy, "kích thước" cuối cùng của hình ảnh không chỉ là một phép nhân thẳng của kích thước hình ảnh riêng lẻ.


5
Nén hoạt động khác nhau đối với GPU so với jpeg, đặc biệt là GPU di động trong thiết bị Clash of Clans được viết cho. vi.wikipedia.org/wiki/S3_Texture_Compression Nói cách khác: nền trống 100% không liên quan đến nén kết cấu.
Peter

-2

Đối với một ví dụ cổ điển, tôi khuyên bạn nên tải xuống Doom gốc, sử dụng các họa tiết 2D trong môi trường giả 3D. Các họa tiết có 8 hướng đối diện (liên quan đến quan điểm của người chơi) và từ bộ nhớ khoảng 8 kích cỡ khác nhau khi chúng tiến gần hơn. Điều này rất rõ ràng, nhưng nó đủ chấp nhận cho trò chơi. Trong Clash hoặc các trò chơi xem isometric khác, tất nhiên không cần phải xem xét khoảng cách.


Không có kích cỡ khác nhau. Kết xuất chỉ cần tăng / giảm xuống hàng xóm gần nhất ngây thơ khi cần thiết.
R ..

@R .. Cảm ơn đã sửa. Đã vài năm kể từ khi tôi chơi nó! :)
Graham

1
Xin lỗi, nhưng điều này không trả lời câu hỏi "Làm thế nào tôi có thể thực hiện ..".
Kromster nói hỗ trợ Monica

@Kromster Vì vậy, đối với một câu hỏi đặt ra "làm thế nào để tôi thực hiện điều này?", Tôi không trả lời câu hỏi bằng một tổng quan nhanh về một trò chơi cổ điển đã thực hiện nó (8 góc thay vì 360), và đề cập đến việc họ đã làm như thế nào Dễ thấy khi bạn chơi nó, vì OP dường như không thể nói trong Clash? Và lưu ý sự khác biệt giữa trường hợp chung đó và trường hợp cụ thể của một quan điểm đẳng cự? Tôi sẽ thoải mái thừa nhận nó gần như không tốt bằng câu trả lời của bạn, nhưng có một sự khác biệt giữa câu trả lời chất lượng thấp hơn và không trả lời câu hỏi.
Graham
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.