Как считаете, как лучше хранить геодату:файл,mysql,nosql, в памяти (загруженные классы)?
Форум → Программирование → Общие вопросы программирования → Архитектура игрового сервера
Архитектура игрового сервера
Страницы: ← Предыдущая страница • Следующая страница →
-
-
Апрель 3, 2016, 11:23 д.п., спустя 2 часа 42 минуты 47 секунд
ну и вопросы
где хранить данные зависит от требований к ним и того, как ты с ними будешь работать.
посмотри ещё CAP-теоремуне всё полезно, что в swap полезло -
Апрель 3, 2016, 3:08 п.п., спустя 3 часа 45 минут 25 секунд
ну вот хоть какие то ссылки нашел сам, это хорошо :)
Сапожник без сапог -
Апрель 3, 2016, 6:13 п.п., спустя 3 часа 5 минут 21 секунду
Посмотрел Cap теорему - целостность данных и ролл бэки с бэкапами можно организовать. А вот рэйд массив и дополнительные сервера не по карману.
-
Апрель 8, 2016, 7:54 п.п., спустя 5 дней 1 час 40 минут
написал небольшой ман по java книги оракл интернет
Java_samples.PDF
View and download from Yandex.Disk
yadi.sk
-
Апрель 12, 2016, 3:39 п.п., спустя 3 дня 19 часов 44 минуты
В формете грабить корованы "Архитектура"
Архитектура
- Клиент
- Сервер
- База данных
- Сайт
Клиент
- Посылает и принимате сообщения от сервера.
- Отображает графику и объекты
- Отображает интерфейс пользователя и диалоги
Сервер
- Принимает и отправляет сообщения.
- Осуществляет контроль версий клиента.
- Отвечает за безопасность.
- Игровая механика и взаимодействия игроков.
- Играет за монстров AI.
- Отвечает за целостность и сохранность данных.
- Держит необходимые данные в памяти и совершает репликации в базу
- Крон задачи
- Чат
- Бэкапы
Сайт
- Регистраци
- Авторизация
- Настройки
- Форум
- Новостная лента
- Медиа
- Админка
- Библиоткека
- Обратная связь
Админка
- Управление пользователями
- Обратная связь
- Управление новостями
- Управление бд
Особенности и узкие места
- Разделение логики:3д движок jmonkey,клиент-сервер.
- Сущьности и модели:3д движка,игровые сущьности, сущьности базы данных.
- Грид: для разделения на локации.
- Шаблон Observer: Для оповещения близконаходящихся объектов.
- Очередь сообщений: для оповещения клиентов.
- Сбор сообщений: сбор сообщений от близко находящихся игроков.
- Игровые вычисления: вычисление игровой механики для близко находящихся игроков и объектов
- Отправка: рассылка общего пакета с вычислениями для близко находящихся игроков и объектов
- Синглтон: создание единичного экземпляра объектаю
- Фабрика: для получения типовых объектов
- Абстракции: для определения полей и методов типовых классов.
- Модульность: 1)гибкость подгрузки вспомогательных классов. 2) разделение на модули. 3)роутинг.
- MVC: отделение логики базы данных, представления, и бизнес логки.
- AI монстров: модуль управления монстрами.
- DAO/ActiveRecord: 1) для работы с базой данных 2) ленивая загрузка
- Балансировка и масштабируемость: запуск нескольких экземпляров приложения, возможность запуска на разных физ машинах.
- Jar библиотеки, оптимизация.
- Сервер авторизации.
Игровые особеноости клиента и сервера
- Чат (отдельный демон принимающий и передающий очереди сообщений по тикам - таймеру)
- Инстансы (подземелья с отдельной логикой, с таймаутом посещения, физически отделены от общего игрового мира)
- Локации - грид (hex grid coordinates) - оповещение о действиях только рядом стоящих игроков и объектов
- БД: во время старта демона приложения делаются выборки из базы, все объекты находятся в памяти.
во время авторизации игрока создается формирующий запрос в бд и создается объект игрока. Переодически демон сбрасывает данные обратно в бд и чистит память. - Гвард: проверяет целостность данных клиента, проверяет code-injection, key-press, speed-hack,map hack,drop hack, подмену пакетов.
- Апдейтер: проверяет контрольные суммы файлов и папок, вычисляет разницу, заменяет и докачивает необходимые файлы.
- Установщик: ставит все необходимые библиотеки,создает папку назначает права, распаковывает архив или закачивает файлы, запускает апдейтер, запускает игру.
-
Апрель 12, 2016, 3:53 п.п., спустя 13 минут 52 секунды
@Padaboo, крут, а для чего это делаешь?
https://smappi.org/ - платформа по созданию API на все случаи жизни -
Апрель 12, 2016, 3:54 п.п., спустя 1 минуту 36 секунд
@adw0rd, игру делаю пока в gitlab вики делаю описание текстовой и графическое сущьностей архитектуры слоев шаблонов сценариев
-
Апрель 12, 2016, 4:01 п.п., спустя 7 минут
@Padaboo, для фана или по работе?
https://smappi.org/ - платформа по созданию API на все случаи жизни -
Апрель 12, 2016, 4:06 п.п., спустя 4 минуты 24 секунды
@adw0rd, звучит как "серьезно" или "на отъ*ебись". Хороший серьезный проект планирую скажем так)
-
Апрель 12, 2016, 4:22 п.п., спустя 16 минут 46 секунд
@Padaboo, понял )
https://smappi.org/ - платформа по созданию API на все случаи жизни -
Апрель 13, 2016, 1:55 п.п., спустя 21 час 32 минуты 36 секунд
Как думаете иммет ли смысл шифровать пакеты например:
* Формат пакета клиента: [time,user_id/session_id,controller_id,skill9-target]
* Формат пакета клиента: [time,user_id/session_id,controller_id,barter-target]- Формат пакета сервера: [time,кому,['object1','move' => 'xyz'],['object1' => 'object2','effect32']]
-
-
Апрель 13, 2016, 2:04 п.п., спустя 1 минуту 57 секунд
есть смысл шифровать абсолютно весь трафик каким нить rsa.
Спустя 15 сек.иначе к твоей игре бот появится на следующий день :)
Сапожник без сапог -
Апрель 13, 2016, 2:07 п.п., спустя 2 минуты 13 секунд
к твоей игре бот появится
@phpdude, как будто в этом есть что-то плохое
не всё полезно, что в swap полезло
Страницы: ← Предыдущая страница • Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!