Tại sao các trò chơi dường như tải lại toàn bộ cấp độ khi khởi động lại một cấp độ?


47

Là dữ liệu thực sự sửa đổi nhiều trong khi chơi?

Tôi cho rằng sự tạm dừng lâu dài giữa việc khởi động lại một cấp độ là toàn bộ tải lại cấp độ. Nhưng đối với tôi, có vẻ như một hệ thống được triển khai tốt sẽ có thể 'ping' trở lại mức bắt đầu.

Nó đáng chú ý hơn trên bảng điều khiển, nhưng nó không đáng chú ý trên các trò chơi trên PC.


8
Câu trả lời cho điều đó phụ thuộc rất nhiều vào trò chơi, vào các nhà phát triển, thói quen và kinh nghiệm của họ và nhiều yếu tố khác. Các chỉ câu trả lời đúng về mặt kĩ nói chung sẽ là: đôi khi nó được sửa đổi nhiều, đôi khi không, đôi khi những thứ được xem trực tiếp và do đó đầu không có trong bộ nhớ nữa, và đôi khi trò chơi đã làm "ping" trở lại để bắt đầu cấp, và các trò chơi đôi khi không có lý do chính đáng tại sao chúng không thể làm điều đó và đôi khi chỉ vì nó không được triển khai tốt.
Christian

4
Nói chung, việc tải lại cấp độ dễ dàng hơn nhiều (điều này đặt mọi thứ ở trạng thái ban đầu) thay vì hoàn tác mọi thứ mà người chơi đã làm. Dù sao đó cũng là trường hợp của tôi.
Benjamin Danger Johnson

Câu hỏi không phải là đen trắng. Bao nhiêu trạng thái được tải lại? Rất nhiều trò chơi tải lại toàn bộ bộ kết cấu mà không có lý do chính đáng. Chắc chắn, đi từ cấp 5 đến cấp 6 có thể có nghĩa là tải kết cấu mới, nhưng điều đó không có nghĩa là bạn nên làm điều đó mỗi khi bạn bắt đầu lại cấp 6.
MSalters

@MSalters Chủ yếu là về trạng thái trò chơi chứ không phải tài nguyên, bạn có thể không cần tải lại một texure sử dụng chung, nhưng nhiều kẻ thù mà bạn đã giết - đối tượng cần phải bị tiêu diệt và tải lại trong trạng thái bắt đầu (thậm chí nếu kết cấu của anh ta vẫn được lưu trữ độc đáo trong bộ nhớ.)
Tom 'Blue' Piddock

Tôi nghĩ ai đó đã chơi Wing Commander III trên một hệ thống cũ.
Erik Reppen

Câu trả lời:


54

Bây giờ - một câu hỏi đơn giản nhưng thú vị để giải quyết.

Khi tải lại một cấp độ có rất nhiều yếu tố cần được tính đến để câu trả lời có thể đi theo nhiều cách.

Nếu trạng thái cấp của bạn chứa một danh sách lớn các tài sản, có thể thực tế hơn để bắt đầu từ một bảng xếp hạng sạch khi tải lại cấp độ trở về trạng thái lưu / nhiệm vụ vì điều này duy trì trạng thái chính xác của cấp khi tải lại nhưng không mất nhiều chế biến. Tuy nhiên, sẽ hiệu quả hơn khi đặt lại tài sản một mình nếu chỉ có một vài tài khoản - đảm bảo bạn có thể khởi động lại hành động nhanh chóng ở các cấp nhỏ hơn này. Điều thứ hai đặc biệt là khi bạn không cần bảo quản bất cứ thứ gì trong cảnh hoặc nó không bị ảnh hưởng bởi các lựa chọn của bạn trong trò chơi - nếu bạn không cần xác chết được bảo quản từ lần chạy đầu tiên của bạn qua một ngôi làng thì họ sẽ không cần phải được tải lại trên đường trở về mức đó, do đó tiết kiệm thời gian của bộ xử lý và thời gian truy cập trạng thái nhiệm vụ / tiết kiệm.

