Làm thế nào để bạn tiếp cận độc lập độ phân giải trong nội dung đồ họa dựa trên raster?


32

Những trò chơi không đủ may mắn để chạy trên một nền tảng bị khóa, như thiết bị cầm tay, cần phải chạy trên các định dạng độ phân giải và tỷ lệ khung hình khác nhau.

Trong trò chơi 3D, bạn có thể có HUD hoặc GUI menu dựa trên đồ họa raster, và trong trò chơi 2D, bạn có thể có một loạt các hình tứ giác là các tàu cho các họa tiết.

Vì vậy, câu hỏi của tôi là, làm thế nào để bạn tiếp cận thiết kế và vận hành nội dung trên các độ phân giải và tỷ lệ khung hình khác nhau? Giả sử bạn có một ký tự sprite là 300x400 pixel sprite và được bao quanh bởi một mức được tạo bởi các ô. Trên các độ phân giải / tỷ lệ khung hình khác nhau, bạn sẽ thấy một FOV khác nhau hoàn toàn. Hoặc nếu bạn có menu HUD hoặc GUI, bạn muốn giữ một số nội dung ở cùng vị trí và có cùng kích thước so với màn hình. Tuy nhiên, nguồn đồ họa là bitmap raster, không phải vector.

Rõ ràng, vấn đề đã được giải quyết nhiều lần. Tôi rất thích nghe nhiều cách tiếp cận khác nhau có hiệu quả với bạn cho đến nay. Bạn có giữ một đơn vị 'pixel' không xác định kích thước tùy ý mà bạn chuyển đổi một cách kỳ diệu thành các kích thước cần thiết thông qua công thức dựa trên tỷ lệ độ phân giải và tỷ lệ khung hình hoặc các phương pháp khác không?

chỉnh sửa:

Vì vậy, kết luận là liệt kê tỷ lệ khung hình của bạn. Sự kết hợp thấp nhất của khía cạnh: độ phân giải là thứ bạn thiết kế thứ quan trọng. Một khu vực an toàn nếu bạn muốn. Tỷ lệ khung hình giống nhau, nhưng độ phân giải cao hơn là các vấn đề mở rộng đơn giản. Nội dung nghệ thuật được thiết kế cho độ phân giải cao nhất. Tỷ lệ khung hình lớn hơn chỉ đơn giản là hiển thị nhiều cấp độ / FOV hơn với thông tin được trình bày không quan trọng bằng thông tin trong khu vực an toàn. Một cái gì đó giống như trong hình ảnh này tôi đã thực hiện . văn bản thay thế


1
Tôi không thấy cách bạn đi từ câu trả lời trong câu hỏi này đến kết luận bạn đã đưa ra sau khi " chỉnh sửa: ". IMO, những câu trả lời này không đầy đủ và bạn không nên chấp nhận bất kỳ câu trả lời nào. EG: Câu trả lời được chấp nhận của bạn chỉ nói về một phần của câu hỏi (tỷ lệ sprite), không phải toàn bộ vấn đề. Những gì bạn đã nói sau khi " chỉnh sửa: " hữu ích hơn câu trả lời ở đây, IMO. Nhưng, tôi không thực sự "hiểu" nó đủ tốt để thực hiện nó. Thật không may, nếu tôi yêu cầu xây dựng trong một câu hỏi mới, nó sẽ được đánh dấu là một bản sao.
Daniel Kaplan

Câu trả lời:


7

Nếu độ phân giải của bạn tương tự nhau, bạn chỉ có thể sử dụng cùng một nghệ thuật trên tất cả chúng với một số có thể thu nhỏ trong thời gian chạy cho màn hình nhỏ hơn. Nếu chúng khác nhau nhiều hơn so với hệ số 2 lần, bạn sẽ cần tác giả (hoặc ít nhất là có một tinh chỉnh nghệ sĩ) các tài sản riêng cho các độ phân giải khác nhau.

Với 2D, độ phân giải có ảnh hưởng rất lớn đến cách bạn thiết kế hình ảnh. Một sprite trông rất chi tiết và thực tế ở độ phân giải cao sẽ bị lầy và không thể giải mã được thu nhỏ lại. Tương tự như vậy, một sprite sạch và sắc nét ở độ phân giải thấp sẽ trông rẻ tiền và quá đơn giản ở độ phân giải cao.


Tỷ lệ khung hình làm tôi lo lắng mặc dù. Ví dụ, đó không phải là một bước nhảy vọt lớn từ 1080p đến 720p vì khía cạnh là như nhau, sau đó chúng tôi đang sử dụng quy mô đơn giản. Điều gì xảy ra khi bạn nói 1080p so với 1680x1050. Tôi có hiển thị nhiều cấp độ hơn, FOV rộng hơn trên khía cạnh lớn hơn, loại lề không? Giống như, thiết kế cho khía cạnh rộng hơn với một khu vực an toàn nơi có tất cả các nội dung quan trọng, để không bị cắt khỏi màn hình trên các khía cạnh hẹp hơn.
Keyframe

