Câu trả lời:
Tôi đồng ý với Kinh doanh điện tử. Nó phụ thuộc vào kích thước và cách bạn muốn chỉnh sửa nó.
Ước tính kích thước byte của bản đồ của bạn trong một đại diện hợp lý nhỏ gọn. Cũng quyết định phần nào của bản đồ có thể thay đổi khi trò chơi chơi. Những phần không thay đổi có thể được tải và không phải lưu. Nếu kích thước ước tính là nhỏ, chỉ cần lưu trữ mọi thứ trong bộ nhớ. Không có giá trị phức tạp thêm khi tải các phần của bản đồ và theo dõi những gì bạn đã tải hoặc không, trừ khi dữ liệu quá lớn đến mức cần thiết.
Ví dụ: nếu bạn đang viết Civilization II , kích thước bản đồ của bạn có thể là 100x100 ô.
Đó là dưới 30k cho một đại diện nhị phân nhỏ gọn cho các đối tượng bản đồ + II, vì vậy bạn có thể lưu trữ tất cả trong bộ nhớ, ngay cả khi bạn sử dụng định dạng dài dòng lớn hơn nhiều. Tôi đã nhận được những con số trên từ một người nào đó đảo ngược cấu trúc bản đồ Civil II .
Daggerfall , được một số người coi là có bản đồ rộng đến mức lố bịch, có vẻ là 5000x2500 và khoảng 25 megabyte, nhưng nó cũng có một số lượng lớn NPC (750.000 là những gì tôi đã đọc nhưng có vẻ rất cao). Trên các máy tính để bàn / máy tính xách tay ngày nay, điều này cũng có thể phù hợp với bộ nhớ, nhưng trên các thiết bị di động hoặc trình duyệt có thể hơi lớn. Có một wiki mô tả định dạng bản đồ Daggerfall .
Bạn có thể giảm kích thước bằng cách xác định và bao thanh toán dự phòng . Ví dụ: thay vì lưu trữ 100.000 cây hoặc thanh kiếm giống nhau ở định dạng XML, hãy lưu trữ một cây và một thanh kiếm và 100.000 tham chiếu đến chúng. Trong các định dạng nhị phân, tham chiếu có thể chỉ có 1 hoặc 2 byte và ở định dạng dài hơn, tham chiếu vẫn có thể nhỏ một cách hợp lý.
Làm điều đơn giản nhất làm việc cho trò chơi của bạn. Nếu bản đồ nhỏ, sẽ không có vấn đề gì nếu bạn sử dụng định dạng nhỏ gọn hoặc dài dòng. Nếu định dạng nhỏ gọn sẽ phù hợp với bộ nhớ nhưng định dạng dài dòng thì không, bạn phải quyết định xem công việc bổ sung của định dạng nhị phân nhiều hay ít hơn công việc phụ của việc tải các phần của bản đồ. Điều đó sẽ phụ thuộc vào trò chơi. Trong một trò chơi giống như Civil, nơi bạn cần tất cả dữ liệu để mô phỏng lượt chơi, định dạng nhị phân có lẽ là lựa chọn tốt hơn. Trong một trò chơi giống như Daggerfall, nơi bạn không cần tải các khu vực ngoại trừ những gì gần người chơi, tải các phần của bản đồ có lẽ là một lựa chọn tốt hơn. Nếu bản đồ là như vậy lớn đến mức ngay cả định dạng nhỏ gọn cũng không vừa với bộ nhớ, trước tiên hãy tự hỏi liệu nó có thực sự xứng đáng với tất cả công việc phụ để xử lý hay không, và nếu vậy, hãy thiết kế định dạng nhị phân mà bạn có thể tải các phần.
Đối với dự án (sở thích) hiện tại của tôi, các bản đồ và tất cả các đối tượng trên chúng phù hợp với 50 MB, vì vậy giữ tất cả trong bộ nhớ sẽ ổn. Tuy nhiên, tôi muốn nó chạy trên trình duyệt và 50 MB nhiều hơn tôi muốn chuyển qua mạng, vì vậy tôi giữ tất cả chúng trong bộ nhớ trên máy chủ và sau đó chỉ tải các phần của thế giới vào máy khách. Các lát bản đồ của tôi là 1 byte cho mỗi ô, các ô 2048x2048 (4 MB). Các đối tượng (cây, ghế, orc, v.v.) được mã hóa JSON để đơn giản. Trong máy khách, tôi chỉ tải các khu vực bản đồ (bao gồm các đối tượng của chúng) ở gần trình phát.
Tải bao nhiêu ít nhất phụ thuộc vào độ lớn của bản đồ, nếu dữ liệu có thể phù hợp một cách hợp lý trong bộ nhớ thì thực sự không có lý do gì để bận tâm với tải liên tục.
Điều đáng chú ý nhất mà XML thực hiện là chiếm rất nhiều dung lượng lưu trữ / bộ nhớ / không gian mạng / lưu lượng truy cập bổ sung. Nếu bạn nghĩ rằng sử dụng XML là thú vị, hãy chắc chắn chỉ làm như vậy đối với lượng dữ liệu tương đối nhỏ.
Khi bạn thiết kế một định dạng dữ liệu, bạn nên nhớ cách bạn muốn chỉnh sửa dữ liệu này. Bạn có thể sử dụng trình soạn thảo văn bản đơn giản để ghi dữ liệu của mình dưới dạng tệp văn bản thuần túy, bạn có thể sử dụng trực tiếp các tệp này hoặc bạn có thể chuyển đổi chúng sang định dạng nhị phân để tiết kiệm dung lượng. Bạn có thể sử dụng trình chỉnh sửa hình ảnh để tạo các cấp độ của mình dưới dạng bitmap, một lần nữa, bạn có thể muốn chuyển đổi thành một tệp nhỏ hơn.
Hoặc bạn có thể tạo trình soạn thảo của riêng mình, trong trường hợp đó có rất ít lý do để không sử dụng định dạng nhị phân nhỏ gọn.
Không có ai trả lời cho những câu hỏi này. Đây là tất cả vốn tùy thuộc vào bạn.
Bạn có thể lưu bản đồ bằng mọi cách bạn thích và hiển thị / hiển thị chúng bất cứ lúc nào.