[gamedev] восстановление энергии

silent9

Новичок
[gamedev] восстановление энергии

По какому алгоритму восстанавливается энергия (жизни и т.д) в игре?
есть таблица с игроками
id user energy
1 user1 99
2 user2 57
3 user3 100

нужно каждый раз (например каждую секунду) дергать таблицу и апдейтить каждую запись или есть другой вариант?
 

Splurov

Новичок
зачем каждую?
Код:
UPDATE users SET energy = energy + 1 WHERE energy < max_energy
-~{}~ 03.09.10 15:26:

А вообще зачем так часто базу трогать? Обновлять здоровье можно и в сессии, а раз в минуту в базе, например.
 
silent9
Верю в то, что обновлять каждую секунду всех не надо. И даже не надо обновлять каждую секунду тех, у кого energy < max_energy. Обновлять надо только тогда, когда эти данные запрашиваются по конкретному пользователю.
 

silent9

Новичок
Автор оригинала: Вася Патриков
silent9
Верю в то, что обновлять каждую секунду всех не надо. И даже не надо обновлять каждую секунду тех, у кого energy < max_energy. Обновлять надо только тогда, когда эти данные запрашиваются по конкретному пользователю.
а если пользователь вышел или бездействует, то энергия так и останется не восстановленной
 

dimagolov

Новичок
самое простое - хранить время установки какого-то параметра, который автомиатически изменяется со временем. после этого можно:
1. при обращении к записи в начале делать пересчет с учетом времени, а потом действие
2. с определенной регулятностью обновлять все подобные записи по крону, но п.1 все равно нужен, просто старых хвостов меньше будет.

п.с. если достигаем максимума, то время можно ставить в NULL и тогда запись не будет попадать в список тех, которые нужно обновлять.
 

HraKK

Мудак
Команда форума
2. с определенной регулятностью обновлять все подобные записи по крону, но п.1 все равно нужен, просто старых хвостов меньше будет.

зачем?
 

dimagolov

Новичок
HraKK, это на любителя, я же написал "просто старых хвостов меньше будет".
 

Вурдалак

Продвинутый новичок
Просто хранить время последнего повреждения и кол-во энергии после этого повреждения.
PHP:
$currentEnergy = min($timeDiff * $energyPerSecond, 100);
-~{}~ 03.09.10 21:42:

В принципе, то же сказал dimagolov.

-~{}~ 04.09.10 16:06:

Кстати, что-то меня никто не поправил.
PHP:
$currentEnergy = min($energy + $timeDiff * $energyPerSecond, $maxEnergy);
 
Сверху