Hãy nhìn vào thông minh ... chính xác thì thông minh là gì?
Bạn nói rằng bạn sử dụng XML làm định dạng để lưu trữ các cấp của bạn. XML là một định dạng phân cấp được lưu trữ trong một tệp. Do đó, chúng tôi có 2 yếu tố chính ảnh hưởng đến thời gian tải của chúng tôi:
Tốc độ IO: Đó là một hạn chế cứng . Bạn không thể ảnh hưởng đến tốc độ đọc và viết với mã của bạn. Ít nhất là không quá nhiều. Bạn có thể sử dụng những thứ như kích thước bộ đệm của bộ xử lý, v.v. nhưng đó là thứ cấp thấp và cũng khác với máy tính.
Cấu trúc XML của bạn: Đây là nơi bạn có thể phát triển tự nhiên. Bạn có thể quyết định cách bạn lưu trữ mọi thứ và những gì đến sớm hơn, những gì sau đó. Bạn thậm chí có thể bắt đầu nhóm các phần của một mức thành các bộ dữ liệu nhỏ hơn và sau đó đặt các bộ dữ liệu này trong tài liệu XML lớn của bạn, những phần cần thiết trước đó gần với phần đầu của tệp.
Vì vậy, mở rộng trên yếu tố thứ hai, bạn có thể lưu trữ cấp độ của mình ở định dạng như thế này:
<level>
<name>Dragon Boss</name>
<par-time>45</par-time>
<sections>
<section>
...
</section>
<section>
...
</section>
<section>
...
</section>
</sections>
</level>
Mỗi <section>
phần chứa một cấp độ để nó có thể được tải một trong số này tại một thời điểm.
Bây giờ chúng tôi đã sắp xếp định dạng thành một thứ hữu ích hơn, bước tiếp theo sẽ đảm bảo rằng chúng tôi thực sự có thể sử dụng tính năng này. Một cách là tải toàn bộ tập tin vào bộ nhớ, sau đó phá vỡ nó và chỉ bắt đầu phân tích dữ liệu mức sau khi phá vỡ nó. Do đó, bạn có thể tải các phần bổ sung theo yêu cầu mà không phải thực hiện tất cả việc tạo ra các kết cấu, vật thể vật lý đắt tiền và những gì không phải trước khi bạn cần chúng.
Nếu tệp của bạn, vì một số lý do kỳ lạ, quá lớn để tải vào bộ nhớ thì bạn có thể bắt đầu sử dụng trình phân tích cú pháp SAX thay vì trình phân tích cú pháp DOM mà bạn có thể đang sử dụng . Ưu điểm của trình phân tích cú pháp SAX là nó không cần phân tích toàn bộ tệp trước khi bạn có thể làm việc với nó. Nó cũng đọc và xử lý tệp vốn đã khác với trình phân tích cú pháp DOM, do đó, đọc cả hai có thể là một cách tốt.
Một chủ đề khác dường như sôi nổi từ ý kiến của bạn về các câu trả lời khác là tổ chức dữ liệu của bạn . Nói chung, bạn nên cố gắng tách rời logic trò chơi của bạn khỏi dữ liệu trò chơi của bạn nếu có thể. Ví dụ, tải một cấp độ không có nghĩa là đọc một tệp từ đĩa và tạo mọi thứ được mô tả trong mỗi dòng của tệp. Thay vào đó, có thể tốt hơn là lưu trữ dữ liệu trong cơ sở hạ tầng trong bộ nhớ và sau đó bắt đầu làm việc trên đó khi cần thiết.