Logic đằng sau các cảnh 'Đang tải' trong các trò chơi là gì?


8

Tôi đang thực hiện trò chơi đầu tiên của mình, đây là loại trò chơi phòng thủ tháp, sử dụng công cụ trò chơi Unity và lấy Fieldrunners làm tài liệu tham khảo. Tôi muốn biết thêm về chức năng đằng sau các cảnh 'Đang tải' trong các trò chơi.

Cho đến bây giờ tôi đang khởi tạo / tạo các đối tượng trong thời gian chạy và tôi không phải đối mặt với bất kỳ sự chậm trễ hoặc các vấn đề tương tự làm như vậy. Vậy cảnh 'Đang tải' trong các trò chơi khác được sử dụng để làm gì? Có một số chức năng hoặc khởi tạo các đối tượng cụ thể cho vòng hoặc giai đoạn tiếp theo? Nếu có tại sao tôi cần chúng nếu tôi không nhận được bất kỳ sự chậm trễ nào?


6
Các tài nguyên được yêu cầu bởi các trò chơi khác có thể cao hơn nhiều so với nhu cầu của chính bạn. Do đó, các cảnh tải được yêu cầu để che giấu khoảng thời gian mà các tài nguyên này được tải (có lẽ từ ổ cứng chậm).
giảm tốc

2
"Tất cả các trò chơi" mà bạn đang đề cập đến là gì? Có rất nhiều game không có màn hình tải nào cả.
Nicol Bolas

Câu trả lời:


10

Về cơ bản, tôi muốn nói rằng trong quá trình "Đang tải", trò chơi cố gắng tải và tính toán trước tất cả các hoạt động không thể thực hiện trong thời gian chạy. Ví dụ, lấy hình ảnh (được sử dụng làm kết cấu) cho ổ cứng thường là một quá trình chậm. Ở bước "Đang tải", những hình ảnh này có thể được sao chép vào bộ nhớ RAM, đây là bộ lưu trữ truy cập nhanh hơn, cho phép truy cập thời gian thực vào hình ảnh trong thời gian chạy.


1

