SPAM ANTIFILTERING for casino1x2

advertisement
Описание 3D игры "Пенальти".
Игра представляет собою серию из 10 пенальти между 2-мя юзерами, один из
которых играет за пенальтиста, второй за вратаря. Роли меняются после каждого
удара.
При загрузке модуля появляются меню "играть с реальным человеком", "играть с
компьютером", "регистрация", "правила", "статистика", "рейтинг".
Начать игру можно и без регистрации.
Если игру начинает зарегистрированный пользователь, то после нажатия на кнопку
"играть с .." появляется список игроков из которого он выбирает игрока на роль
пенальтиста и игрока на роль вратаря.
На сервер отправляется запрос с выбранными игроками, в ответе приходят данные
об этих игроках (имена, цвет футболки).
После этого, если игра идет против реального человека, появляется надпись
"ожидание соперника" и таймер обратного отсчета 20 сек. на сервер каждые 5 сек.
отправляются запросы, пока не появится соперник.
Cинхронизируется начало отсчета таймера в обоих модулях.
После того как в ответе от сервера получено имя соперника, надпись "ожидание
соперника" меняется на надпись "ваш соперник <имя соперника>" и игра
начинается.
Если выбрана игра против компьютера, посылается один запрос на сервер и игра
начинается.
Появляется поле с пенальтистом и вратарем, стадион со зрителями, мяч стоит на
11-метровой отметке. Таймер обратного отсчета показывает 10 сек.
Если пользователь в роли пенальтиста, у него есть возможность задать вектор
удара по воротам (направление и сила удара). Вектор задается в 2 этапа. Сначала
задается направление удара в 3-х координатах стрелочкой от мяча к воротам. Сила
удара задается отдельно.
Если пользователь в роли вратаря, у него есть возможность выбрать направление
движения вратаря (координаты точки в воротах, к которой будет прыгать или
перемещаться вратарь).
После выбора вектора удара или направления движения вратаря, посылается запрос
на сервер с данными выбранного вектора или точки.
Если соперник еще не выставил свой вектор, то каждые 10 сек. сервер
опрашивается до тех пор, пока соперник не будет готов.
В это время появляется надпись "ожидается ответ соперника".
Если до окончания таймера юзер не успел установить вектор удара или позицию
вратаря, то на сервер отправляется текущее положение в момент когда таймер
доходит до 0.
Если соперник покинул игру появляется надпись "вы победили так как соперник
покинул игру" и кнопка "вернуться в основное меню".
В ответе соперника приходит результат удара (гол или нет), вектор или координаты
точки соперника, а также информация о синхронизации таймера (если не
используются сокеты).
Так же в ответе есть данные, закончена или нет игра. Если получен флаг, что игра
закончена, появляется надпись "игра закончена".
На спине пенальтиста и на груди вратаря есть их имена (например, А.Петров). Если
имена будут слишком плохо видны, можно не показывать их на футболке, а
показать сверху модуля.
Цвета формы вратаря и пенальтиста согласно цвету, полученному от сервера.
После этого показывается анимация -пенальтист разбегается, бьет по воротам
согласно выбранному вектору, вратарь прыгает согласно полученному от
соперника направлению, ловит мяч или пропускает согласно решению сервера.
Трибуны реагируют в соответствии с выбранными ролями.
Если пользователь играет за вратаря, - зрители на трибунах встают и прыгают если
мяч пойман. У зрителей появляются флаги и шарфы раскрашенные в цвет формы
вратаря.
Если пользователь играет за пенальтиста,- зрители на трибунах встают и прыгают
если забит гол.
Все 3D модели, шейдеры и анимации будут предоставлены.
В модуле есть кнопка (раздел меню) "регистрация" нажатие на которую открывает
форму регистрации (емайл + логин + пароль) или форму для авторизации "вход"
(логин + пароль) а также линк "напомнить пароль" нажатие на который открывает
форму ввода емайла после отправляется запрос на сервер и сервер отправляет
письмо с паролем юзеру на емайл.
В модуле есть кнопка (раздел меню) "играть с реальным человеком" нажатие на
которую начинает игру с реальным пользователем.
В модуле есть кнопка (раздел меню) "играть с компьютером" нажатие на которую
начинает игру с компьютером.
В модуле есть кнопка (раздел меню) "рейтинг" нажатие на которую открывает
список лучших пользователей по итогам дня (недели), а также положение текущего
игрока в рейтинге и его место (если не в десятке лучших).
В модуле есть кнопка (раздел меню) "правила" нажатие на которую открывает
раздел с описанием игры и примеры выставления вектора удара пенальтиста и
позиции вратаря.
В модуле есть звуки и кнопка отключения/включения звука.
Модуль делается в формате UNITY и в формате для мобильных приложений .ipa,
.apk
Ширина модуля - 650 пикселей.
Техническое задание разработчику.
При загрузке модуля вызывается функция OnUnityStarted() и считываются
следующие параметры:
domain = "http://inetball.ru";
where = "facebook";
userid = "135";
userName = "evgen";
domain - запоминается в переменной и подставляется во все запросы на сервер
where- запоминается в переменной и подставляется в запрос на сервер
userid и userName - необязательные параметры.
Если эти параметры переданы, при загрузке модуля надо скрыть в меню раздел
"регистрация" а также добавить сверху надпись "Здравствуйте, stepanchik"
(Stepanchik – пример имени пользователя)
Параметр userid сохранить в переменной и отправлять в запросах на сервер.
При загрузке модуля вызывается файл
<domain>/penalty_load.asp?userID=<userID>&where=<where>
<userID>- необязательный параметр. передается только если присутствует в строке
вызова модуля
Ответ сервера:
<flashID>123</flashID>
<game>
<flashID>123</flashID>
<userID>1</userID>
<userName>stepamchik</userName>
<isSoundOn>1/0</isSoundOn>
</game>
flashID запоминается в переменную и передается на сервер в дальнейших запросах.
При нажатии на кнопку "регистрация" открывается форма с 3-мя полями
1.Имя пользователя
2.Емайл
3.Пароль
Данные полученные от юзера в форме отправляются на сервер HTTP запросом на
адрес <domain>/penalty_registration.asp?flashID=<flashID> в формате POST со
следующими параметрамиusername
pass
email
gameID (необязательный параметр, только если уже получен в модуле, hidden юзер этого поля не видит)
Этот файл возвращает хмл
<User>
<userID>123</userID>
<userName>stepanchik</userName>
<answerText></answerText>
</user>
В случае, если регистрация прошла успешно (userID не 0 и answerText пустой),
кнопка (раздел меню) "логин" исчезает и появляется надпись "Здравствуйте,
stepanchik"
userID запоминается в переменной и отправляется с дальнейшими запросами на
сервер.
В случае, если регистрация не прошла (userID=0 и answerText не пустой),
появляется алерт с текстом из answerText
Если пользователь нажимает ссылку «Забыли пароль?» открывается форма, в
которой юзер вводит свой емайл. На сервер отправляется HTTP запрос на адрес
<domain>/penalty_forgetPass.asp?email=<email>
Ответ сервера показывается юзеру:
<answerText>На ваш емайл отправлено письмо с регистрационными
данными<answerText>
При нажатии на кнопку "вход" открывается форма с 2-мя полями
1.Имя пользователя
2.Пароль
Данные полученные от юзера в форме отправляются на сервер HTTP запросом на
адрес <domain>/penalty_login.asp?flashID=<flashID> в формате POST со
следующими параметрамиusername
pass
gameID (необязательный параметр, только если уже получен в модуле, hidden юзер этого поля не видит)
Этот файл возвращает хмл
<User>
<userID>123</userID>
<userName>stepanchik</userName>
<answerText></answerText>
</user>
В случае, если вход прошел успешно (userID не 0 и answerText пустой), кнопка
(раздел меню) "регистрация" исчезает и появляется надпись "Здравствуйте,
stepanchik"
userID запоминается в переменной и отправляется с дальнейшими запросами на
сервер.
В случае, если вход не успешен (userID=0 и answerText не пустой), появляется
алерт с текстом из answerText
В момент, когда юзер нажимает на кнопку "играть с реальным человеком",
инициализируется переменная realPlayer=1
В момент, когда юзер нажимает на кнопку "играть с компьютером",
инициализируется переменная realPlayer=0
После этого на сервер отправляется HTTP запрос на адрес
<domain>/penalty_choosePlayer.asp?flashID=<flashID>
От сервера приходит следующий ответ:
<Keepers>
<player>
<plrID>123<plrID>
<plrName>А.Петров</plrName>
<plrType>вратарь</plrType>
</player>
<player>
<plrID>123<plrID>
<plrName>А.Сидоров</plrName>
<plrType>вратарь</plrType>
</player>
</keepers>
<penaltists>
<player>
<plrID>123<plrID>
<plrName>Б.Иванов</plrName>
<plrType>нападающий</plrType>
</player>
<player>
<plrID>123<plrID>
<plrName>Б.Андреев</plrName>
<plrType>полузащитник</plrType>
</player>
</penaltists>
Если в списке вратарей и пенальтистов по 1 игроку, то эти игроки запоминаются в
переменные keeperID и penaltistID
Если в списке вратарей или пенальтистов более 1 записи, то открывается
страиничка выбора пенальтиста и вратаря.
Юзер выбирает из списка 1 пенальтиста и 1 вратаря эти игроки запоминаются в
переменные keeperID и penaltistID.
Модуль переходит на страничку игры и на сервер отравляется HTTP запрос на
адрес
<domain>/penalty_startGame.asp?flashID=<flashID>&realPlayer=<realPlayer>&keeper
=<keeperID>&penaltist=<penaltistID>
Ответ от сервера <game>
<gameID>123</gameID>
<isRivalFound>1</isRivalFound>
<role>1</role>
<username>test1</userName>
<rivalName>test2</rivalName>
<timerDelay>5</timerDelay>
<keeperName>А.Петров</keeperName>
<playerName>Б.Иванов</playerName>
<rivalkeeperName>А.Петров</ rivalkeeperName >
<rivalpenaltistName >Б.Иванов</ rivalpenaltistName >
<cmndColor>#FFFFF</cmndColor >
<rvlColor>#00000</rvlColor >
</game>
В случае игры с компьютером генерация удара пенальтиста и выбор зоны защиты
ворот происходит внутри Юнити-модуля. В конце игры на сервер отправляется
запрос в формате POST<domain>/penalty_finishGame.asp?flashID=<flashID>&gameID=<gameID>
&keeperSaves=<keeperSaves>&penaltistGoals=< penaltistGoals >&result=< result >
Где keeperSaves- количество мячей взятых вратарем (не учитывает мячи “мимо
ворот”), зашифрованное в формате md5;
penaltistGoals - количество мячей забитых пенальтистом, зашифрованное в
формате md5;
result- результат серии (1- выиграна;2-проиграна;0-ничья), зашифрованное в
формате md5;
Ответ сервера<Answer>
<answerText>ТЕКСТ</answerText>
</ Answer >
Показать данный текст в модуле.
Если isRivalFound=0 - появляется надпись "ожидаем появления соперника"
Каждые 10 сек. модуль посылает запрос HTTP запрос на сервер
<domain>/penalty_startGame.asp?flashID=<flashID>&realPlayer=<realPlayer>&keeper
=<keeperID>&penaltist=<penaltistID>
до тех пор, пока не получит isRivalFound=1
После 2-го,4-го и т.д запроса (каждые 20 сек.) появляются кнопки "продолжить
ожидание" и "начать игру с компьютером".
Если юзер нажимает "начать игру с компьютером" realPlayer меняется на 0. И
посылается тот же HTTP запрос на сервер.
Если юзер нажал "продолжить ожидание",- запросы на сервер продолжаются
каждые 10 сек. после каждого 2-го,4-го и т.д запроса появляются кнопки
"продолжить ожидание" и "начать игру с компьютером".
Если isRivalFound=1 отсчитывается timerDelay секунд и появляется таймер
обратного отсчета и возможность выбрать вектор для пенальтиста (если role=1) или
точку броска для вратаря (если role=0)
Если юзер выбрал вектор или таймер дошел до 0, на сервер отправляется HTTP
запрос на адрес
<domain>/penalty_continueGame.asp?flashID=<flashID>&realPlayer=<realPlayer>&ga
meID=<gameID>&tour=<tour>&role=<role>&vectorPlayer=<vectorPlayer>&gateSecto
rReal=<gateSectorReal>&gateSector=<gateSector>
Где tour - от 1 до 10 (какой по счету идет удар из 10 возможных)
gateSector - сектор ворот, выбранный для защиты.
gateSectorReal - сектор ворот, в который попадет мяч при ударе пенальтиста
Ответ от сервера <game>
<gameID>123</gameID>
<tour>1</tour>
<role>1</role>
<status>1</status>
<timerDelay>5</timerDelay>
<keeperName>А.Петров</keeperName>
<playerName>Б.Иванов</playerName>
<keeperColor>#FFFFF</keeperColor>
<playerColor>#00000</playerColor>
<vectorPlayer>x,y,z,v</vectorPlayer>
<vectorKeeper>x,y</vectorKeeper>
<isGoal>0</isGoal>
<scores>100</scores>
<rezult>3:1</rezult>
<answerText>Text</answerText>
</game>
Если в ответе status=0 запрос повторяется каждые 5 сек. до получения status=1
(соперник готов)
Если получено status=-1 появляется надпись "вы победили так как соперник
покинул игру" и кнопки "продолжить играть против компьютера" и "выйти из
игры"
Если получено status=-2 появляется надпись "игра окончена" и кнопка "выйти из
игры"
Если юзер выбрал "продолжить играть против компьютера" на сервер отправляется
HTTP запрос на адрес
<domain>/penalty_continueGame.asp?flashID=<flashID>&gameID=<gameID>&tour=<
tour>&role=<role>&vectorPlayer=<vectorPlayer>&changeToAuto=1
Если answerText не пустое, показывается алерт с этим текстом.
Если status=1 (ответ от соперника получен) показывается соответствущая
анимация. Цвета шейдеров формы вратаря и игрока расскрашиваются в
соответствующий цвет. Цвета шейдеров болельщиков расскрашиваются в
соответствующий цвет (цвет вратаря если мяч отбит или цвет пенальтиста если мяч
пропущен).
Показаны очки, набранные юзером в игре (scores). Показано какой идет тур (tour).
Показан счет (rezult).
Кнопка (раздел меню) "лучший результат" вызывает файл
<domain>/penalty_statistic.asp который возвращает хмл c 2-мя списками,- лучших за
день и лучших за неделю.
<BestDayUsers>
<user>
<place>1</place>
<userName>stepanchik</userName>
<totalTours>20</totalTours>
<keeperTake>3</keeperTake>
<goals>3</goals>
<scores>500</scores>
</user>
<user>
<place>2</place>
<userName>evgen</userName>
<totalTours>20</totalTours>
<keeperTake>3</keeperTake>
<goals>3</goals>
<scores>500</scores>
</user>
</BestDayUsers>
<BestWeekUsers>
<user>
<place>1</place>
<userName>stepanchik</userName>
<totalTours>20</totalTours>
<keeperTake>3</keeperTake>
<goals>3</goals>
<scores>500</scores>
</user>
<user>
<place>2</place>
<userName>evgen</userName>
<totalTours>20</totalTours>
<keeperTake>3</keeperTake>
<goals>3</goals>
<scores>500</scores>
</user>
</BestWeekUsers>
Все тексты для модуля берутся из файла <domain>/penalty_texts.xml
2 часть- игра с реальным соперником
При выборе удара или зоны защиты показать на табло таймер обратного отсчета
установленный на 5 сек.
По окончании таймера запустить звуковой файл.
После выбора удара или зоны защиты на сервер отправляется запрос<domain>/penalty_continueGame.asp?flashID=<flashID>&gameID=<gameID>&tour=<
tour>&vectorPlayer=<vectorPlayer>&gateSector=<gateSector>&contral=<md5>
Ответ от сервера <game>
<status>1</status>
<timerDelay>5</timerDelay>
<vectorPlayer>x,y,z,v</vectorPlayer>
<vectorKeeper>1</vectorKeeper>
<answerText>Text</answerText>
</game>
Если в ответе status=1,- показать анимацию удара и перейти к следующему туру.
Если в ответе status=0 таймер обратного отсчета устанавливается на 20 сек., запрос
повторяется каждые 5 сек. до получения status=1 На табло показывается текст из
answerText
Если получено status=-1 (соперник покинул игру) появляется надпись "вы победили
так как соперник покинул игру" из answerText и кнопка "возврат в меню"
Download