michael443959 | Дата: Суббота, 07 Января 2012, 12:48 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Решил написать браузерную стратегию, но появились вопросы по реализации основных частей. Собственно необходимо как-то прибавлять ресурсы всем пользователям, даже когда они не в сети. Я предполагал сохранять время последнего прибавления, и когда пользователю необходимо узнать своё кол-во ресурсов, то выполняется расчёт, сколько ресурсов накапало и сколько есть сейчас. Но этот алгоритм не поможет, когда на прирост ресурсов влияют другие факторы. Например, я начал строить ферму. Время конца строительства фермы записывается в бд и когда пользователю необходимо узнать кол-во ресурсов спустя некоторое время после строительства, происходит расчёт ресурсов до строительства и после него. Но мне этот алгоритм кажется не совсем рациональным. Посоветуйте, как лучше это сделать.
P.S. Silverlight + Tcp сервер.
|
|
| |
lokinam | Дата: Суббота, 07 Января 2012, 12:51 | Сообщение # 2 |
постоянный участник
Сейчас нет на сайте
| Нафига писать скачай исходник измени.
|
|
| |
DDTAA | Дата: Суббота, 07 Января 2012, 16:18 | Сообщение # 3 |
заслуженный участник
Сейчас нет на сайте
| michael443959, смотри, какие варианты приходят в голову: 1) Действительно, как ты и описал, создать формулы и по ним просчитывать при каждом входе юзера в игру, запоминая время последнего входа. Потом, зная время постройки "фермы", ты можешь добавляющийся прирост от неё в общей формуле, либо раскладывать как сумму прироста без неё с момента выхода юзера+прирост от фермы с момента её постройки. То есть, если юзер вышел в момент времени 9990, ферма достроилась в 10 000, а юзер снова зашёл в 10 002, то ты можешь прирост за это время посчитать как прирост ресов за время (10002-9990)+прирост от "фермы" за время(10002-10000). 2) Первый вариант вроде бы не сложен, это как с формулами процентов в банке, только звучит всё страшно) Но если надо извратиться, имея постоянно в онлайне сервер, можно прибавлять всё и всем, хотя это гораздо менее рационально. Зато есть всякие Cron'ы и париться с формулами не придётся. Как вариант, раз в н минут проверять всех(например, с помощью того же Cron'а или в сервер функцию встроить) на завершение строительства у всех и перерасчитывать прирост. Хотя это всё гораздо геморнее, чем первый вариант, гораздо геморнее.
По оффтопу:
Да, я новичок, поэтому вопросы у меня иногда глупые...... Да, у меня действительно такой ник....... ...А я не знаю, почему по профилю мне 28 лет и я Адольф:-)...
|
|
| |
michael443959 | Дата: Суббота, 07 Января 2012, 17:27 | Сообщение # 4 |
был не раз
Сейчас нет на сайте
| DDTAA, Большое спасибо за совет. Буду первый вариант скорее-всего использовать, ибо проход по всем пользователям- это слишком.
|
|
| |