Một ví dụ điển hình để nghĩ đến sẽ là một First Person Shooter sử dụng đề can phá hủy địa hình / đạn có trạng thái bền bỉ trong quá trình chơi đó nhưng sẽ không ở lại nếu bạn khởi động lại điểm kiểm tra hoặc cấp độ đó .

Nếu bạn phải tua lại cấp độ thay vì hủy và tải lại, bạn sẽ phải theo dõi từng trạng thái thay đổi. Nếu bạn bắn một lỗ trên tường bằng một tên lửa, bạn sẽ tạo ra các địa hình từ các mảnh rơi ra khỏi tường, mô hình của bức tường sẽ thay đổi để tạo ra lỗ hổng và bạn sẽ có các hiệu ứng hạt được tạo ra để làm cho nó trông đẹp hơn . Để làm sạch nó bằng cách tua lại nó về trạng thái "có thể khởi động lại", bạn sẽ phải:

  • Xóa mọi gibs được tạo động cho tường đó (nhưng không xóa các gibs khỏi trạng thái bạn đã tải)
  • Loại bỏ hiệu ứng hạt cho bụi từ lỗ đạn
  • Thay thế / sửa chữa tường để thoát khỏi các lỗ bạn tạo ra
  • Đặt lại đạn người chơi
  • Vân vân...

Với rất nhiều tài nguyên để theo dõi để tua lại một cấp độ, nó thường ít xử lý hơn để đơn giản phá hủy toàn bộ cấp độ và tải lại tất cả các tài sản trong trạng thái cụ thể hoặc nhiệm vụ mặc định của chúng. Phải đặt lại các đối tượng cụ thể liên quan đến việc tìm kiếm danh sách các đối tượng trong cảnh và sau đó truy cập vào các thuộc tính của chúng để đặt lại chúng. Thay vì đó lỗ đạn trên tường được sửa chữa bằng cách quét dọn, bạn không cần phải caluclate bất cứ hành động dọn dẹp, chỉ cần xóa toàn bộ mức độ từ bộ nhớ và tải lại nó từ đầu.

Điều này có nghĩa là tải lại một cấp độ là từ các đối tượng trạng thái (tệp lưu trò chơi hoặc tập lệnh nhiệm vụ) và không cần các phép tính động. Đối với bảng điều khiển, điều này trở nên trầm trọng hơn bởi thời gian tải liên quan đến đĩa. Nó cũng giúp các trò chơi trên PC vì nó có thể tính đến các máy tính không có khả năng cung cấp thời gian tải chấp nhận được.

Vì vậy, đối với các cấp nội dung lớn - Tải một trạng thái duy nhất thay vì tính toán và "tua lại" một trạng thái:

  • Là ít xử lý chuyên sâu
  • Hiệu quả hơn trên các máy cấp thấp hơn
  • Cho phép tập lệnh nhiệm vụ và lưu tệp được sử dụng theo cùng một cách (có khả năng sử dụng cùng một hệ thống tải để tải trạng thái lưu hoặc trạng thái điểm kiểm tra nhiệm vụ khi khởi động lại cấp độ)
  • Có nghĩa là bạn có ít công việc như một nhà phát triển để thiết lập lại cấp độ - Việc lập trình tải lại đầy đủ từ dữ liệu phiên dễ dàng hơn nhiều so với theo dõi và tua lại. Đây có lẽ là điểm ảnh hưởng nhất

