@NicoBurno
Разработчик-прокрастинатор

Какую, свободную, пространственную базу данных выбрать для MMOG?

В процессе построения бэкэнда архитектуры MMO-игрушки встал вопрос о работе с 3D объектами и пространством игрового мира (всю логику игры пишу на серверной части)...

Например одна из задач:
Дана трехмерная система координат(игровой мир) на которой разбросаны точки в случайных координатах(персонажи). Нужно реализовать чат. Сообщение отправленное одним персонажем должно придти всем другим персонажам в определенном радиусе от отправителя.

Сейчас я использую Elixir в качестве языка программирования, и PostgreSQL в качестве основной БД.

Всегда можно, конечно, изобрести велосипед... но наверняка уже должны существовать замечательные инструменты для этих задач? Знаю, что существует PostGIS, но что-то мне подсказывает что оно будет тормозить при большом количестве часто изменяемых данных(перемещение персонажей).
В качестве основных критериев рассматриваю(по приоритету, от самых важных):
  1. Масштабируемость и репликация. Желательно "из коробки".
  2. Быстродействие. Данные будут очень часто и быстро меняться.


Может кто сталкивался с подобными задачами? Как вы их решали и что использовали для решения? Какую БД использовали для длительного хранения данных, а какую для работы в реальном времени?
  • Вопрос задан
  • 491 просмотр
Пригласить эксперта
Ответы на вопрос 2
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Просто расстояние по координатам центров персонажей перебрать по циклу или получить их выборкой из оперативных данных.

Ещё вариант - это система триггеров взаимодействия сферических коллайдеров игроков.
Т.е., пересечение и отсечение других коллайдеров игроков с коллайдером текущего игрока - срабатывает добавление или удаление из массива текущего игрока других ближайших в заданном коллайдером радиусе (у всех он должен быть одинаковый в данной ситуации). Расстояние максимальное расстояние между игроками - это 2-а радиуса сферических коллайдера.
Когда нужно отправить сообщение - уже все нужные данные имеются в массиве: кому отсылать.
База - нужна в оперативной памяти: Redis.
Ответ написан
sim3x
@sim3x
Бери постгис - пока достигнешь значений, когда она будет тормозить у тебя появятся деньги на железо
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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