LINUX.ORG.RU

Хочу поинтересоваться в целях самообразования. Получается ли у них профит от того, что для хранения позиции используется одно поле, а не x, y и z? Ведь во втором случае можно будет чисто средствами SQL выбирать блоки в нужной окрестности игрока.

KivApple ★★★★★
()
Ответ на: комментарий от MyTrooName

sqlite использовался и в той версии, в которой не было lua.

KivApple ★★★★★
()

кстати, это таки блоки, или все-таки ноды?

MyTrooName ★★★★★
()

Чтоб все офигели, как он может.

EXL ★★★★★
()

Во-первых, странный вопрос. Хранит так потому, что быстрее, чем было раньше (в файлах). Во-вторых, сейчас принято хранить в leveldb, которая быстрее на больших и очень больших картах.

vurdalak ★★★★★
()
Ответ на: комментарий от KivApple

Ведь во втором случае можно будет чисто средствами SQL выбирать блоки в нужной окрестности игрока

не уверен, что это даст прирост производительности.

блоки (это, кстати, не 1 кубик, как в майнкрафте, а 16х16х16, вроде) к тому же загружаются не массово, а по одному

MyTrooName ★★★★★
()
Последнее исправление: MyTrooName (всего исправлений: 1)
Ответ на: комментарий от MyTrooName

не уверен, что это даст прирост производительности.

Мне кажется, что сделать один SELECT data FROM blocks WHERE (x >= ?) AND (x <= ?) AND (y >= ?) AND (y <= ?) AND (z >= ?) AND (z <= ?) лучше, чем гонять тысячи запросов. Во-первых, каждый запрос нужно парсить и бежать по всей БД заново. Во-вторых, у БД должна быть какая-то система ускорения поиска и выборки данных, которая в теории должна работать лучше, когда движок знает что от него хотят в итоге, а не получает задачу по частям.

KivApple ★★★★★
()
Последнее исправление: KivApple (всего исправлений: 1)
Ответ на: комментарий от KivApple

Во-первых, каждый запрос нужно парсить

не нужно. // надеюсь, в sqlite есть prepared statements

Во-вторых, у БД должна быть какая-то система ускорения поиска и выборки данных, которая в теории должна работать лучше, когда движок знает что от него хотят в итоге, а не получает задачу по частям

программист для конкретной задачи должен знать еще лучше

MyTrooName ★★★★★
()
Ответ на: комментарий от MyTrooName

блоки (это, кстати, не 1 кубик, как в майнкрафте, а 16х16х16, вроде)

Нет, блок (в minetest он ещё зовётся нодой) состоит из маленьких кубиков, коих в нём 16x16x16. Можно делать модельки с таким разрешением (16 кубиков на длину ребра блока).

Ceiling_QB ★★★★
()
Ответ на: комментарий от MyTrooName

Программист не знает как данные в итоге хранятся на диске (иначе зачем нужны БД), а БД знает. А поиск в файлах на диске нужно оптимизировать в первую очередь с точки зрения дискового I/O. Ну и да, если дать БД поля x, y и z, то она будет знать о структуре данных не хуже программиста.

KivApple ★★★★★
()
Последнее исправление: KivApple (всего исправлений: 1)
Ответ на: комментарий от Ceiling_QB

http://dev.minetest.net/Terminology

Blocks or Mapblocks are 16×16×16 groups of nodes

Nodes are 1×1×1 meter individual cubes in the game, and are grouped, generated and loaded by their blocks

но да, путаница присутствует и там

MyTrooName ★★★★★
()
Ответ на: комментарий от KivApple

Программист не знает как данные в итоге хранятся на диске (иначе зачем нужны БД)

это должен знать проектировщик БД (= программист), если производительность в приоритете

MyTrooName ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.