Tuy nhiên, như một ví dụ đối kháng, một trò chơi chiến đấu (ví dụ thực tế tuyệt vời là Street Fighter 4) có thể không cần tải lại tất cả nhiều tài sản đó để khởi động lại một cấp độ. 2 người chơi, trạng thái môi trường cho cấp độ và bộ hẹn giờ cấp độ đơn giản chủ yếu là tĩnh và không động (sức khỏe người chơi sẽ luôn hồi sinh ở mức 100% mỗi vòng, bộ hẹn giờ được đặt lại thành 90 giây và cấp độ không có lỗ đạn [hoặc không!] ) và vì vậy, đặt lại cấp độ là vấn đề đưa máy bay chiến đấu hết sức khỏe và đưa môi trường trở lại vị trí ban đầu (như người xem ở một số cấp độ.)

Vì vậy, đối với một trò chơi chiến đấu khi thực hiện một trận tái đấu (không đi từ vòng này sang vòng khác), bạn cần phải:

  • Đặt lại Sức khỏe và năng lượng về Max hoặc mặc định (luôn giống nhau cho mỗi ký tự)
  • Đặt lại bộ đếm thời gian
  • Đặt lại vị trí bắt đầu của nhân vật
  • Đặt lại địa hình về trạng thái mặc định (không có lỗ đạn để sửa hoặc tải lại!)

Và đó là toàn bộ danh sách về cơ bản - có nghĩa là thiết lập lại trạng thái nhanh thay vì tải lại toàn bộ mức độ khả thi hơn. Điều này cũng có thể được hiển thị theo thời gian tải khi bạn bắt đầu trận đấu. Phải mất một thời gian dài để tải tất cả các mô hình nhân vật và cấp độ nhưng chỉ cần một vài tích tắc xử lý để đặt lại vị trí bắt đầu của nhân vật giữa các trận đấu với một mô hình đã được tải.

Điều quan trọng cần lưu ý là đây cũng là một yêu cầu cao hơn của các trò chơi chiến đấu vì người chơi của họ có xu hướng muốn quay lại hành động cực kỳ nhanh chóng vì các trận đấu thường chỉ kéo dài một phút - nhấn mạnh rằng câu trả lời này phụ thuộc rất nhiều vào trò chơi và thể loại. FPS yêu cầu tài sản năng động hơn trong khi Máy bay chiến đấu yêu cầu hành động lặp lại nhanh chóng.

Tôi hy vọng điều này đã làm sáng tỏ câu hỏi của bạn.


7
Câu trả lời tuyệt vời ... khía cạnh hoài nghi của tôi, sẽ đưa bạn: "làm việc ít hơn cho điểm của các nhà phát triển cao hơn trong danh sách ... nhưng có lẽ đó là cách thực hiện của động cơ có thể tốt hơn.
Lưới

3
Ngoài ra, những gì về phục hồi lỗi? Một NPC không di chuyển do lỗi hệ thống vật lý, rò rỉ bộ nhớ, vv Ngay cả khi trò chơi đã được kiểm tra kỹ lưỡng, những điều đó vẫn xảy ra và phải có cách để thiết lập lại trò chơi về trạng thái đã biết và đang hoạt động.
Sulthan

9
Ít làm việc là một mục tiêu tuyệt vời để đạt được, không phải là một chủ đề xấu hổ. Bạn có thể dành một tuần để xây dựng một hệ thống tua lại và một tháng để loại bỏ tất cả các lỗi, hoặc tải lại và tải lên các tính năng khác =)
Patrick Hughes

1
Tôi nghĩ rằng chi phí là đối số quan trọng nhất ở đây. Trừ khi tải lại một cấp độ xảy ra rất nhiều và trở thành một phiền toái lớn cho người dùng, không có khuyến khích để viết mã tối ưu hóa để làm cho tải lại nhanh hơn. Nó chỉ tốn ít chi phí để sử dụng lại mã cho một tải bình thường.
orlp

