Фрилансеры предложат решение вашей задачи уже через несколько минут!
Публикация заказа не займет много времени.
11 лет назад
Roman Susha
Roman Susha 
Беларусь
12 лет в сервисе
Был онлайн 10 лет назад
11 лет назад

Требуется замена заболевшего программиста с++ bkb java. Суть заключается в разработке серверного приложения для онлайн-игры (нац.игра африканских стран, вроде шашок), настройка сервера. Клиент игры ( пишется нашим флэшером ) должен взаимодействовать с серверным приложением. Техническое задание в наличии.

КРАТКОЕ ОПИСАНИЕ:

1. План разработки сервера игры

Протокол:
Возможны 2 варианта работы клиента с сервером
1.синхронная, односторонняя (аналог ― HTTP или SOAP)
2.асинхронная (аналог - Jabber)
В первом случае только клиент посылает сообщение серверу а сервер
только отвечает на него. Этот вариант позволяет создавать более
простых клиентов, упрощает синхронизацию, но клиент должен
периодически опрашивать сервер не появилось ли новых сообщений что
увеличивает трафик и создает дополнительные задержки. Во втором ― как
клиент так и сервер могут посылать запросы или сообщения асинхронно.
Клиент более сложен, т.к. он должен уметь обрабатывать входящий
запросы и различать ответы на разные запросы. Но задержки сводятся к
минимуму. Поэтому далее я буду рассматривать второй вариант.
Клиент-серверное взаимодействие сводится к обмену сообщения в xml
формате поверх, зашифрованного с помощью SSL, tcp/ip соединения. Все
сообщения делятся на классы по типу решаемых задач и уровням доступа.
Например
0 уровень (клиент не авторизован) ― возможны только сообщения о ходе в
систему либо регистрации
1 уровень (демо доступ) ― любые сообщения связанные с Solo игрой
2 уровень (полный доступ)
Любое сообщение содержит имя команды, уникальный номер и блок данных.
Сообщения записываются в стек и обрабатываются последовательно.
Сообщения могут быть 3х видов:
1.требующие запрос к БД
2.требующие запрос к Игровому боту
3.требующие доставить их другому игроку(ам)
Так же сообщения 3-го типа могут создаваться СУБД для уведомления о
некоторых событиях в системе. Сообщения 3-го типа при обработке просто
перемещаются в исходящую очередь нужного клиента(ов). Сообщения 3-го
типа от СУБД извлекаются из специальной временной таблицы блоком
работы с базой данных и помещаются в соответствующие очереди клиентов.
Уведомление о появлении таких сообщений осуществляется с помощью
команды NOTIFY (PostgreSQL) и обработка происходит сразу после
создания сообщения.

Структура БД

В БД создаются необходимые таблицы и представления. И для каждой
клиентской команды, требующей запроса к БД, создается хранимая
процедура, которая ее обрабатывает. Таким образом вся логика
находится только внутри базы данных. Исключение ― бот для Solo игры.
Он будет запускаться в сервере и общаться напрямую с клиентом, а ходы
будут записываться в БД.

Структура сервера

Сервер будет состоять из 4х блоков
1.Главный блок. Этот блок запускает дочерние потоки и осуществляет
ожидание клиентов
2.Блок работы с базой данных. Содержит пул соединений с БД. Получает
Запросы от рабочих модулей, передает их в базу и отдает ответ.
3.Рабочий блок. Поток, который обеспечивает работу одного клиента.
Принимает запросы и передает их нужным блокам.
4.Бот. Поток, который запускается для Solo игры. (возможно будет
работать внутри потока запущенного 3-м блоком)
Блоки взаимодействую друг с другом с помощью очередей сообщений и
общей памяти. Для доступа к разделяемым ресурсам используются
блокировки разных типов.

Главный блок после запуска считывает конфигурацию, подключается к БД и
проверяет ее готовность. Далее открывает клиентский порт и ожидает
подключений. При подключении создает новый рабочий поток и передает
ему пользователя.

