Вопрос по онлайн играм, добыча ресурсов, как это утроенно?

интернет программирование экономика данные Игры

Пишу подобие онлайн игры клиент работает через браузер но с сервером соединен через сокет вообщем подобие FLASH ну это не важно, вообщем есть сервер это именно приложение не сайт а именно программа.
В игре должны быть некоторые ресурсы, которые должны даваться игроку по истечению времени.
например: у меня построены 2 фермы, от них я получаю 60 еды в час 1 минута равна 1 еде от двух ферм
ну еда должна производиться каждую секунду аля секунда клацнула вот у меня 1 еды еще одна уже 2 еды и.т.д
если у меня одна ферма то я получаю по 1 еде в две секунды. и.т.д (можно сделать чтоб было по 0.5 еды в секунду)

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

з.ы: клиент вообще не должен в этом участвовать он может быть в Offline.


есть мысль: реализовать так: хранить в базе последнее время обновления и тогдашнее количество ресурсов, и потом по надобности(требованию клиента) перещитывать их и записывать в базу обновленный вариант.

может у вас есть более интересные варианты? которые позволят снизить нагрузку?
и еще как бы правильно хранить это все в базе? сейчас есть только таблица пользователей аля ID,Ligon,Pass,Email.
Спасибо.

система:
Клиент: SilverLight 3.0 (C#)
Сервер: .Net 3.5 (С#) + MySql
Связь с базой ADO через DataAdapter а по сети все через Sockets


Примечание:
katzyn
спасибо.
на щет синхронизации клиент сервер тут вопросов нет я знаю как осталось ток код переписать из головы))

а по поводу подсчета у нас с вами наверное самый правильный вариант.

еще заметил что если чего-то не можешь придумать попробуй написать по этому делу вопрос, пока пишешь сразу появляются варианты решения в голове) так что подождем пол часика вдруг кто-то выдвинет парадоксальную теорию)))
Ответы:
Как вариант — подсчитывай, сколько еды добавилось только тогда, когда это нужно для какого-либо другого действия и тогда, когда изменился прирост (ферма, допустим появилась). Т. е. у тебя где-то хранится сколько еды было, в какой момент было и какой текущий прирост. Когда надо, умножаем разность текущего времени и сохранённого времени на прирост и добавляем к сохранённому количеству еды, а также обновляем отметку времени.
А, при чтении вопроса случайно пропустил абзац, ты так и думаешь делать.
Гораздо сложнее будет при обмене данными с клиентом. Если, действительно, интервал обновления чего-либо 1 секунда или порядка того, то придётся изменения параметров считать отдельно на сервере и отдельно на клиенте и периодически их сверять, чтобы нельзя было смошенничать, скопировав и подправив клиент и чтобы подстраховаться от прочих маловероятных, но возможных ошибок.


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.