1
+1 Tôi chỉ muốn làm rõ rằng tải lại một cấp và tải một cấp - nếu tải lại ném mọi thứ ra và bắt đầu với một tải mới - không yêu cầu phải viết mã mới để hoàn thành mục tiêu chơi trò chơi. Một hệ thống tua lại là một bộ mã hoàn toàn mới không tầm thường và vì nó phụ thuộc vào trạng thái biến nên việc gỡ lỗi là cực kỳ khó khăn. Ví dụ: "Sửa lỗi: Khởi động lại một cấp độ sau khi thả mũ bảo hiểm lên trên quả bom sau khi tên lửa phát nổ trong vòng 200 pixel nước không còn gây ra sự cố cho máy tính để bàn." Nói tóm lại, bạn phải có một lý do thực sự tốt để làm phiền.
BrianH

14

Để làm rõ các câu trả lời hiện có đối với câu hỏi của bạn về bảng điều khiển: chúng không có đủ bộ nhớ để lưu trữ cả trạng thái bắt đầu và trạng thái hiện tại cho các trò chơi phức tạp lớn hơn.

Một trò chơi có thể lưu trữ cấp độ và trạng thái ban đầu một cách riêng biệt để chỉ trạng thái có thể được giới thiệu lại, và đây rất có thể là điều mà nhiều trò chơi làm. Ngay cả việc phát trực tuyến cũng sẽ chậm hơn một chút so với việc nó được giữ trong bộ nhớ.

Bảng điều khiển hiện tại "tốt nhất" chỉ có 512 MB bộ nhớ được chia sẻ giữa dữ liệu CPU và đồ họa. Đó là nhỏ bé. Một trong những vấn đề đau đầu hiện nay của phát triển giao diện điều khiển là cố gắng phù hợp với các trò chơi đáp ứng mức chất lượng ngày nay với bộ nhớ nhỏ như vậy. Đếm Kilobyte có thể trở nên quan trọng, đặc biệt là gần với ngày tàu. Lưu trữ một bản sao trạng thái ban đầu của một cấp độ là một lượng dữ liệu có thể được thực hiện mà không có, cho phép sử dụng nhiều bộ nhớ hơn cho những thứ khiến trò chơi trở nên thú vị hơn trong khi chơi thay vì chỉ đơn giản là tải lại cấp độ nhanh hơn.

Lý tưởng nhất, người chơi dành nhiều thời gian chơi game hơn là chết và khởi động lại, vì vậy tối ưu hóa để có trải nghiệm tốt hơn trong khi chơi có ý nghĩa hơn.

Mọi thứ có thể thay đổi mạnh mẽ với bảng điều khiển thế hệ tiếp theo và bộ nhớ 8GB của họ. Hoặc chúng có thể giữ nguyên, với các mô hình và vật liệu có độ phân giải cao hơn và số lượng lớn các đối tượng hoạt động trong trò chơi. Thời gian sẽ trả lời. Cho rằng các trò chơi trên PC thường nhắm mục tiêu vào các máy có RAM 2 GB và VRAM 512 MB (mặc dù có nhiều tỷ lệ cho các giá trị lớn hơn nhiều), 8GB máy chơi game mới khá xa xỉ so với đường cơ sở tối thiểu. Chúng ta có thể sẽ thấy một sự chuyển đổi sang các trò chơi đòi hỏi CPU / HĐH 64 bit và 4-8GB RAM với 1-2GB VRAM trong những năm tới. Lưu trữ nhiều trạng thái trong bộ nhớ để chụp nhanh sẽ dễ dàng hơn rất nhiều sau đó.


+1 Thông tin tuyệt vời và một lời giải thích tuyệt vời về lý do tại sao các bảng điều khiển lại chậm hơn rõ rệt khi tải lại.
Piddock Tom 'Blue'

7

Tôi không đồng ý với phần lớn câu trả lời của Blue, tôi không tin có trường hợp kỹ thuật vì không đặt lại cấp độ - tôi chắc chắn không bao giờ gặp phải trường hợp nào. Tải cấp độ hầu như luôn luôn chậm hơn so với đặt lại cấp độ, trên thực tế tôi thấy khó có thể hình dung được một dịp nào đó. Trong hầu hết các trường hợp, trò chơi có thể cung cấp tải cấp tức thì một cách hiệu quả nếu các nhà phát triển chọn.

