Нужно реализовать сам движок (доску) для одновременной игры нескольких тысяч/десятков тысяч игроков.
Что нужно от Вас:
1. Реализация системы мультиигры: одновременная поддержка нескольких тысяч/десятков тысяч партий (пример: lichess.org/).
Всех остальных наворотов (шахматных каптч, задач, различных вариаций шахмат(шахматы Фишера,... и т.п.) не будет). Только классические шахматы.
Игрок создает стол, выбирает себе цвет фигур (белые/черные/случайный цвет), задает продолжительность партии и выбирает силу противника в диапазоне (скажем, от 1600 до 1800).
Визуально процесс выбора оппенента должен выглядеть как здесь: joxi.ru/Y2L8JVzf9YYnq2, обязательно с двойным бегунком.
После чего стол появляется в списке партий в ожидании, и любой другой свободный игрок может за него сесть. Одновременно игрок может играть только в одной партии.
2. Реализация самого геймплея. Тут от Вас потребуется твердые знания правил игры: рокировки на длинную и короткую сторону, шах, мат, пат, удар пешкой через поле, и т.п.
3. Реализация входа в игру. С нашей стороны мы будем передавать Вам через GET параметр в iframe username игрока, а также хеш (md5(username+salt)), сверив который,
Вы убедитесь в отсутствии попытки взлома. Далее, обратившись на данный нами урл по API key, который мы Вам дадим, Вы получите рейтинг Эло игрока.
4. Реализация кнопок "предложить ничью" (подтверждение/отмена со стороны противника) и "сдаться". Обе эти кнопки должны быть с подтверждением (чтобы игрок случайно не нажал на "сдаться").
Реализация js таймера (взять с lichess.org/). Если время игрока на партию истекает, игроку автоматически засчитывается поражение.
5. По завершении партии Вы должны будете передать данные о ее результате на указанный нами роут по АПИ черех POST request.
В request-е нужно будет передать: username_1, хеш (md5(username_1+salt), username_2, хеш (md5(username_2+salt), API key, результат партии (1 – победа белых, 0 -ничья, 2 – победа черных),
продолжительность партии в секундах, история ходов партии в формате:
(1)b3e5(2)Bb2d6(3)e3Nf6(4)h3Be7(5)Be2Nc6 (без пробелов!!!)
В ответ на этот реквест Вы получите пересчитанный рейтинг Эло каждого из игроков в json формате и отобразите эти изменения в интерфейсе на своей стороне.
Сам интерефейс шахматной партии можно сделать полностью по аналогии с lichess.org/ , изменив детали, чтобы не было плагиата. Картинки фигурок и самой доски мы Вам дадим.
В целом будущий проект это будет упрощенный по функционалу вариант lichess.org/. Искусственный интеллект писать не нужно, партий человек – компьютер не будет. Только человек-человек.
От Вас требуются знания шахматных правил (желательно опыт реальной игры), знания css, html, js, jquery, плюс php (обязательно фреймворк kohana) на котором будет написан сам движок,
управляющий партиями, а также готовность поддерживать проект на протяжении длительного времени и оперативно устранять все ошибки.
Весь пересчет ходов в партии должен проверяться на бекенде (php kohana) посредством аякс запросов. Чтобы человек не мог хаккерскими методами по средством js
(будь то консоль F12 или любой другой способ) изменить расположение фигур на доске в обход нашего алгоритма. То есть от Вас требуются навыки защиты веб приложений.
Проект должен быть реазизован на php frameork kohana 3.3, nodejs (socket сервер), js, jquery, css, html
Флеш, другие языки программирования (c#, java, python, perl, ruby, ASP.NET, etc) и другие джаваскрипт библиотеки использовать НЕ разрешается.
Страница самой игры на сайте:
/play
Урл, передаваемый в iframe с нашего сервера на Ваш:
robot.<yourserver>.com/api?username=10000000 27&hash=a7107d1e8baa9dba151b7ebfa965fec4
API роут, отдающий от нашего сервера Вашему рейтинг Эло (пересчитывается на нашей стороне):
/page/rating_7128937192?user=1000000025&user_hash= 5caffbb3d0a381f0e38020179404bc1a&api_key=ckvnw4rbt 73iynci2uny7
API роут, на который нужно отсылать запрос по завершению партии (в ответ приходит пересчитанный рейтинг Эло):
/page/complete_7889937103?user1=1000000025&user1_h ash=5caffbb3d0a381f0e38020179404bc1a&user2=1000000 026&user2_hash=d5853d613298023918a5bb5b6d441fe7&ap i_key=ckvnw4rbt73iynci2uny7&result=1&time=1234&mov es=(1)b3e5(2)Bb2d6(3)e3Nf6(4)h3Be7(5)Be2Nc6
api_key и соль для md5 хеша юзернеймов нужно ОБЯЗАТЕЛЬНО вынести в конфиги.
Дизайн доски и фигурок – во вложении.
ВАЖНО! Условием сдачи проекта и закрытия проекта является успешно пройденное независимое тестирование (фирма-тестировщий вибирается по нашему смотрению, таких фирм может быть несколько).
В случае обнаружения ошибок ошибки исправляются до их полного устраниния, после этого Вы заливаете код на наш VDS, настраиваете там nodejs и сокет сервер,
и лишь после этого мы принимаем работу и зарезервированные деньги списываются на Ваш счет.