Trong 2.5D, bạn sử dụng các tài sản 2D / kỹ thuật kết xuất để tạo cảm giác về môi trường 3D.
Bây giờ, với định nghĩa đó, trong kịch bản có khả năng mơ hồ sau đây, một số chi tiết được yêu cầu:
Trò chơi A
Sử dụng đồ họa 3D, GPU được tăng tốc và tất cả (các đối tượng trò chơi là mắt lưới, không phải hình ảnh), với một góc camera cố định. Hãy làm cho nó thậm chí còn tồi tệ hơn, hình chiếu là chính tả, cổ điển 63,43 độ. Cách duy nhất để nhận thấy ngay từ cái nhìn đầu tiên rằng đồ họa không phải là 2D là vì 3DGC, ngoại trừ việc bạn kết xuất chúng một cách cẩn thận, dễ dàng phân biệt với các họa tiết vẽ tay, không quan trọng là phép chiếu được sử dụng để hiển thị chúng. Bạn có thể thử nghiệm với các kỹ thuật kết xuất, tham số, đổ bóng khác nhau, v.v. và bạn sẽ gặp khó khăn khi cố gắng che giấu sự thật rằng chúng là các lưới 3D.
Trò chơi B
Một cổng của Trò chơi A, nhưng các nền tảng nhắm mục tiêu được biết là có phần cứng không xử lý đồ họa 3D rất tốt hoặc hoàn toàn không xử lý nó. Sau đó, cổng thay thế các mắt lưới bằng các họa tiết. Ví dụ, nó vẫn sử dụng Hộp giới hạn 3D để va chạm và các đối tượng có thuộc tính vị trí với các giá trị x, y và z, vì logic trò chơi hầu như không được chạm hoặc không chạm vào, chỉ có mã kết xuất được thay đổi.
Vì các họa tiết của Game B là biểu hiện của tài sản 3D của Game A và, để khiến mọi thứ trở nên mơ hồ hơn, Game A không làm bất cứ điều gì đòi hỏi các shader phức tạp, trong 99% tất cả các GPU ngoài đó bạn không thể phân biệt khung hình với Game B của một khung từ Trò chơi A.
Trong 2.5D, sự tương tác giữa các đối tượng trò chơi bị giới hạn trong tập hợp các tình huống trong đó ảo ảnh 3D không thể bị xâm phạm. Ví dụ, để đại diện cho hai nhân vật ôm nhau, bạn sẽ phải tạo một tệp hình ảnh duy nhất với hai ký tự tương tác, vì cố gắng thể hiện hành động ôm chỉ sử dụng một hình ảnh cho mỗi ký tự là quá khó hoặc không thể. Có lẽ bạn có thể đi kèm với một cơ thể nhân vật được chia thành các phần và vẽ chúng theo đúng thứ tự. Trong 3D, vấn đề này không tồn tại (tồn tại một vấn đề khác, đó là đặt hai ký tự chính xác để chúng không xâm nhập vào lưới của nhân vật kia).
Bây giờ, để hình dung điều này, hãy tưởng tượng rằng Game A và B có một lỗi mà trong một số tình huống cho phép nhân vật người chơi đi qua một đối tượng trò chơi khác, cho phép chúng ta dễ dàng phân biệt giữa 2.5D và 3D một cách dễ dàng.
Trò chơi B, 2.5D Kết xuất, các họa tiết được sắp xếp theo giá trị z của vectơ vị trí của nó. Trong ví dụ này, z dương giảm và z âm lên. trục z và trục y song song nhưng z được chia tỷ lệ theo hệ số 0,5 của y. Vì vậy, nếu diện tích nhìn thấy là từ 10y đến -10y, trong cùng một khu vực chúng ta có từ 20z đến -20z. Các đối tượng có z lớn hơn sẽ được vẽ sau, vì vậy chúng sẽ được xem như ở phía trước các đối tượng có z thấp hơn. Bóng của nhân vật người chơi trông kỳ lạ vì bóng ở một lớp cao hơn sàn, nhưng ở lớp thấp hơn tất cả các vật thể khác, vì vậy bóng của nhân vật người chơi không bao giờ ở trên khối.
Trò chơi A, Kết xuất 3D. Bộ đệm sâu (còn được gọi là bộ đệm z) được sử dụng để kiểm tra độ sâu độ chính xác pixel. Vì vậy, một đối tượng không cần phải hoàn toàn loại trừ một đối tượng khác, thậm chí không phải là một tam giác cần hoàn toàn loại trừ đối tượng khác, chúng tôi đã kiểm tra độ sâu độ chính xác pixel. Chúng ta có thể xoay các đối tượng trò chơi theo bất kỳ cách nào và vẫn nhận được kết quả thực tế khi chúng tương tác.
Trong sơ yếu lý lịch: trong 2.5D, một sprite ở phía trước hoặc phía sau một sprite khác. Trong 3D, một lưới được làm bằng hình tam giác, nhưng hình tam giác không phải là đơn vị tối thiểu khi kiểm tra độ sâu, bạn có thể có độ chính xác pixel. Tất nhiên, không thể xoay camera trong 2.5D vì tài sản được tạo cho góc camera cố định, trong khi ở chế độ 3D là tự nhiên, nếu các góc của camera bị hạn chế bởi thiết kế trong trò chơi 3D là một chủ đề khác.
Có nhiều thủ thuật khác nhau để mang lại cảm giác như đang ở trong thế giới 3D khi bạn chỉ có thể kết xuất đồ họa 2D, tôi chỉ trình bày một ví dụ được tạo ra nhanh chóng bằng cách sử dụng một số tài sản của một dự án bị bỏ rơi của tôi.
Tại sao không chỉ sử dụng 3D luôn và quên đi 2.5D?
Chà, tôi có thể nghĩ trong một số ví dụ về lý do tại sao một nhà phát triển có thể thích cách tiếp cận 2.5D:
- Có thể họ không biết hoặc không thích API 3D (Direct3D, OpenGL, có những API khác).
- Có thể nền tảng đích không xử lý tốt đồ họa 3D (máy tính để bàn cũ, bảng điều khiển 2D).
- Nhóm của bạn có thể thực hiện các họa tiết tuyệt vời nhưng không phải mô hình 3D.
Bạn có thể ước chừng bao nhiêu kết quả của đồ họa 3D bằng 2.5D?
Có một hiệu suất và lập trình phức tạp chân trời. Khi bạn gần đúng với chân trời đó, bạn bắt đầu nghi ngờ liệu dự án của bạn có thực sự khả thi trong 2.5D hay nếu bạn phải đi 3D đầy đủ. Ví dụ: bạn có thể sử dụng bộ đệm z trong 2.5D (về lý thuyết), nhưng bạn có thể trả chi phí bộ nhớ video (máy tính để bàn cũ có đồ họa trên bo mạch chứ không phải thiết bị di động mạnh mẽ) không? Bạn có muốn trả chi phí lưu trữ để có thêm một hình ảnh để lưu mặt nạ z của mỗi sprite không?
Các ứng cử viên tốt cho 2.5D là các game RPG, nghĩ rằng loạt game Gateur, hay RTS, nghĩ Age of Empires 1 và 2 (AoE 3 hoàn toàn 3D và dễ dàng phân biệt).
Tài liệu tham khảo hữu ích:
Bộ đệm Z: http://en.wikipedia.org/wiki/Z-buffering
Các phép chiếu chính tả: http://mundnost.itcarlow.ie/~powerk/GeneralGraphicsNotes/projection/orthographicprojection.html