Câu trả lời thực sự là, như đã đề xuất, nó dễ dàng và nhanh chóng hơn. Việc tải lặp lại các cấp độ là điều mà một trò chơi yêu cầu dù sao đi nữa, vì vậy việc tái sử dụng điều này thành khởi động lại cấp độ là tương đối đơn giản. Việc thiết lập lại đòi hỏi những con đường mới phức tạp với rất nhiều tiềm năng cho các lỗi mới và rò rỉ bộ nhớ và nó đòi hỏi một sự đầu tư đúng mức về thời gian của nhà phát triển. Trong một số trường hợp, nó cũng có thể đẩy giới hạn bộ nhớ. Vì các trò chơi hiếm khi được phát triển với thời gian dành cho nhà phát triển, nên các mục như đặt lại cấp độ có xu hướng đáng tiếc bị bỏ qua, đặc biệt là nếu kiến ​​trúc trò chơi không được xây dựng tốt nhất ở nơi đầu tiên.

Mặc dù tôi cho rằng người ta có thể đưa ra một tình huống trong đó "tua lại" là cần thiết để đặt lại, nhưng thực tế hầu hết các trò chơi chỉ cần lưu trữ trạng thái ban đầu, cung cấp một phương tiện hiệu quả để đặt lại hoàn toàn trạng thái đó cho các đối tượng được giữ lại và một phương tiện để gắn cờ các đối tượng từ bỏ khi thiết lập lại. Thông tin trạng thái trò chơi cũng cần được lưu trữ và đáng nhớ. Loại thông tin này thường tương đối nhẹ trên bộ nhớ so với yêu cầu cho toàn bộ cấp độ, do đó, việc này sẽ loại bỏ nhu cầu tải dữ liệu chậm, tốn kém từ đĩa (bao gồm các mục lớn như kết cấu và mô hình) và thay thế nhanh chóng -memory vượt qua của cảnh.


3
Bạn có thể muốn xem câu trả lời của Sean để biết ví dụ về trường hợp kỹ thuật mà bạn có thể muốn tải lại một cấp độ trong việc "đặt lại" nó
SpartanD Muff

2

Để cho phép chơi trò chơi cấp độ lớn hoặc liền mạch, ngay cả với bộ nhớ hạn chế (bộ nhớ luôn quá nhỏ, câu hỏi đặt ra là nếu bạn đạt giới hạn RAM trước hay trên card đồ họa), có một chiến lược khác:

Chỉ có một phần của cấp độ trong bộ nhớ, mà người chơi cần hiện tại hoặc sẽ cần trong vài giây. Mô hình, kết cấu, mẫu âm thanh, ... có lẽ không còn cần thiết nữa sẽ bị xóa khỏi bộ nhớ.

Dungeon Siege xuất hiện trong tâm trí (các nhà phát triển từng tuyên bố rằng quản lý bộ nhớ chiếm nhiều sức mạnh xử lý hơn so với chơi trò chơi thực tế), hầu hết các MMORPG đều làm điều đó, Shooters với môi trường mở phải làm điều đó, ... Trong những trường hợp này, sự khởi đầu của mức (hoặc thậm chí là điểm hồi sinh 30 giây trước) có thể không còn (hoàn toàn) trong bộ nhớ nữa.

Thường thì tải lại mới là cách dễ nhất, cách rẻ nhất và có lẽ là cách nhanh nhất.

Chỉnh sửa: Đây là một bài viết về các cơ chế tải của Dungeon Siege: The World World of Dungeon Siege


Điểm hay, tôi đã không nghĩ về mức độ liên tục hoặc liền mạch. Điều đó sẽ cần một hệ thống tải cấp hoàn toàn khác.
Tom 'Blue' Piddock

2

Với câu trả lời tuyệt vời của Sean và Blue về các giới hạn nền tảng vật lý và các quyết định ủng hộ, tôi sẽ mở rộng nhận xét sang một cách tiếp cận khác:

