Например будет рулетка, когда она запускается то идет анимация, как сделать что бы у всех юзеров она была одинаковая, например в анимации есть таймер, надо все то синхронизировать между юзерами и сделать постоянное обновление контента в LIVE. WEBSOCKET Вроде для этого, но я в нем вообще не разбираюсь< кто сможет именно по тому что я написал кинуть статейку?
Роман, и даже точного времени не надо, достаточно у каждого вычислить offset от времени сервера через NTP-подобный протокол и вносить поправку на этот offset
Ну, да, похоже что сокет - это единственное решение для вашего случая.
но я в нем вообще не разбираюсь
Так разберитесь :)
Но статейкой в случае с сокетами вы не отделаетесь :) придется немного покурить документацию. В общем, если вы сейчас начнете, то через пару-тройку дней разберетесь.
Роман, уважаемый тезка, вы просто не поняли потребности автора ) Нужна анимация рулетки, которая на всех клиентах будет одинакова, и иметь одинаковые итоги - для этого нужен единый источник истины, т.е. на клиенте вы просто будете рендерить картинку по данным поступающим в реальном времени от сервера, либо можно не через сокеты а через long-polling, но в данном случае лучше таки на сокеты заморочиться.
Роми, уважаемый, все я понял, но вопрос был именно про анимацию:
Например будет рулетка, когда она запускается то идет анимация, как сделать что бы у всех юзеров она была одинаковая,
Так что в рамках вопроса вебсокет не обязателен)
Если же говорить о рулетке как игре, то да, websocket-ы желательны, НО не для синхронизации анимации. Вот как примерно должен выглядеть обмен данными между клиентами и сервером (в случае мулитплеерного варианта игры).
1. загрузка игры (html, css, js, картинок и прочего). Это дело осуществляется по протоколу http/https
2. подключение к комнате/столу. Тут можно и по http/https (long-polling) и по websocket-у. Я бы вбрал одну из библиотек, которая умеет оба варианта в зависимости от возможностей клиента. Например тот же Socket.IO
3. после выше описанных действий сам процесс игры требовал бы только следующий обмен данными:
3.1. Доведение до участников стола о садящихся(подключающихся) за стол игроках и встающих (отключающихся). данный пункт через Socket.IO
3.2. Доведение до участников стола о разрешении делать ставки. данный пункт через Socket.IO
3.3. Доведение до участников стола о сделанных другими участниками ставках. данный пункт через Socket.IO. Так же в данном пункте разово передается информация для синхронизации момента старта рулетки.
3.3. Доведение до участников стола о запуске рулетки (броске шарика). данный пункт через Socket.IO.
Клиенты получая данную информацию запускают анимацию вращения рулетки и шарика. При этом скорость вращения и того и другого а также стартовую позицию шарика можно как получить от сервера, так и от ГПСЧ (вместо всех этих данных передается seed или стартовый индекс для ГПСЧ, а сами данные получаются уже от самой ГПСЧ как псевдослучайная величина). Оба варианта позволят сделать это синхронно, но вариант с ГПСЧ снизит нагрузку на сервер, что позволит серверу обслуживать большее число клиентов на тех же серверных мощностях. Дальнейшие пункты расписываю для варианта с ГПСЧ.
3.4. Доведение до участников стола о завершении приема ставок. данный пункт через Socket.IO.
в данном пункте так же передается seed или стартовое значение индекса для ГПСЧ, на основе которого от ГПСЧ клиенты получают информацию о времени вращения рулетки и шарика до остановки и информацию о конечном положении шарика. Клиенты обладая этой информацией синхронно рисуют анимацию процесса.
Вкратце про ГПСЧ:
- ГПСЧ - генератор псевдослучайных чисел
- При инициализации одним и тем же seed-ом будет выдавать одну и туже последовательность случайных чисел
- Многие реализации при инициализации одним и тем же seed-ом и запуске метода получения случайного числа с одним и тем же аргументов дадут одно и тоже случайное число. Это позволяет передав на разные клиенты одни и те же seed-ы и/или стартовые индексы добиться на клиентах идентичных псевдослучайных значений, управляющих анимацией вращения рулетки и шарика
Вкратце про профит казино:
Выдавая клиентам специально подобранные seed-ы и/или стартовые индексы мы добиваемся выпадения на них нужных результатов спина. То есть, когда ставки сделаны и сервер выдает клиентам информацию о seed-ах и/или стартовых индексах (пункт 3.4), они подобранны сервером таким образом, чтобы результат спина обеспечил в первую очередь выигрыш казино. По факту скажу что в данном варианте крупье всегда мухлюет, но все онлайн казино устроены ровно так же, а степень мухлежа (процент от всех ставок со всех игр, который в конечном итоге станет доходом казино) зависит только от честности тех кто это казино делал.