Eu desaconselharia o uso de um único arquivo simples para quantidades teoricamente infinitas de dados.
Se você tem uma quantidade teoricamente infinita de dados, precisa de acesso aleatório , o que significa vários arquivos ou um banco de dados - ou um formato de arquivo simples indexado, que envolve a resolução dos problemas de indexação já resolvidos por sistemas de arquivos ou banco de dados.
Se você distribuir seus pedaços em vários arquivos, obter o pedaço em (-110, 5000) é apenas uma questão de "% APPDATA% / game / map / -110 / 5000.dat" (ou outro nome de arquivo, se você quiser comece a comprimi-los). Bancos de dados só precisam de uma consulta. Se um pedaço não tiver nenhum dado, você não poderá armazenar nada. Um único arquivo simples não oferece a velocidade e a conveniência do acesso aleatório logo de cara.
Em um único arquivo de tamanho arbitrário, para acesso aleatório rápido, você deve ter uma garantia para a posição de qualquer parte dos dados, o que significa usar um índice (uma vez que uma pesquisa binária bruta através de seus blocos de dados prejudica o desempenho e a criação de uma grade em seu arquivo com manchas "em branco" apresenta o problema do Byte56 ). Depois de desenvolver um sistema de indexação, aumentar a eficiência e escrever uma API para si mesmo, você recriou algo como o sistema de arquivos ou um banco de dados. A menos que você realmente ganhe algo com isso, provavelmente não vale o investimento. Por exemplo, o Steam se beneficia enormemente de seus formatos de arquivo GCF / NCF.
Se você quiser segurança em seus salvamentos, ainda é possível fazer isso. Por exemplo, você pode criptografar cada bloco individual. Para impedir que eles sejam excluídos, você pode ter um hash central com base nos dados salvos existentes. Se os dados salvos não corresponderem ao hash (e seu programa não causou a alteração), um pedaço foi excluído.