Tại sao bạn chỉ nên tải lại hoàn toàn cấp độ

Vì vậy, bạn đã có cuộc gọi loadLevel () hoạt động hoàn hảo, yay! Bạn truyền phát thông tin tệp cấp độ và từng bước xây dựng thế giới dựa trên nó, tạo các đối tượng và tải kết cấu và âm thanh khi bạn đi. Sau đó, khi tất cả đã xong - hoặc thực hiện "đủ" để cho phép phát bắt đầu, bạn gọi startPlay () và thế giới của bạn được tiết lộ và âm nhạc của bạn bắt đầu phát.

Bây giờ khi bạn hoàn thành cấp độ, hoặc thoát vào menu hoặc thoát khỏi trò chơi, bạn gọi unloadLevel () để giải phóng tất cả tài nguyên và bộ nhớ bạn đang giữ để cho phép trải nghiệm mượt mà.

Bây giờ, điều gì xảy ra khi bạn muốn thêm tính năng "Khởi động lại cấp độ"? Tốt...

unloadLevel(currentLevel);
loadLevel(currentLevel);
startPlay();

Và bạn đã hoàn thành! Không có mã mới, chỉ có một vài chức năng đơn giản gọi và bạn đã viết và gỡ lỗi tất cả, vì vậy bây giờ Tính năng khởi động lại sáng bóng mới của bạn bị loại khỏi danh sách của bạn và có thể không bao giờ gặp lại - mã không bị rỉ sét, không bị rỉ sét là loại tốt nhất! Di chuyển mã vào một hàm restartCienLevel () và bạn có thể gấp mã đó đi và không bao giờ nhìn lại nó - có thể sau khi chắc chắn có một mức để khởi động lại, tất nhiên :)

Nhưng sau đó, bạn tự hỏi nếu điều này không phải là một sự lãng phí, dỡ bỏ những thứ bạn sắp tải lại lần nữa. Chà, nếu mức độ và tài nguyên của bạn nhỏ thì phần lớn bạn phải đạt được là một vài giây thời gian tải dự phòng mỗi lần "Khởi động lại" được gọi ngay cả trên các hệ thống chậm (và có thể là điện thoại thông minh cũ hơn), vậy ai quan tâm? "Tối ưu hóa sớm", bạn có những điều tốt hơn để làm với thời gian của mình.

À, nhưng bây giờ các cấp độ của bạn đang tăng lên và kết cấu của bạn ngày càng chi tiết hơn và nhạc nền đã được trích xuất ở tốc độ 512kbps với các kênh riêng biệt cho mỗi lớp giọng nói và âm nhạc (có vẻ như đó là một ý tưởng tốt vào thời điểm đó, mặc dù bạn không thể nhớ tại sao. ..) và một cái gì đó về "ma trận voxel phụ thuộc nguồn gốc trạng thái truy tìm ma trận biến đổi Fourier đa chiều" mà bạn nghĩ là hoàn toàn được tạo ra và không phải là một điều thực sự, và việc tải cấp thực sự mất một thời gian và nó bắt đầu làm phiền bạn. Bạn thậm chí đã thử nghiệm với người thật và họ thực sự cho thấy sự khó chịu trong thời gian chờ đợi vì nó tệ hơn các trò chơi tương tự (bạn không mong đợi một thành phố thủ đô MMORPG có 100 người chơi tải hoàn toàn trong <2 giây, phải không?), và đó là một vấn đề.

Vậy làm thế nào để bạn tối ưu hóa? Vâng, nếu mức độ tái -loading là một vấn đề, sau đó không phải là mức tải một vấn đề? Nếu bạn nghĩ rằng nó chỉ tải lại, tại sao mọi người lại tải lại cấp độ của bạn thường xuyên hơn nhiều so với việc họ chỉ tải cấp độ ở nơi đầu tiên? Âm thanh giống như một vấn đề chơi trò chơi, không phải là một vấn đề kỹ thuật mã. Ai nghĩ rằng niềm vui của nó để tải lại một cấp độ nhiều lần, và chỉ muốn nó nhanh hơn thay vì hoàn toàn có thể tránh được ?

