Разработка игрового движка
Я планирую компьютерную игру и ее движок. Будет трехмерный мир с видом от первого лица, и пока это будет одиночная игра. Язык программирования - C ++, и он использует OpenGL.
Решение по центру данных
Мое проектное решение - использовать архитектуру, основанную на данных, где есть глобальный менеджер событий и глобальный менеджер данных . Есть много компонентов, таких как физика, вход, звук, рендерер, AI, ... Каждый компонент может запускать и прослушивать события . Кроме того, каждый компонент может читать, редактировать, создавать и удалять данные .
Вопрос по поводу менеджера данных.
Использовать ли реляционную базу данных
Должен ли я использовать базу данных SQL, например, SQLite или MySQL, для хранения игровых данных? Он содержит практически весь игровой контент, такой как предметы, персонажи, инвентарь, ... За исключением мешей и текстур, которые еще более связаны с производительностью, поэтому я буду хранить их в памяти.
Достаточно ли быстра база данных SQL, чтобы использовать ее для чтения и записи игровой информации в реальном времени, например, позиции перемещающегося персонажа? Мне также нужно заботиться о кроссплатформенной совместимости. Помимо хранения всего в памяти, какие альтернативы у меня есть?
Преимущества будут
Преимущества использования реляционной базы данных, такой как MySQL, заключаются в ориентированной на данные структуре, которая обеспечивает быстрые вычисления. Мне не нужны объекты для представления сущностей. Я мог легко запросить данные объектов рядом с плеером, необходимые для рендеринга. И мне не нужно заботиться о данных объектов далеко. Кроме того, не было бы необходимости в сохранении игр, так как состояние «дырки» сохраняется в базе данных. И последнее, но не менее важное: расширение игры до онлайн-игры было бы относительно простым, потому что уже есть место, где хранится состояние закрытой игры.