Кластеризованный игровой сервер на Java: реально ли?

Привет! Недавно пересел с Python (web) на Java. И понял, что мне хочется заняться чем-то более классным, нежели веб. Осмотрелся вокруг, вспомнил пример некогда популярного Minecraft. Вспомнил его ужасный сервер, вспомнил попытки его оптимизации (которые закончились его переписыванием) проектом GreenCubes, и подумал: а почему бы не написать свой Minecraft c блекджеком и дамами? Да, я понимаю что minecraft (и его идея) уже давно пережил пик популярности. Да, я понимаю, что у меня, вполне вероятно, не получится ничего путного. Нет, я не собираюсь открывать свой сервер minecraft. Это просто учебный проект.

В общем, основная идея в том, чтобы сервер динамически "размазывался" по некоторому числу нод при необходимости. И чтобы при этом мир для игрока оставался цельным.

То есть сервер построен так, что при повышении нагрузки он отделяет некоторый кусок мира и перемещает его на другую ноду, незаметно переключая туда клиентов, находящихся в этом куске. При падении нагрузки на некоторое время - объединение мира. Одна нода умирает, соседняя подхватывает себе ее клиентов. Ну и тоже самое при простых путешествиях игрока по миру: его просто перебрасывает между нодами..

В качестве клиентской библиотеки посматриваю на jmonkeyengine. Потому как именно на нем GreenCubes писали свой клиент, схожий с minecraft. И получилось не так уж и плохо.

А вот что делать с сервером - неясно. В качестве сетевой библиотеки смотрю в сторону netty. Пока не знаю, что использовать в качестве базы для протокола общения с клиентом. И самое главное, не очень представляю при помощи чего реализовать распределенное хранение мира, как организовать бесшовный перенос игрока со стороны сервера. В общем, джависты, помогайте советом. В какую сторону смотреть?
  • Вопрос задан
  • 3603 просмотра
Решения вопроса 1
hrls
@hrls
Это просто идеальная задача для Akka.
Сообщения - простая сериализация поверх protobuf, отказоустойчивость и балансировка с роутингом, кластеризация - все это из коробки.

Вообщем Akka - лучше не найдете.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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