У меня есть 2D-игра, написанная на C ++ с использованием SFML. Я хочу сделать игру расширяемой таким образом, чтобы контент, такой как элементы или объекты, можно было легко добавить, добавив строку / запись / строку в файл или базу данных.
Я ищу что-то, что не нужно компилировать в программу, но вместо этого можно прочитать и записать во время выполнения. Когда было бы целесообразно использовать базу данных?
Ответы:
Используйте базу данных, только если вам нужна база данных. То есть:
Если данные вашей игры удовлетворяют любому из этих условий, вы можете воспользоваться базой данных. Обратите внимание, что они не очень распространены, и вы, вероятно , не удовлетворяете ни одного из них. Если вы это сделаете, я бы пошел с SQLite или что-то с аналогичной идеей, что не требуется работающий сервер и просто библиотека.
В противном случае используйте файлы и загружайте данные в память при запуске. Если вы хотите, чтобы игра была модифицируемой, загрузите эти данные как из каталога вашей игры, так и из каталогов модов и определите, как конфликтующая информация может быть объединена.
Также отмечу , что, если вы делаете использовать базу данных, это может принести пользу и вам , и разработчики модов по - прежнему использовать файлы для чтения исходных данных и построить базу данных только когда игра нагрузки. Если потенциальный размер этой базы данных не огромен (т. Е. Превышает несколько десятков МБ), вы можете использовать базу данных в памяти, что возможно в SQLite, указав
:memory:
в качестве пути к базе данных .источник
SQLite
, даже если ваши потребности НЕ "сложны" или "огромны". На самом деле существует множество причин, по которым при наличии чего-то маленького и такого встроенного вы можете получить большую выгоду, имея базу данных под рукой.Мне действительно нравится MongoDB для разработки игр, у него очень хорошая производительность, и он действительно гибкий, простой в использовании и основанный на json.
Вы можете просто добавить любое поле, которое вам нужно, в любую коллекцию, потому что это NoSQL Arch, так что он очень хорошо вписывается в любую «динамическую» среду, такую как игры.
Дайте ему взглянуть .
Если вы разрабатываете какую-то стратегическую игру, основанную на MMO Turn, возможно, вам следует прочитать о CouchDB , это база данных NoSQL с действительно хорошей системой управления версиями.
источник
CastleDB - хороший вариант, потому что это просто редактор, который впоследствии преобразует базу данных в файл JSON. Я видел много ответов, в которых говорится, что файл с открытым текстом лучше, так что CastleDB, вероятно, лучший из обоих миров.
источник