Giao diện người dùng (UI) khác nhau tùy theo phe phái trong một trò chơi chiến lược, cho thấy sự phức tạp trong việc tải trước toàn bộ UI.
Giao diện người dùng (UI) khác nhau tùy theo phe phái trong một trò chơi chiến lược, cho thấy sự phức tạp trong việc tải trước toàn bộ UI.

Trận Đấu Không Thể Bắt Đầu Vì Tuyết Rơi Quá Dày

Một lý do phổ biến là việc xác định liệu một tài nguyên có cần thiết trong tương lai gần hay không không phải lúc nào cũng dễ dàng như nhau.

Ví dụ, với hệ thống phân trang địa hình, việc tải tất cả các ô bản đồ liền kề trong nền khi bạn đang ở một ô bản đồ nhất định là hoàn toàn hợp lý. Bạn biết rằng người dùng chỉ có thể vào một trong số đó. Khi họ vào, bạn có thể dỡ các ô không còn liền kề và tải các ô hiện tại.

Tuy nhiên, hãy tưởng tượng đến tính năng di chuyển nhanh. Hoàn toàn không có cách nào để dự đoán người dùng sẽ chọn đi đâu. Họ thường có gần như toàn bộ bản đồ để lựa chọn. Việc tải trước tất cả các vị trí di chuyển nhanh có thể tiêu tốn quá nhiều bộ nhớ (bạn có thể tải toàn bộ bản đồ vào bộ nhớ ngay từ đầu) và quá nhiều thời gian (giả sử bạn không tải trước toàn bộ bản đồ). Điều này sẽ xảy ra khi nào? Khi họ mở hộp thoại di chuyển nhanh? Vấn đề sẽ trở nên tồi tệ hơn gấp nhiều lần!

Đây là lý do tại sao ngay cả hầu hết các trò chơi có phân trang địa hình “không tải” vẫn có màn hình tải khi di chuyển nhanh. Đó cũng là lý do tại sao, nếu bạn di chuyển đủ nhanh, bạn đôi khi có thể kích hoạt màn hình tải ngay cả trong các trò chơi có bản đồ không tải (tôi nhớ đã làm điều này trong TES Oblivion).

Bây giờ hãy tưởng tượng điều này áp dụng cho các tài nguyên trò chơi nói chung, nơi các mối quan hệ thường không rõ ràng. Bạn sẽ phải tải tất cả các tùy chọn có thể hoặc bắt đầu đoán xem người dùng sẽ làm gì. Đoán mò tốn kém (cả về phát triển và CPU) và là một mớ hỗn độn phức tạp để lập trình. Các ví dụ cụ thể:

  • Tệp lưu: bạn sẽ cần tải mọi tệp lưu trước khi người dùng đến màn hình lưu hoặc đoán xem họ có thể tải tệp nào (5 tệp mới nhất, v.v.).
  • UI: Nhiều trò chơi chiến lược thay đổi UI của chúng tùy thuộc vào phe của bạn. Bạn sẽ cần tải mọi thiết kế UI có thể trước khi người dùng bắt đầu trò chơi của họ.

Giao diện người dùng (UI) khác nhau tùy theo phe phái trong một trò chơi chiến lược, cho thấy sự phức tạp trong việc tải trước toàn bộ UI.Giao diện người dùng (UI) khác nhau tùy theo phe phái trong một trò chơi chiến lược, cho thấy sự phức tạp trong việc tải trước toàn bộ UI.

  • Thế giới trò chơi: trong các trò chơi được tạo theo thủ tục, như Minecraft hoặc các trò chơi RTS như Civilization, thế giới không tồn tại cho đến khi được xem, ở các mức độ khác nhau. Việc tải trước điều này là không thể vì chúng chưa từng tồn tại; việc tính toán trước chúng có thể tốt nhất được thực hiện tương tự như tải trước và không áp dụng trong trường hợp RTS.

Có thể có những cách để giải quyết một số vấn đề này, nhưng điều đó tốn tiền thật để tìm ra. Hầu hết game thủ chấp nhận màn hình tải hợp lý và, nếu có gì, có xu hướng sẵn sàng chi nhiều tiền hơn cho phần cứng để giảm thiểu chúng. Nó được xem là một vấn đề phần cứng, không phải vấn đề trò chơi, trừ khi quá mức hoặc gây rối (như tải ở giữa các màn chơi).

Và hãy nhớ rằng, tải nền không phải là miễn phí. Thông thường có tác động tối thiểu từ việc sử dụng hiện đại việc tải nền địa hình và một số tệp mô hình, nhưng nếu bạn đột nhiên đoán về nhiều tài nguyên khác nhau, đặc biệt nếu bạn không có số liệu đáng tin cậy và phải dỡ nhiều tài nguyên và tải những tài nguyên thừa, bạn có thể nghiền nát hệ thống.

Ý tưởng của việc tải nền là sử dụng các chu kỳ chết cho một mục đích tốt hơn, nhưng chỉ có rất nhiều chu kỳ chết để sử dụng. Điều tương tự cũng xảy ra với bộ nhớ – tải trước có thể làm tăng đáng kể mức sử dụng bộ nhớ của trò chơi. Với màn hình tải, bạn có thể loại bỏ các tài nguyên hiện có. Không có sự xa xỉ như vậy với tải nền, có nghĩa là nó có thể tăng gấp đôi yêu cầu bộ nhớ của trò chơi chỉ riêng về mặt đó.

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *