Разработка устройства хранения данных для очень большого игрового мира

Вы должны указать «путь» к коду, который вы пытаетесь вызвать. Вы можете сделать это с помощью

1) Укажите пространство имен второго проекта / класса, который вы хотите использовать, как правило, в верхней части файла кода.

using MySecondProject;

var foo = new ClassFromSecondProject();

2) Явно указав имя класса, который вы хотите использовать, включая его пространство имен

//do stuff
var foo = new MySecondProject.ClassFromSecondProject();
//do more stuff
7
задан Mike Pennington 24 November 2011 в 16:00
поделиться

3 ответа

Не связывайтесь с реляционными базами данных, если только вы не вынуждены использовать их из-за внешних факторов.

Посмотрите на Python pickle , полку

Shelve быстрый и хорошо масштабируется. Это устраняет беспорядочное преобразование между Python и представлением не-Python.


Edit.

Более важный совет. Не увязайте в выборе технологий. Получите локации, предметы, персонажей, правила и т. Д. Для работы . В Python. Как можно проще и правильно.

Не сжигайте ни единой калории в мозгу ни на чем, кроме базовой модели, правильности и базового набора функций, чтобы доказать, что вещи работают .

Если у вас есть модель, которая на самом деле работает , и вы можете потренироваться с некоторыми сложными модульными тестами, а затем сделать выбор технологии.

Если у вас есть модель, вы можете осмысленно масштабировать его до миллионов мест и видеть, какой тип хранилища требуется. Модель не может измениться - это суть приложения. Только уровень доступа и уровень сохраняемости могут изменяться для регулировки производительности.

11
ответ дан 6 December 2019 в 14:05
поделиться

Звучит например, то, что вы просите, является типом пространственного индекса . Для очень большой 2-мерной игры я бы рекомендовал использовать квадродерево . Quadtree хорошо работает, когда у вас большая территория, и активность, как правило, происходит в локализованных областях области, что характерно для большинства игр типа RPG. Это снизит ваши требования к хранилищу и, надеюсь, ускорит обнаружение столкновений.

Что касается сохранения игры, такие вещи, как статистика игроков и монстров, могут быть сохранены в базе данных, если вы: Меня беспокоят частые изменения. Для фактического макета уровня я бы рекомендовал использовать двоичный формат файла, специфичный для вашей игры. Не так много запросов типа базы данных, которые вам обычно нужно выполнять на уровне макета, и вы можете сделать большие оптимизации, используя свой собственный формат. Я бы не знал, как начать сохранять формат, подобный дереву квадрантов, в базе данных (хотя я уверен, что это возможно).

3
ответ дан 6 December 2019 в 14:05
поделиться

Я использую нереляционную базу данных для хранения больших объемов данных. Если вы можете работать на 64-битном оборудовании, MongoDB с его драйвером Python действительно очень хорош. Я не знаю, подходит ли это для Stackless, но это возможно.

1
ответ дан 6 December 2019 в 14:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: