"Я знаю всё" : релиз и версия с открытым кодом!

Всем привет! Рады сообщить, что игра «Я знаю всё» теперь доступна в Steam! Сыграйте в эту викторину с поддержкой мультиплеера в одиночку, с другом или против компьютера, узнайте новые факты и протестируйте свою эрудицию!

"Я знаю всё" : релиз и версия с открытым кодом!
28

Привет!
Из того, что сходу приходит в голову, хочется отметить следующее.
В текущей версии игры в базе данных каждому вопросу соответствуют свои четыре варианта ответа, что приводит к необходимости их вносить, даже если они уже были внесены (например, названия планет или имена писателей). На ранних этапах разработки игры была ещё идея сформировать некие древовидные категории ответов (например Космические тела -> Тела Солнечной системы -> Планеты солнечной системы -> Планеты-гиганты -> Юпитер), и затем, однажды заполнив это дерево ответов, повторно использовать их в разных вопросах. Это, несомненно, лучше с точки зрения недублируемости данных, но я столкнулся с проблемой того, что в реляционной БД сделать такую структуру довольно нетривиально (если интересно, можно почитать на эту тему в обсуждении по ссылке в конце, если вкратце, то есть разные решения, но все они компромиссные, в некоторых быстрое обновление базы, но медленное чтение, в некоторых наоборот). Поэтому я решил сделать всё проще и сделал как сейчас :)

В качестве альтернативы SQLite именно для вот такого решения задачи, с созданием иерархии категорий ответов, думаю, хорошо подошла бы какая-нибудь NoSQL база данных, допустим, Mongo или eXist, но, во-первых, я не нашёл библиотек для работы с этими базами из Godot, а во-вторых, как уже было сказано, решил не усложнять задачу и вообще отказаться от этой древовидной структуры.

Что касается поиска и сортировки, то пока что я, к сожалению, настолько глубоко в настройку БД не лез, понадеялся, что настройки по умолчанию будут работать нормально. В любом случае, вопросов в базе пока ещё не так много.

1
Ответить