Я занимаюсь разработкой простой браузерной игры для старых школ, в которой есть города и их производства.
Допустим, что для уровня 1 городская добыча камня равна 1 в минуту.
Для 5-го уровня производство камня в городе составляет 60 в минуту.
В настоящее время проблема в том, что у меня есть функция setInterval на сервере с интервалом 0, который циклически просматривает дБ, проверяет города и их производство и увеличивает (?) Их.
Так как мне правильно увеличивать? Поскольку во всех городах разная производительность в минуту, каков правильный подход? Нужно ли хранить время последнего приращения каждого города в дБ, затем проверить, прошло ли достаточно времени, а затем прирост?
Кроме того, поскольку я в режиме реального времени обновляю данные из базы данных в клиент, я хотел бы видеть увеличение 1 на 1, а не +60 после 1-минутного прохода.
Что я пробовал до сих пор:
function resourceUpdater(){
Towns.find({}).forEach( town => {
if(town.spot1.buildingName =="factory" && town.spot1.level==1){
Towns.update( {_id:town._id},{$inc:{"resources.stone":1}})
}
})
}