Khắc phục sự cố thực sự trước!

Nhưng giả sử trò chơi của bạn được thiết kế để thỉnh thoảng bạn phải khởi động lại và thời gian tải đủ lâu để bạn có thể làm một lần và hoàn toàn không thể tránh khỏi, nhưng bạn không muốn phải làm lại. Đây là loại trò chơi gì? Có vẻ như có một chút vấn đề kỳ lạ ... có thể là một trò chơi giống như Cổng thông tin có độ phân giải cao trong đó giả sử bạn sẽ làm xáo trộn câu đố nhiều lần?

Trước hết, bạn phải nhận ra rằng điều này sẽ không tầm thường. Bạn sẽ phải viết mã hoàn toàn mới, chưa được kiểm tra và nó "phụ thuộc vào trạng thái" để bạn thậm chí không biết cái gì sẽ hoặc không được sử dụng lại giữa các lần chơi cấp. Có các yếu tố ngẫu nhiên, sinh sản, kết cấu biến đổi (bộ xương của bạn đôi khi chỉ mặc áo giáp?), Hoặc các yếu tố thay đổi khác trong cấp độ của bạn? Có những thứ khác nhau với người chơi, như một bộ trang phục hoặc mô hình tùy chỉnh hoặc màu sắc / cửa / bẫy?

Bạn sẽ được so sánh, và rất nhiều trong số họ. Bạn sẽ lặp qua các yếu tố cấp độ, so sánh những gì sẽ cần so với những gì được tải ngay bây giờ (bạn sẽ làm gì với những thứ được tải cho cấp độ cuối cùng nhưng không phải là thứ này - giải phóng chúng hoặc giữ lại để ngăn chặn tương lai tải?). Nếu đây thực sự là một vấn đề lớn đối với trò chơi của bạn, có lẽ bạn sẽ muốn thay đổi mã tải / hủy tải của mình để xem có thứ gì đã được tải trước khi tải không (tạo mã đa năng nhưng có khả năng giới thiệu các lỗi mới cho các tính năng và chức năng hoạt động trước đó phát hành cẩn thận các tài nguyên sẽ không được sử dụng trong tương lai gần). Thở dài.

Bất kể bạn làm gì, ngay cả khi trò chơi của bạn đơn giản, bạn sẽ gặp phải các lỗi tối nghĩa dựa trên trạng thái cấp độ / người chơi khi cấp độ được khởi động lại mà bạn không tải cấp lần đầu tiên. Vì vậy, bạn có thể viết cập nhật trò chơi với văn bản như:

"Thả mũ bảo hiểm vào một quả bom vào một viên gạch có tên lửa phát nổ gần nó cũng trong phạm vi 200 pixel nước sẽ không còn làm hỏng dữ liệu trò chơi của bạn hoặc khiến trò chơi bị sập."

Lý do thực sự Hầu hết các trò chơi Đừng làm phiền

Bạn có bao giờ nhận thấy rằng hầu hết mọi người chỉ sơn hoặc vách thạch cao trên các bức tường hiện tại của họ thay vì tước xuống một lớp cơ sở, hoặc trải thảm ngay trên sàn gỗ cứng thay vì kéo chúng lên?

Một thực tế đơn giản là tất cả đều làm việc nhiều hơn để nhận phần thưởng tối thiểu. Vẽ tranh trên các bức tường hiện tại của bạn hoạt động tốt hầu hết thời gian và giá trị của việc xé toạc sàn gỗ cứng thường là tối thiểu hoặc không có.

