Существует большая проблема, с которой никто здесь не обращался: огромная разница между хранением на диске и хранением его в памяти.
Предполагая, что вы говорите об игре мир, как вы сказали, это означает, что он будет очень большим. Вы не собираетесь хранить все в памяти за один раз, но вместо этого вы будете хранить ближайшую окрестность в памяти и обновлять ее, когда игрок ходит.
Этот район должен быть как можно более простым, легким и быстрым в доступе. Это определенно должен быть массив (или набор массивов, которые поменяются при перемещении игрока). На него будут ссылаться часто и на многие подсистемы вашего игрового движка: графика и физика будут обрабатывать загрузки моделей, рисовать их, удерживать игрока на вершине местности, столкновения и т. Д .; звук должен знать, какой тип земли находится в данный момент, играть соответствующий звук; и так далее. Вместо того, чтобы транслировать и дублировать эти данные среди всех подсистем, если вы просто храните их в глобальных массивах, они могут получить к нему доступ по желанию и со скоростью 100% и эффективностью. Это может действительно упростить вещи (но быть в курсе последствий глобальных переменных!).
Однако на диске вы определенно хотите сжать его. Некоторые из этих ответов дают хорошие предложения; вы можете сериализовать структуру данных, такую как хэш-таблица, или список только заполненных мест. Вы, конечно же, могли бы хранить октет. В любом случае вы не хотите хранить пустые места на диске; согласно вашей статистике, это означает, что 66% пространства будет потрачено впустую. Конечно, есть время, чтобы забыть об оптимизации и сделать его просто работающим, но вы не хотите распространять 66% -ный файл конечным пользователям. Также имейте в виду, что диски - это не идеальные машины с произвольным доступом (кроме SSD); механические жесткие диски по-прежнему должны быть примерно на несколько лет, и они работают лучше всего последовательно. Посмотрите, можете ли вы организовать структуру данных, чтобы операции чтения были последовательными, поскольку вы перемещаете более близкую территорию, пока игрок перемещается, и вы, вероятно, обнаружите, что это заметная разница. Не верьте мне на слово, хотя я на самом деле не проверял подобные вещи, это просто имеет смысл?
Я думаю, что лучший выбор метода для хранения мира зависит от того, какие операции вам нужно делать в игровом мире. –
И что бы вы сделали для каждого местоположения при переходе через них? Вам нужно посмотреть на близлежащие клетки? –