Độ phân giải 2D Kết xuất độc lập trong XNA


7

Tôi đang cố gắng tìm ra cách tốt nhất để kết xuất trò chơi 2d ở bất kỳ độ phân giải nào.

Tôi hiện đang kết xuất trò chơi ở 1920x1200. Tôi đang thử chia tỷ lệ trò chơi cho bất kỳ người dùng nào đã chọn độ phân giải mà không thay đổi cách tôi hiển thị hoặc logic trò chơi.

Cách tốt nhất để mở rộng một trò chơi đến bất kỳ độ phân giải tùy ý là gì?

Chỉnh sửa: Tôi đang cố gắng để đạt được điều này:

http://www.david-amador.com/2010/03/xna-2d-indepocate-resolution-rendering/

nhưng tôi nghĩ rằng mã mà anh ta có là dành cho một phiên bản XNA khác vì tôi không thể thấy phương thức đó quá tải mà anh ta sử dụng.


1
Có một số độ phân giải làm mặc định và vẽ mọi thứ theo tỷ lệ kích thước gốc * (độ phân giải người dùng / độ phân giải mặc định)?
Vịt Cộng sản

1
Bạn đang tìm kiếm quá tải SpriteBatch.Draw? Nếu bạn sử dụng XNA 4.0, bạn phải sử dụng ma trận này cho ma trận chuyển đổi: msdn.microsoft.com/en-us/l Library / ff433701.aspx Đó là đối số cuối cùng. Lần tới, hãy thử chỉ định mã thực tế.
Michael Coleman

Đọc qua mã ví dụ, tôi đã làm cho nó hoạt động khi chỉ thay đổi một dòng trong hàm Draw - các tham số cho SpriteBatch.Begin đã thay đổi trong 4.0: spriteBatch.Begin (SpriteSortMode.Immediate, BlendState.AlphaBlend, null, null, null, null , Độ phân giải.getTransaturesMatrix ());
khoan hồng

Bạn cũng có thể kết xuất thành một mục tiêu kết xuất và sau đó chỉ cần chia tỷ lệ đó. Chỉ là một cách khác để đi về nó. (không thực sự chắc chắn về hiệu quả) Tôi không nghĩ nó sẽ là một vấn đề khủng khiếp.
Michael Coleman

Câu trả lời:


4

Biên tập:

Bạn đang tìm kiếm cuộc gọi SpriteBatch.Draw (Texture2D, Hình chữ nhật, Màu) . Hình chữ nhật đại diện cho mục tiêu vẽ tỷ lệ trên màn hình.

Tôi giả sử ở đây rằng bạn không sử dụng bố cục lưới - không được chỉ định trong câu hỏi vì vậy tôi sẽ sử dụng các tài sản có thể được vẽ ở bất kỳ pixel nào thay vì trên lưới được đặt.

  1. Đầu tiên quyết định về độ phân giải 'bản địa'. Có lẽ chỉ là chiều cao, các màn hình khác nhau có tỷ lệ khung hình khác nhau nên sẽ phải được tính đến. Hãy chọn 1200 làm chiều cao bản địa. Tất cả các tỷ lệ sẽ được dựa trên số này.

  2. Giả sử tôi đang chạy trò chơi trên TV chỉ với 720p - 60% chiều cao. Tất cả các tọa độ đơn vị và kích thước Hình chữ nhật sau đó nên được nhân với 0,6. Một đơn vị orc giả thuyết cao 20 pixel và nằm ở (50,45) dưới độ phân giải gốc. Vào thời điểm vẽ, Hình chữ nhật mục tiêu sẽ trở nên cao 12 pixel và được vẽ ở (30, 27)

  3. Trường hợp chính xác bạn tính toán trong tỷ lệ có thể là một vấn đề. Bạn có thể chạy trò chơi hoàn toàn như thể nó đang chạy ở độ phân giải gốc - điều này có nghĩa là không có tỷ lệ thêm trong các thứ như tính toán khoảng cách, tốc độ hoạt hình và nội suy, v.v ... Sau đó, chỉ thực hiện chia tỷ lệ tại thời điểm vẽ hoặc với thử nghiệm nhấn nhấp chuột. Nếu bạn chọn chia tỷ lệ mọi thứ, thì bạn chỉ cần làm cho quy mô đó có thể truy cập được đối với tất cả các hệ thống trên toàn cầu và nhớ tính đến nó.

Hy vọng điều này trả lời câu hỏi của bạn tốt hơn.


Tôi muốn mở rộng quy mô trò chơi của mình mà không phải vẽ nó khác đi. Bạn chỉ cho tôi biết làm thế nào để thay đổi độ phân giải. Nếu tôi chỉ thay đổi độ phân giải, nó sẽ không thay đổi tỷ lệ, nó sẽ chỉ thay đổi kích thước của trò chơi, đó là điều tôi không muốn.
Tấn côngHobo

À, gotcha. Tôi đã hiểu nhầm những gì bạn đang hỏi về. Chỉnh sửa câu trả lời để giải quyết điều đó.
khoan hồng

1
Tôi đã chỉnh sửa câu hỏi của tôi. Tôi muốn có thể hiển thị mọi thứ giống nhau trên tất cả các hệ thống nhưng mở rộng quy mô sau khi thực tế.
Tấn côngHobo
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.