## Архитектура
* Клиент
* Сервер
* База данных
* Сайт
### Клиент
* Посылает и принимате сообщения от сервера.
* Отображает графику и объекты
* Отображает интерфейс пользователя и диалоги
### Сервер
* Принимает и отправляет сообщения.
* Осуществляет контроль версий клиента.
* Отвечает за безопасность.
* Игровая механика и взаимодействия игроков.
* Играет за монстров 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, подмену пакетов.
* Апдейтер: проверяет контрольные суммы файлов и папок, вычисляет разницу, заменяет и докачивает необходимые файлы.
* Установщик: ставит все необходимые библиотеки, создает папку назначает права, распаковывает архив или закачивает файлы, запускает апдейтер, запускает игру.
* Демоны принимают сигналы: старт, стоп, рестарт и позьзовательские доступны в том числе через веб интерфейс.
Есть идея реализовать все алгоритмы.
Выбрать какой то один распространненный язык программирования.
И реализовать алгоритм + описание сложить в одном месте.
Незнаю пока как это сделать. Сообществом или скинуться деньгами и заказать. Потом сделать хаб.
На структуризацию и сохранение данных больше похоже.
Решил написать больше 5-7 лет назад, пришлось освоить все что можно и нельзя. Только только подхожу к началу работы.
Мне нужен tcp/udp
http://s8.hostingkartinok.com/uploads/images/2016/04/d2b543b993ecdc185adfedf769d98e40.jpg
* Клиент
* Сервер
* База данных
* Сайт
### Клиент
* Посылает и принимате сообщения от сервера.
* Отображает графику и объекты
* Отображает интерфейс пользователя и диалоги
### Сервер
* Принимает и отправляет сообщения.
* Осуществляет контроль версий клиента.
* Отвечает за безопасность.
* Игровая механика и взаимодействия игроков.
* Играет за монстров 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, подмену пакетов.
* Апдейтер: проверяет контрольные суммы файлов и папок, вычисляет разницу, заменяет и докачивает необходимые файлы.
* Установщик: ставит все необходимые библиотеки, создает папку назначает права, распаковывает архив или закачивает файлы, запускает апдейтер, запускает игру.
* Демоны принимают сигналы: старт, стоп, рестарт и позьзовательские доступны в том числе через веб интерфейс.
https://yadi.sk/d/bsH42fNvqkYp8
Выбрать какой то один распространненный язык программирования.
И реализовать алгоритм + описание сложить в одном месте.
Незнаю пока как это сделать. Сообществом или скинуться деньгами и заказать. Потом сделать хаб.
Решил написать больше 5-7 лет назад, пришлось освоить все что можно и нельзя. Только только подхожу к началу работы.