Một màn hình tải cũng có thể được sử dụng như một "cảnh cắt" (http://en.wikipedia.org/wiki/Cutscene) để cung cấp cho người dùng cơ hội để lấy hơi thở, để tìm hiểu thêm về câu chuyện và tính năng trò chơi của bạn, hoặc để cố gắng bán cho họ phiên bản trả tiền / mua trong ứng dụng


1

Tôi nghĩ rằng các trò chơi hiện đại nên đã có thể bỏ màn hình tải.

Tôi đoán lý do thực sự mà chúng ta vẫn tải màn hình là hầu hết các trò chơi được thiết kế để chạy trên phần cứng Xbox 360. Vì vậy, họ sẽ bị giới hạn về số lượng ram họ có thể tải công cụ vào và số lượng luồng họ có thể làm. Nếu bạn không có đủ ram thì bạn sẽ cần phải bỏ rất nhiều thứ ra khỏi bộ nhớ và sau đó tải lại từ đĩa. Ngoài ra, nó chỉ dễ dàng hơn để tải mọi thứ cùng một lúc.

Cũng có những lúc những thứ như ổ cứng có thể bị đình trệ. Điều gì xảy ra nếu người dùng đang chạy chương trình chống vi-rút trong nền. Nếu công cụ không tải trước của bạn thì bạn có thể phải tạm dừng trò chơi trong khi nó chờ lưới đó tải hoặc có những thứ xuất hiện tự phát.

Các trò chơi như Skyrim có thể cung cấp cho bạn một thế giới mở rộng lớn mà bạn có thể chạy qua bao nhiêu tùy ý nhưng ngay khi bạn mở một cánh cửa để tải một hầm ngục tương đối nhỏ, bạn sẽ bị kẹt với màn hình tải.

Về lý do duy nhất tôi có thể thấy màn hình tải dungeon là cần thiết là nếu họ sử dụng một số ánh sáng chiếu sẵn cực nặng được sử dụng cho các cảnh trong nhà nếu tải khá lớn (được tạo từ 1 lưới khổng lồ hoặc có ánh sáng chi tiết) hoặc cần thực hiện một số tính toán trong thời gian chạy. Tôi tin rằng các hầm ngục Skyrim chỉ được xây dựng từ các lưới mô-đun chứ không phải là một lưới khổng lồ (ít nhất là tôi nghĩ Oblivion đang ở đâu).

Không có lý do thực sự để tải nhiều hơn những thứ bạn thực sự có thể nhìn thấy khi vào cấp. Giống như cách các trò chơi không kết xuất những thứ bạn có thể thấy, bạn có thể loại bỏ những gì bạn thực sự cần phải tải ngay lập tức. Bạn cũng có thể dính vào rất nhiều đồ vật giữ chỗ giả. Sau đó, bạn có thể sử dụng luồng để tải không đồng bộ các đối tượng trong các khu vực xung quanh, các mắt lưới của chúng, kết cấu, v.v. khi người chơi di chuyển xung quanh môi trường.

Cách tôi sẽ bỏ màn hình tải như sau:

  1. Tải các thuộc tính thế giới trò chơi cơ bản. Kịch bản toàn cầu.

  2. Tải vị trí của người chơi.

  3. Tải nút Gridcell / BSP của vị trí đó.

  4. Chỉ tải các hộp giới hạn của các đối tượng trong ô đó.

  5. Tìm ra những gì thực sự sẽ được kết xuất (các thử nghiệm trên các hộp giới hạn, có thể là các thử nghiệm kết xuất tắc)

  6. Tải các mắt lưới của những thứ được kết xuất.

  7. Tải các vật liệu kết cấu của các mắt lưới.

  8. Tạo ra nhiều thử nghiệm hơn để xem có thể nhìn thấy nhiều vùng hơn không và cần phải tải (tức là truy vấn kết xuất toàn bộ một ô lưới dưới dạng một khối lập phương khổng lồ).

  9. Khi mọi thứ hiển thị được tải bắt đầu kết xuất.

  10. Tải phần còn lại của các ô trong các ô và Tải thêm nội dung theo yêu cầu. Tải các vùng lân cận và thực hiện một số dự đoán cơ bản về các chuyển động của người chơi để chọn vùng nào cần được tải trước. Tiếp tục đi cho đến khi bộ nhớ đầy.

Có một số điều khác cần phải được tính đến. Ví dụ, một số nội dung cần được tải ngay cả khi nó không hiển thị. Ví dụ, một kẻ thù đứng đằng sau người chơi bên ngoài khu vực sẽ cần phải hoạt động để chúng có thể chạy về phía người chơi và tấn công chúng. Có thể các công cụ kiểm tra tắc là không cần thiết vì bạn sẽ ngay lập tức muốn tải bất cứ thứ gì ở gần đó khi người chơi di chuyển và nó có thể nhìn thấy nhưng nó có thể tắt đi một giây để đến thẳng kết xuất (nhưng nếu thời gian đến gần thì bạn sẽ có khả năng gặp vấn đề với những thứ xuất hiện).

Nếu có thể, các bước đó nên được bắt đầu trước khi chúng được yêu cầu, luồn trong nền. Ví dụ: nếu bạn đang ở menu chính của trò chơi thì nó sẽ bắt đầu tải trước khu vực bắt đầu tải sau khi bạn chọn "Trò chơi mới" (hoặc ngay khi menu xuất hiện) và lần lưu cuối cùng để tiếp tục. Các bản lưu khác có thể tải trước khi bạn di chuyển chuột qua chúng. Khi bạn đến gần cửa ngục tối, nó sẽ bắt đầu tải cấp độ tiếp theo (mặc dù nếu bạn có thể làm điều đó thì bạn không cần một cửa ngục tối đặc biệt vì chúng thực sự chỉ để kích hoạt màn hình tải). Tải trong nền trong khi video phát. Bằng cách đó, bạn thậm chí sẽ không cần một màn hình tải ban đầu ngắn.

Bạn có thể bỏ qua rất nhiều thứ nếu bạn không bận tâm đến việc 'xuất hiện'. Một cái gì đó như Cuộc sống thứ hai chỉ để lại cho bạn những thứ xuất hiện, vì nó được lấy từ internet, bạn không thể làm gì nhiều về điều đó. Tín ngưỡng của Assassin có tác dụng đó khi các công cụ xuất hiện trong cảnh để bạn có thể thoát khỏi những thứ vì lý do nghệ thuật.


2
Thật không may, điều đó không khả thi đối với nhiều trò chơi. Một khu vực duy nhất có thể có đủ kết cấu để vừa khít với bộ nhớ video của GPU tầm trung, vì vậy bạn không thể tải trước cả khu vực bắt đầu và khu vực lưu cuối cùng (và còn lưu nào khác mà người dùng có thể chọn?). Ngay cả khi phát trực tuyến các thế giới liên tục như trong Skyrim, điều gì xảy ra với các cổng hoặc tập lệnh chỉ dịch chuyển người chơi đến khu vực khác? Với 8GB dữ liệu nén - phần lớn là dữ liệu kết cấu - ngay cả các PC chơi game cao cấp hiện đại cũng không thể tải trước mọi thứ.
Sean Middleditch

1
Hơn nữa, tôi cho rằng các trò chơi có quyền lợi khi không thể tải nhiều khu vực vào bộ nhớ; nó ngăn họ đặt nhiều nội dung nhất có thể vào từng khu vực nhất định. Đối với nhiều trò chơi, đây không phải là vấn đề, nhưng đối với các tựa game thế giới mở muốn mang lại trải nghiệm phong phú như khả thi, thì bất kỳ tình huống nào bạn không gặp phải những hạn chế của mình là một trong những điều bạn không cung cấp nhiều người chơi như bạn có thể
Steven Stadnicki

0

Trong Unity, các cảnh là sự kết hợp của nhiều đối tượng trò chơi. Vì vậy, nếu bạn không muốn chỉ định riêng tất cả các trò chơi của mình và tải từng cái một, bạn chỉ cần tải một cảnh hoàn chỉnh .

Khi tải một cảnh trong Unity, các đối tượng đã tồn tại được chuyển vào thùng và do đó, một cấp độ hoàn toàn mới được tải. Bạn có thể chỉ ra những đối tượng bạn muốn giữ bằng phương thức DontDestroyOnLoad .

Trong cài đặt bản dựng của bạn khi xuất bản trò chơi, bạn cũng có thể chỉ ra cảnh nào được sử dụng trong trò chơi của mình và đưa chúng vào bản dựng hiện tại của bạn . Điều này giúp có thể phân biệt giữa nhiều nền tảng có chứa các mức khác nhau, nhưng cùng một logic mã.

Câu hỏi cụ thể thống nhất có thể được hỏi trên diễn đàn câu trả lời thống nhất là tốt. Những người dùng này được chỉ định nhiều hơn cho Unity, thay vì các câu hỏi chung trên công cụ trò chơi.


Câu trả lời này dường như không giải quyết được câu hỏi: không phải là cách tôi tải các cấp độ?, Nhưng, tại sao người chơi lại thấy 'Đang tải'?
Kevin Reid

@KevinReid À đúng rồi, có lẽ bạn đúng về điều đó. Tôi đã không bắt được các dấu hỏi theo một cách tốt có lẽ.
Marnix

0

Một cảnh đồ họa 3D cần có thời gian để thiết lập và việc duy trì nó có thể đẩy máy tính vượt quá giới hạn của nó. Các nội dung đòi hỏi bộ nhớ rộng. Các nội dung có thể nhìn thấy đòi hỏi thời gian mở rộng. Và khi người quan sát thu nhỏ và nhìn về phía chân trời, rất nhiều nội dung có thể trở nên rõ ràng. (Bạn có bao giờ nhận thấy một số trò chơi hoạt động tốt hơn như thế nào nếu bạn không thu nhỏ quá xa không? Bạn có bao giờ nhận thấy một số trò chơi không cho phép bạn thu nhỏ quá xa hoặc nhìn về phía chân trời không?)

Giải pháp là thiết lập các cảnh riêng lẻ với nội dung hạn chế. Bây giờ trò chơi hoạt động tốt cho đến khi người quan sát để lại cảnh này cho cảnh khác. Tại thời điểm đó, cảnh cũ bị loại bỏ và một cảnh mới được thiết lập, sẽ mất thời gian (và một màn hình tải để cố gắng giữ cho người dùng không bị nhàm chán). Các công cụ 3D thường cố gắng thực hiện càng nhiều công việc càng tốt trong quá trình thiết lập để làm cho đồ họa mượt mà nhất có thể sau này.

Tôi đã thấy các trò chơi dường như cho phép di chuyển nhanh, tự do và phóng to toàn bộ thế giới. Có lẽ có rất nhiều thiên tài và rất nhiều lập trình và nghệ thuật tốn nhiều công sức ở đó; họ không chỉ tải xuống một số phần mềm đồ họa miễn phí.

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.