Tôi sẽ cập nhật câu hỏi với trình bày trực quan của giải pháp này. Có vẻ như không có cách nào khác.
Keyframe

4

Một cách là tạo các tài sản hình ảnh theo định dạng véc tơ (SVG, Illustrator, v.v.) và chuyển đổi chúng thành hình ảnh raster khi cần bởi các phiên bản khác nhau của trò chơi.


Chắc chắn, nhưng tôi quên đề cập rằng đó không phải là một lựa chọn. Vấn đề chính là việc tạo nội dung raster và vector hoàn toàn khác nhau (raster trở nên tốt hơn cho các nghệ sĩ). Một lựa chọn sẽ là tạo nhiều tài sản raster, nhưng tôi tin chắc rằng phải có một giải pháp tốt hơn. Ví dụ: tạo tài sản cho tỷ lệ độ phân giải / khía cạnh được hỗ trợ lớn nhất và thu nhỏ lại trong các phiên bản thời gian chạy độ phân giải thấp hơn một cách nhanh chóng hoặc đôi khi như thế. Định vị vẫn là vấn đề mặc dù.
Keyframe

Vâng, đó cũng là một lựa chọn, nếu bạn có thể chịu các vấn đề về chất lượng và hiệu suất.
Matias Valdenegro

8
Tôi không chắc chắn rằng "raster tốt hơn cho các nghệ sĩ". Nghệ sĩ đồ họa của tôi sử dụng Illustrator vì những lý do này. Khi đến lúc cập nhật lên độ phân giải 2X của iPhone 4, việc cô ấy xuất lại mọi thứ là một vấn đề đơn giản. Raster có thể tốt hơn cho các nghệ sĩ Photoshop, những người không muốn tự đào tạo mình thành nghệ sĩ vector, nhưng về lâu dài có lẽ họ nên trở thành chuyên gia về đồ họa dựa trên vector. Các nền tảng vật lý đang thay đổi quá nhanh để suy nghĩ bằng pixel.
Chris Garrett

4

Khi duy trì toàn màn hình ở các độ phân giải khác nhau, nếu bạn muốn hoàn thiện pixel (nghĩa là "Như nghệ sĩ đã tạo ra nó"), thì vấn đề là không có cách nào hoàn toàn tự động để tăng tỷ lệ mọc lên HOẶC (hoặc xoay chúng) mà không ' t yêu cầu sự chấp thuận của con người. Cuối cùng, đó là vì vị trí của pixel là một điều chủ quan. Thuật toán kết xuất thực hiện một số tỷ lệ hoặc xoay và phải sử dụng một số kỹ thuật gần đúng để làm điều này, ví dụ. lọc song tuyến. Nếu bạn vẫn muốn cạnh cứng trên pixel để có mà "điểm ảnh hoàn hảo" (tức là không sử dụng AA hoặc BF), sau đó bạn sẽ phải chấp nhận rằng tỉ lệ bằng một mức độ nào không quyền lực-of-2 được đi tới sản xuất một số tạo tác không mong muốn.

Một cách tiếp cận thú vị cho một vấn đề tương tự được tìm thấy trong RotSprite , một ứng dụng / thuật toán được thiết kế để thực hiện các phép quay "tự động" của các họa tiết. Do đó, ý tôi là nó tạo ra một số kết quả cuối cùng có thể mong muốn sau khi xử lý chuyên sâu, để người vận hành chọn. Các sprite được chọn bằng tay sau đó kết thúc vào trò chơi, có nghĩa đây là bước tạo nội dung chứ không phải là thời gian chạy.

Một câu trả lời khả dĩ cho câu hỏi "pixel bất khả tri ma thuật tùy ý" của bạn: OpenGL (mà bạn có thể dự định sử dụng nếu bạn đang sử dụng đa nền tảng) hoạt động theo cách hoàn toàn khác với trình kết xuất raster phần mềm. Nó xem xét chiều rộng và chiều cao của màn hình trong phạm vi điểm nổi 0,0-> 1,0 và ánh xạ các pixel tương ứng trên GPU. Tất nhiên điều này có thể tự nó dẫn đến tạo tác, trừ khi, ví dụ. BF được bật cho kết cấu (đó là những gì các họa tiết của bạn có trong OpenGL).


Đây là căn hộ sai. Bạn có thể sử dụng bố cục và các yếu tố lặp lại (nghĩ gạch) thay vì chia tỷ lệ để giữ cho pixel hoàn hảo ở bất kỳ tỷ lệ khung hình nào. Tất nhiên nếu các yếu tố nhỏ ở độ phân giải cao hơn, nó sẽ ngày càng nhỏ hơn. do đó, bạn sẽ cần chia tỷ lệ 2X hoặc các tài sản có độ phân giải khác nhau.
adrix89
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.