Добрый день.
Делаю браузерную онлайн игру : php + MySql + js
Хочу что бы в игре были некоторые события которыя совершаются по времени.
Например:
Персонаж отравлен на 8 секунд.
На определенной странице должна отображаться информация о том
сколько секунд осталось до исчезновения эффекта
и причем хочу что бы тикал таймер.
На стороне клиента это одно,
но нужно что бы учет времени и отработки шел на строне сервера.
По истечении времени страница перегружается.
То есть:
Персонажа отравил на 8 секунд
при заходе на страницу показывается запись - персонаж отравлен, рядом тикает таймер 7 6 5 ... и.т.д
когда дойдет до нуля - на странице исчезнет запись об этом эффекте.
Если игрок не заходил на страницу то все равно через 8 секунд эффект пропадет
Отсчет времени должен быть первичный на сервере.
Как можно такое реализовать?
а если некому отправлять запросы на сервер?
Если никто не отправляет запросы в эту секунду а именно в эту секунду нужно обработать данные на сервере?
вот поэтому учите потоки
учите потоки.
а если некому отправлять запросы на сервер?
Если никто не отправляет запросы в эту секунду а именно в эту секунду нужно обработать данные на сервере?
потоки тут нахуй не нужны. На стороне клиента на javascript вешаешь обработчик таймера, который обновляет счетчик секунд, по достижении нуля отправляешь запрос на сервер. Для защиты от читеров на стороне сервера хранишь структурку по каждому клиенту, в которую записываешь время когда персонаж разотравится, если от клиента пришел запрос раньше чем записано, отправляешь ему еще раз страницу с ожидающим таймером, но уже передав не 8 секунд, а сколько там осталось...
по поводу потоков - к примеру, будет 1000 человек онлайн. и на каждый чих заводить поток? серверу будет пизда
вот поэтому учите потоки
Простой пример:
1 У игрока стоит автоматом атака в бою.
Атака занимает 8 секунд (по истечении 8 секунд он автоматически атакует)
Игрок вывалился из браузера во время боя.
Как в этом случае обрабатывать его автоматическую атаку?
2 Игрок отравлен на 9 секунд. Он вывалился из браузера во время боя.
При этом он автоматом атакует в бою. И при этом его отравление должно
действовать по расписанию, так как это имеет значение в бою для других игроков.
Как организовать адекватно начало и конец воздейсвия яда по расписанию?
3 Игрок начал кастовать замедление на другого игрока. Это заклинание
требует от него 3 часа каста, заклинание удаленного действия. Начал кастовать и вышел из браузера.
Но каст должен продолжаться.
Когда оно будет завершено (через 3 часа, если конечно его не прервут) то тот,
на кого оно сделано, должен подвергнуться его воздействию:
его скорость будет уменьшена,
у кастующего же каждый ход будет отниматься определенное количество маны.
Добрый день.
Делаю браузерную онлайн игру : php + MySql + js