Пользователь после подключения получает статус 0 и ему доступны только
2 команды: авторизироваться или зарегистрироваться. В случае успешного
прохождения авторизации ему присваивается статус 1 или 2 в зависимости
от вида его учетной записи. Далее в зависимости от статуса
определяется список доступных команд. При выходе пользователя из
клиента или обрыве связи выполняется де-авторизация пользователя.

В общей памяти сервера находятся списки он-лайн пользователей, связи
id из БД и группы для рассылок сообщений в зависимости от текущих игр.


Этапы 1, части 1-2 выполнены:

Этап 1.
1. Альфа-версия документации API (выполнено)
2. Альфа-версия схемы базы (выполнено)
3. Альфа версия сервера с основным игровым функционалом
+ тесты + административный веб-интерфейс с минимальными возможностями

Этап 2.
4. Бета версия сервера с полным набором возможностей
5. Бета-тестирование

Этап 3.
6. Окончательная доработка проекта
7. Тестирования продукта


Оплата как почасовая, так и проектно, в зависимости от вашего выбора.
Если вы из Беларуси - возможна личная встрача.

Заявки фрилансеров

Нет заявок от фрилансеров

Похожие заказы

Screenshot maker: предложение по разработке серверного приложения

Требуется: - разработать систему генерации скриншотов сайтов по url под Linux - взаимодействие с сисадмином по внедрению ПО Требования: - параллельное создание скриншотов (текущая проблама) - лимит времени на считывание сайта и лимит на соединение

Клиентская часть рекламного модуля

Необходимо разработать клиентскую часть рекламного модуля (адваре) для win32 + серверную часть для управления клиентской частью (freebsd/linux). Предполагаемый язык разработки клиентской части - c/c++ Предполагаемые языки разработки серверной части -...

Адваре модуль (клиент + сервер)

Необходимо разработать клиентскую часть рекламного модуля (адваре) для win32 + серверную часть для управления клиентской частью (freebsd/linux). Предполагаемый язык разработки клиентской части - c/c++ Предполагаемые языки разработки серверной части -...

Клиентский модуль

Необходимо разработать клиентскую часть рекламного модуля (адваре) для win32. Предполагаемый язык разработки - c/c++, assembler Требования: - Опыт - минимум 3 года в области создания клиентских и серверных приложений, расчитанных на высокие нагрузк

Адваре модуль (клиент + сервер)

Необходимо разработать клиентскую часть рекламного модуля (адваре) для win32 + серверную часть для управления клиентской частью (freebsd/linux). Предполагаемый язык разработки клиентской части - c/c++ Предполагаемые языки разработки серверной части -...

Клиент-серверное приложение "Морской бой"

Нужно создать клиент серверное приложение (сервер и клиент). Сервер должен запускаться в виде службы операционной системы. Клиент должен соединяться с сервером. Основной смысл таков. Реализовать подобие игры морской бой. Клиент указывает (первый р

Многопоточное клиент-серверное приложение

Нужно с использованием функций Win32Api (только для создание соединения между клиентами и сервером, записи и открытии файлов сервером) создать клиент серверно приложение, реализующее простые принцыпы игры "Морской бой" В прикрепленном файле...

Клиент-серверное приложение на Ассемблере.

Суть: 1| Пользовательский компьютер( далее КЛИЕНТ), загружаясь по PXE (либо по Floppy, CD_ROM, HDD, USB-Flash) получает от сервера IP. Далее клиент от сервера получает файл (модуль\Бинарный файл). Который эмулирует IDE-интерфейс и вешает на него диск

Работа для Линукс С++ системного кодера

Задача:клиент сервер сокеты Реализовать клиент-серверное приложение,сокеты,писать,читать,слушать. Обычные сокетные функции. Сделать на подобе портмаппера. Буду рад поработать с хорошим линксойдом :) Личку не мониторю,стучать в асю: 493087523

Приложение под win xp,vista,7 либо java приложение

Приложение для удаленного доступа (аналог real vnc) жду ваших предложений