Điều tương tự cũng đúng trong phần mềm, từ trò chơi đến Bản trình bày Power Point đa phương tiện - nếu tất cả những gì bạn làm là tắt một vài giây trên màn hình tải, mọi người sẽ dành 1% thời gian để xem, thì tốt hơn hết là bạn nên làm hoặc bạn sẽ nhận được lợi nhuận rất kém về thời gian đầu tư của bạn.

Và vì vậy, hầu hết các trò chơi không bận tâm, và tôi gặp khó khăn khi nghĩ về rất nhiều trò chơi trong đó việc tải màn hình làm cho một trò chơi hay khác trở nên ít giá trị hơn, ngoại trừ một vài ví dụ cực đoan; các ví dụ cực đoan là việc tối ưu hóa để tải cấp nhanh hơn có ý nghĩa và đó là một phần nhỏ các trò chơi đưa nó ra công chúng, và thậm chí có thể là một phần nhỏ hơn của các trò chơi mà không ai từng thấy vì chúng không bao giờ được phát hành.


0

Bởi vì khó phát triển hành vi ngược lại, tất cả là giữ dữ liệu trò chơi tĩnh (như kết cấu, thông tin địa chất, mob không bị ảnh hưởng) trong bộ nhớ và chỉ tải lại dữ liệu động (như vị trí người chơi, chỉ số người chơi, trạng thái nhiệm vụ, kho đồ) .

Vì chi phí nhiều tiền và thời gian hơn, các nhà phát triển trò chơi thường không làm điều đó.


Điều này không bao gồm các tình huống mà điều ngược lại phải xảy ra do thể loại trò chơi hoặc nhu cầu cá nhân. Chẳng hạn như Prince of Persia cần ghi lại trạng thái trò chơi để sử dụng một cơ chế trò chơi cụ thể và các ví dụ về trò chơi chiến đấu mà tôi đã đưa ra cần phải có thể tải lại các trạng thái vật phẩm / cấp độ / nhân vật riêng lẻ để thiết lập lại giữa chừng trận đấu để bắt đầu vòng tiếp theo hoặc khởi động lại trận đấu để bắt đầu trò chơi tiếp theo. Những thứ này là cần thiết để đáp ứng nhu cầu của trò chơi trong tay và do đó không cần thiết cho các nhà phát triển trò chơi phải dành nhiều thời gian và tiền bạc hơn.
Tom 'Blue' Piddock

Nếu điều ngược lại xảy ra trong một trò chơi cụ thể, câu hỏi trên không hợp lệ cho trò chơi đó. Bởi vì thời gian tải sẽ nhanh trong trò chơi mà điều ngược lại xảy ra. Tôi vừa trả lời câu hỏi cho tình huống mà nó áp dụng (đó là các trò chơi tải toàn bộ cấp độ từ đầu)
Xtro

Nếu điều ngược lại xảy ra trong đó tiền đề của câu hỏi có thể xảy ra thì nó luôn luôn đáng chú ý và tại sao. Thiếu thông tin hoặc để lại chi tiết về lý do tại sao một tình huống hoặc giải pháp đã trở thành không bao giờ có lợi. Nói rằng không cần chi tiết là một chút phản cảm trực quan vì sẽ không có câu hỏi ngay từ đầu nếu người đó không tìm kiếm chi tiết. Nếu bạn có thể cung cấp thêm chi tiết, hãy luôn cố gắng để làm điều đó vì nó giúp người khác tìm hiểu thêm về một chủ đề nói chung và nắm bắt những gì cần thiết từ deatil.
Tom 'Blue' Piddock

Vì vậy, phản ứng của bạn là cho câu trả lời đầu tiên của tôi đó là về "không cần chi tiết" phải không? Nếu tôi xóa dòng đó, bạn có lấy lại -1 điểm không?
Xtro

Đủ vui - có Không bao giờ khuyến khích chi tiết nơi có thể cung cấp cho nó và nói chung bạn sẽ thấy câu trả lời của bạn được đánh giá cao hơn nhiều.
Tom 'Blue' Piddock
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.