Your cart is currently empty!
Tại các sự kiện trò chơi và trực tuyến, mọi người thường hỏi tôi câu hỏi này: “Tôi đang tạo một trò chơi 2D trong Unity cho cả PC và thiết bị di động: nội dung của tôi nên ở độ phân giải nào?” Không có câu trả lời đơn giản chung cho tất cả các trường hợp. Đọc bài đăng trên blog này để hiểu rõ hơn đâu là cách hành động tốt nhất cho dự án của bạn.
Trong những năm gần đây, chúng tôi đã nghiên cứu rất nhiều tính năng giúp bạn tạo trò chơi 2D trong Unity: Sprite atlassing, Physics 2D, tính năng Tilemap cho thế giới hình chữ nhật, lục giác hoặc isometric, Sprite Shape dựa trên spline, Animation 2D, và nhiều hơn nữa.
Unity không thể hiện kích thước của một đối tượng bằng pixel và điều này có thể gây nhầm lẫn cho các nghệ sĩ đang tạo nội dung cho trò chơi 2D. “Chúng cần phải lớn đến mức nào?” Như thường lệ trong quá trình phát triển trò chơi, câu trả lời cho câu hỏi này là “điều đó còn tùy thuộc”, nhưng chúng ta hãy xem xét một số khái niệm sẽ giúp đưa ra quyết định dễ dàng hơn.
Note: Pictures in this blog post show the beautiful 2D Forest Pack assets by artist Mikael Gustafsson.
Nếu bạn là một pixel artist, một lời cảnh báo: hầu hết các mẹo trong bài đăng này không hoàn toàn áp dụng cho trường hợp của bạn. Trong đồ họa pixel art, bạn có thứ gì đó có độ phân giải cực thấp và bạn muốn tăng độ phân giải gốc của nó lên 2x, 4x, 8x hoặc thậm chí có thể hơn. Nó có nghĩa là một pixel của tác phẩm gốc của bạn bây giờ là một hình vuông của 2×2, 4×4, 8×8 pixel thực trên màn hình.
Vì vậy, nói chung trong nghệ thuật pixel, bạn không cần phải bận tâm quá nhiều về độ phân giải màn hình, mà bạn bắt đầu từ nghệ thuật của bạn và cảm giác bạn muốn truyền tải (cổ xưa, thời đại NES, pixel art hiện đại với độ phân giải cao, v.v.) và bạn tăng kích thước nó lên một vài lần.
Unity hiện có giải pháp Pixel Perfect ở dạng gói. Nó đi kèm với một thành phần đơn giản để đặt trên Camera sẽ thực hiện công việc khó khăn cho bạn và đảm bảo tác phẩm luôn sắc nét và được căn chỉnh với lưới các pixel thực, nhỏ trên bất kỳ màn hình nào.
Bạn có thể tìm thêm thông tin về gói Pixel Perfect tại trang tài liệu của gói Pixel Perfect trên GitHub.
Trước khi chúng ta cân nhắc về việc lựa chọn độ phân giải, cần nhớ rằng khi bạn tạo nội dung của mình, tốt hơn hết là bạn nên sử dụng độ phân giải cao hơn ngay cả khi bạn thực sự không cần nó cho nghệ thuật đi vào trò chơi. Bạn luôn có thể thu nhỏ tác phẩm nghệ thuật, nhưng bạn không thể mở rộng quy mô mà không làm giảm chất lượng.
Hãy xem xét các tình huống sau: bạn có thể cần in một số tác phẩm nghệ thuật cho trò chơi của mình hoặc bạn muốn tăng kích thước của một phần tử trên màn hình hoặc bạn muốn tạo “phiên bản HD” của trò chơi cho màn hình 4K sau này.
Vì những lý do này, khi bạn đang nghiên cứu kỹ thuật, hãy cân nhắc sử dụng các tệp công việc có độ phân giải gấp đôi độ phân giải mà bạn thực sự cần hoặc hơn, sau đó thu nhỏ chúng trước khi đưa chúng vào Unity hoặc sử dụng cài đặt nhập để giảm kích thước của chúng khi chúng được nhập vào engine.
The Import Settings for any image asset allow you to force the maximum resolution to a power of 2.
Import Setting cũng cho phép bạn xác định kích thước tối đa và các cài đặt nén khác trên mỗi nền tảng, vì vậy, chẳng hạn, bạn có thể có một số nội dung ở độ phân giải nhất định trên PC và chỉ một nửa trong số đó trên thiết bị di động, nơi không gian đĩa chứa là rất quan trọng.
Mẹo: Unity cung cấp một cách để hợp nhất một số Sprite thành một thông qua Sprite Atlases. Ngoài việc là một cách để tiết kiệm không gian kết cấu, atlases cũng cung cấp một cách thống nhất để kiểm soát kích thước tối đa thay vì phải đặt nó riêng lẻ cho từng sprite trong dự án của bạn.
Khi xác định quy mô nội dung, điều quan trọng là phải xem xét nền tảng hoặc các thiết bị mà trò chơi sẽ được phát hành. Mọi người có các thiết bị và màn hình rất đa dạng và sẽ xem trò chơi của bạn ở nhiều độ phân giải và tỷ lệ khung hình.
Nói chung, tại thời điểm viết bài này, nếu bạn đang xuất bản cho PC, bạn đang xem xét phần lớn người dùng với 2 độ phân giải: chủ yếu là “full-HD” (1920×1080 pixel, thường được gọi là 1080p) và rất nhiều 1280×720 (thường được gọi là 720p). Một tỷ lệ nhỏ mọi người cũng có màn hình 4K (3840×2160) hoặc màn hình Retina trên máy Mac (MacBook Pro 15 inch hiện đại sẽ có độ phân giải tối đa là 3360 × 2100). Đó là rất nhiều pixel!
Đối với điện thoại, phạm vi là rất lớn. Một số thiết bị cũ có thể giảm xuống dưới 720 pixel theo chiều dọc, nhưng một số thiết bị hiện đại sẽ lên đến 4K.
Mẹo: Unity cung cấp một số thống kê này trong Bảng điều khiển hoạt động của ID Unity của bạn. Chọn một dự án đã bật Analytics và bạn sẽ có thể đi tới Analytics> Thông tin chi tiết về thị trường và xem các thống kê tổng hợp. Steam cũng cung cấp một dịch vụ tương tự trên trang này.
Với Retina (nhãn hiệu của Apple) và các màn hình DPI cao hiện đại khác, trong khi độ phân giải phần cứng thực tế rất cao (ví dụ: 4K), những gì họ có thể làm là chạy ở độ phân giải mô phỏng thấp hơn (thường là một nửa, chẳng hạn như full-HD thay vì 4K) nhưng sau đó chúng hiển thị hình ảnh và văn bản bằng cách sử dụng gấp đôi pixel, do đó chúng xuất hiện rất sắc nét.
Lưu ý: DPI (điểm trên inch) hoặc PPI (điểm trên inch, hoặc pixel trên inch) là các tên khác nhau được các nhà sản xuất khác nhau sử dụng thay thế cho nhau, nhưng cuối cùng, chúng có nghĩa giống nhau: nhiều pixel bị ép trong một inch tuyến tính trên màn hình. Theo truyền thống, màn hình là 72 DPI. Ngày nay, màn hình DPI cao thường là 144 DPI, nhưng bạn có thể tìm thấy điện thoại có tới 400 DPI hoặc hơn vì chúng đang đóng gói rất nhiều pixel trên màn hình tương đối nhỏ. Một số ví dụ ở đây.
Đối với những màn hình này, bạn có hai tùy chọn. Một là nhằm cung cấp trải nghiệm sử dụng đầy đủ độ phân giải 4K. Nhược điểm là việc sản xuất nội dung tương thích với 4K sẽ tốn rất nhiều công sức. Trong trường hợp này, hãy đảm bảo làm nổi bật nó trong các tài liệu tiếp thị của bạn !! (“Trải nghiệm 4K tuyệt đẹp”… v.v.). Chủ sở hữu các bảng điều khiển như PS4 Pro và Xbox One X, tương thích với 4K, sẽ thích thực tế là trò chơi của bạn đang sử dụng hết sức mạnh của phần cứng.
Hoặc, bạn có thể “chỉ” xây dựng trò chơi của mình để đáp ứng full-HD. Trong trường hợp thứ hai này, người dùng có màn hình DPI cao hơn sẽ không được hưởng lợi từ việc tăng độ phân giải của màn hình nhưng họ sẽ chỉ xem trò chơi ở chế độ full-HD. Điều đó không lý tưởng, nhưng có thể ổn nếu bạn cũng đang cố gắng kiểm soát kích thước bản dựng.
Vì vậy, điểm mấu chốt là: bạn cần chọn độ phân giải tối đa mà bạn đang hướng tới (dựa trên thị phần hiện tại, xem ở trên) và đặt đó làm mục tiêu cho toàn bộ dự án. Mọi người trong nhóm sau đó sẽ có thể đưa ra quyết định khi biết điều đó.
Như chúng ta đã đề cập trước đây, Unity đo lường khoảng cách và kích thước trong một thứ được gọi đơn giản là một đơn vị, không phải bằng pixel. Nói chung, bạn nên ghép 1 đơn vị Unity với 1 mét. Ví dụ, mô hình hình người trung bình từ 1,7 đến 1,8 đơn vị trong kịch bản này. Điều này không bắt buộc, nhưng nó sẽ đảm bảo rằng các trò chơi có vật lý (cả 3D và 2D) hoạt động chính xác, vì vật lý trong Unity được điều chỉnh để sử dụng 1 đơn vị cho một mét. Tương tự với ánh sáng 3D, trong đó các thông số ánh sáng luôn đúng với thực tế.
Trong 2D, tỷ lệ này ít quan trọng hơn, nhưng bạn vẫn nên tôn trọng nó nếu bạn đang sử dụng vật lý trong dự án của mình. Nếu bạn đang sử dụng Tilemap, có thể tốt hơn nếu bạn giữ tỷ lệ 1 ô = 1 đơn vị, chỉ vì đơn giản.
Bây giờ chúng ta đã xem qua các đơn vị, hãy chuyển sang Camera. Camera 2D (Orthographic) của Unity có một thông số gọi là Kích thước, khi được tăng gấp đôi – cho bạn biết máy ảnh này đang đóng khung bao nhiêu đơn vị trên trục tung.
Với kích thước là 5, chúng ta có một khung nhìn đo 10 đơn vị Unity theo chiều dọc. Trục ngang sẽ chỉ là hệ quả của điều này vì chúng tôi không biết tỷ lệ khung hình mà màn hình của người dùng sẽ có. Nhưng thật dễ dàng để tính toán: trên PC hoặc điện thoại Android trung bình, với tỷ lệ khung hình 16: 9, bạn chỉ có thể thực hiện:
10 (Kích thước dọc) x 16/9 = 17.7 (Kích thước ngang)
Vì vậy, chúng tôi biết rằng với những cài đặt này, chúng tôi đang định khung diện tích khoảng 17,7 x 10 đơn vị. Trên máy Mac (thường là 16:10), nó sẽ là 16 x 10 (do đó, khả năng hiển thị ít hơn trên chiều ngang). Trên điện thoại có tỷ lệ 16: 9 được giữ theo chiều dọc (vì vậy nó sẽ trở thành 9:16), cùng một máy ảnh sẽ chỉ hiển thị diện tích 5,6 x 10 đơn vị.
Lưu ý: Chúng tôi sẽ không xem xét cách đối phó với các tỷ lệ khung hình trong bài đăng blog này bởi vì nếu bạn đang muốn tạo một trò chơi cho các tỷ lệ khung hình khác nhau, bạn không chỉ cần nghĩ đến đồ họa mà nói chung bạn cần phải làm rất nhiều chỉnh sửa về lối chơi để đảm bảo trò chơi không chơi khác nhau trên các thiết bị có tỷ lệ khác nhau. Ví dụ: bất kỳ trò chơi nào cuộn theo chiều ngang sẽ được hưởng lợi từ tỷ lệ khung hình ngang mảnh mai vì người chơi có thể thấy nhiều mối nguy hiểm sắp tới hơn. Đôi khi, việc tạo ra một trò chơi hoạt động tốt trên các tỷ lệ khung hình cực kỳ khác nhau là không thể và mọi người sử dụng khung hoặc thanh màu đen để lấp đầy khoảng trống mà họ không thể lấp đầy bằng cách chơi.
Khi nhập đồ họa dưới dạng Sprites, Unity hiển thị một tham số gọi là Pixels per Unit (PPU). Bây giờ chúng ta đã biết tất cả về các đơn vị, điều này sẽ rất rõ ràng. Nó biểu thị số lượng pixel từ Sprite của bạn phù hợp với một đơn vị trong cảnh Unity khi GameObject được chia tỷ lệ 1,1,1.
Ví dụ, tôi có Sprite của một tảng đá có kích thước 218 x 175 pixel và tôi đặt Điểm ảnh trên mỗi Đơn vị là 100, khi tôi kéo Sprite đó trong cảnh GameObject của tôi theo mặc định sẽ là 2,18 x 1,75 đơn vị, chiếm khoảng 1/5 trong số 10 đơn vị trên trục tung.
Vì vậy, hãy lấy màn hình full-HD làm độ phân giải thử nghiệm của chúng tôi. Chiều dọc là 1080 pixel và tảng đá có kích thước nhỏ hơn 1/5 màn hình (bạn có thể thấy cách các tảng đá mờ nhạt khớp hơn 5 lần trong hình trên), điều đó có nghĩa là chúng tôi đang sử dụng 175 pixel đồ họa nguồn để hiển thị nhiều hơn 200 pixel. Có nghĩa là chúng ta sẽ có một tảng đá hơi mờ.
Để khắc phục điều này, chúng tôi có một số giải pháp: chúng tôi có thể thu nhỏ khối đá xuống còn một nửa kích thước, làm cho khung máy ảnh lớn hơn thành 10,8 (tạo ra khả năng thu nhỏ) hoặc chúng tôi có thể thay đổi giá trị PPU của Sprite thành 108 ( có cùng tác dụng làm cho tảng đá nhỏ hơn trên màn hình). Trong cả ba trường hợp, nếu chúng ta muốn tảng đá giòn, nó sẽ phải nhỏ hơn.
Kích thước máy ảnh đó và giá trị PPU đến từ đâu? Dễ! Đối với kích thước máy ảnh, nếu chúng tôi nhập đồ họa của mình ở 100 PPU, thì chúng tôi sẽ cần một máy ảnh 10,8 vì 10,8×100 bằng 1080. Điều này cho phép chúng tôi bao phủ toàn bộ chiều cao của màn hình. Ngược lại, để tính toán một PPU chính xác trong đó kích thước máy ảnh vẫn ở mức 5, nếu chúng ta hy vọng sẽ bao phủ một màn hình full-HD với 10 đơn vị Unity theo chiều dọc, thì chúng ta có 1080/10 = 108. Đây là số pixel mà chúng ta nên có nhồi nhét một đơn vị nếu chúng ta không thay đổi kích thước máy ảnh.
Hãy nhớ rằng khi bạn đang làm việc với trò chơi của mình, thật nguy hiểm khi bạn kết hợp các quy trình công việc này với nhau: bạn có thể kết thúc ở một vị trí mà một số đồ họa được sử dụng trong cảnh sai có độ phân giải quá thấp và bạn thậm chí không nhận thấy . Bạn nên thiết lập các nguyên tắc: một PPU cho hầu hết nội dung trong dự án của bạn và một kích thước máy ảnh thông thường.
Sau đó, bạn có thể phá vỡ các quy tắc sau đó. Có thể bạn có một đoạn cắt cảnh trong đó máy ảnh phóng to và thu nhỏ, thay đổi kích thước tạm thời. Hoặc có thể các yếu tố nền của bạn quá lớn nên bạn không đủ khả năng để giữ nguyên PPU vì bạn sẽ có kết cấu khổng lồ. Trong trường hợp đó, bạn có thể giảm PPU cho các phần tử đó và nhập các phần tử nhỏ hơn, nhưng vẫn bao phủ một vùng lớn của màn hình bằng chúng.
Khi bạn đang làm việc trong Unity, bạn có thể tự hỏi độ phân giải mà bạn đang nhìn thấy qua Chế độ xem trò chơi là gì và liệu đó có phải là bản xem trước chính xác về tác phẩm của bạn trên nền tảng mục tiêu hay không.
Hầu hết các tùy chọn bạn sẽ cần đều nằm trong menu thả xuống ở trên cùng và thanh trượt bên cạnh.
Aspect Ratio là một chỉ buộc một tỷ lệ cụ thể giữa chiều ngang và chiều dọc, nhưng chúng sẽ sử dụng độ phân giải hiện tại của khung nhìn Game View của bạn, do đó phụ thuộc vào màn hình của bạn. Vì vậy, chúng phù hợp để thiết lập giao diện người dùng và các đối tượng trên màn hình, nhưng không thực sự phù hợp để thử nghiệm nghệ thuật.
Khi bạn đang sử dụng tỷ lệ khung hình, checkbox Low Resolution Aspect Ratios (Tỷ lệ khung hình độ phân giải thấp) sẽ hoạt động nếu bạn đang sử dụng màn hình DPI cao. Nếu bạn kiểm tra nó, nó sẽ mô phỏng độ phân giải màn hình DPI tiêu chuẩn.
Mặt khác, Fixed resolutions buộc Unity phải hiển thị một cửa sổ có kích thước chính xác đó. Tại thời điểm đó, bạn có thể cần phải mở rộng Game View của mình hoặc xem toàn màn hình để trực quan hóa toàn bộ bản xem trước. Trong bối cảnh này, thanh trượt Scale có thể làm cho độ phân giải cao phù hợp với cửa sổ Game View của bạn, nhưng nếu bạn đang ở dưới tỷ lệ 1x, thì bạn sẽ không thực sự nhìn thấy độ phân giải đó mà là 1 bản resample của nó.
Và đừng quên rằng bạn có thể thêm các độ phân giải và tỷ lệ khung hình cố định của riêng mình vào menu thả xuống:
Mẹo: Đừng quên rằng bạn không nên chỉ dựa trên editor. Thỉnh thoảng, hãy tạo một bản build của trò chơi (hoặc chỉ là art!) Và xem nó trên thiết bị hoặc màn hình mục tiêu của bạn.
Như bạn có thể thấy, độ phân giải của tác phẩm nghệ thuật, kích thước Camera và màn hình bạn muốn sử dụng đều được kết nối với nhau và không có một kích thước pixel hoặc PPU nào phù hợp với mọi trường hợp. Nghiên cứu các nền tảng mục tiêu của bạn, quyết định giải pháp và thông báo cho cả nhóm bằng cách đưa ra các nguyên tắc. Sau đó, dù sao thì hãy tạo ra tác phẩm nghệ thuật có độ phân giải cao hơn, nó có thể hữu ích sau này! Cuối cùng, thay đổi kích thước nó thành độ phân giải bạn cần và nhập nó vào Unity.
Và một gợi ý cuối cùng. Ngay cả khi trước đây tôi đã sử dụng cụm từ “hơi mờ” như thể đó là ngày tận thế và thứ mà chúng ta hoàn toàn PHẢI SỬA, thì đây không phải là một quy tắc cứng. Có thể là trong trò chơi của bạn, một số đối tượng – đôi khi – đang ở độ phân giải. Đặc biệt nếu có rất nhiều chi tiết nhỏ trên màn hình, có thể là ảnh trong suốt chồng lên nhau, với một số sương mù, mưa hoặc xử lý hậu kỳ ở phía trên. Chơi trò chơi ở tốc độ bình thường. Bạn có thực sự nhận thấy thực tế là chúng đang được resample không?
Nếu thành thật mà nói, bạn không thể phân biệt được sự khác biệt, thì có thể công việc bổ sung, dung lượng ổ đĩa và quá trình xử lý cần thiết để hiển thị hình ảnh có độ phân giải cao hơn là không đáng. Hãy nhớ rằng: trò chơi hay tạo ra những thỏa hiệp lớn!
Bạn có một số tác phẩm nghệ thuật 2D tuyệt vời không? Bạn có tò mò về các công cụ 2D mới của chúng tôi không? Tạo điều gì đó tuyệt vời với các công cụ hoạt hình 2D mới của chúng tôi, Tilemaps, SpriteShape, gói Pixel Perfect hoặc trình nhập SVG và tham gia Unity 2D Challenge! Tôi là một trong những giám khảo và rất nóng lòng được xem tất cả những ý tưởng tuyệt vời của bạn.
Leave a Reply