|
|
|
| Доброе время суток.
Подскажите как реализован механизм подсчета ресурсов в таких играх как Travian и ВП(Войны племен).
То есть мне интересно к происходит вычисление ресурсов когда пользователь on-line, off-line.
Если можно то на каком ни будь легком примере… | |
|
|
|
|
|
|
|
для: Crayzers
(23.01.2009 в 19:49)
| | >То есть мне интересно к происходит вычисление ресурсов когда пользователь on-line, off-line.
А откуда мнение что вычисления различаются при онлайне и оффлайне? | |
|
|
|
|
|
|
|
для: Гость
(23.01.2009 в 20:07)
| | >>То есть мне интересно к происходит вычисление ресурсов когда пользователь on-line, off-line.
>
>А откуда мнение что вычисления различаются при онлайне и оффлайне?
Возможно они и одинаковые но как эта реализуется на php...
Я не могу понять логики как это можно рганизовать... | |
|
|
|
|
|
|
|
для: Crayzers
(23.01.2009 в 20:26)
| | Смотри, в час мы получаем допустим 20 древесины. В начале часа у нас ее скажем 0, потом мы заходим и видим что у нас ее уже 9. Делается имхо так:
Есть формула дл расчета кол-ва добываемого реса, что-то типа (час/кол-во в час)*прошедшее время. Есть временная отметка когда последний раз этот расчет происходил. При необходимости имея эти данные мы можем посчитать текущее кол-во ресурсов и обновить значения. Такие расчеты наверника делаются перед нападениями, обновлениями страниц, доставке ресурсов через рынок и прочих операциях где они могут быть затронуты. Только в формуле надо учесть еще время начала отсчета, иначе кол-во ресурсов окажется немного неверным, при постоянных обращениях. | |
|
|
|
|
|
|
|
для: Гость
(23.01.2009 в 20:41)
| | >Только в формуле надо учесть еще время начала отсчета, иначе кол-во ресурсов окажется немного неверным, при постоянных обращениях.
Тоесть?
Что то мне кажется это легче чем я себе это предстовлял)))
Тогда следующий вопрос как по логике реализуется нападение то есть:
Отправил я войска на кого-то нападать, а сам закрыл браузер и ушол….
Нападение должно произойти так скажем офлайн как данная ситуация реализуется | |
|
|
|
|
|
|
|
для: Crayzers
(23.01.2009 в 20:46)
| | Ну смотри например, если мы делаем просто по той формуле. Возьмем два реса в час. Я захожу на 40-вой минуте, игра смотрит - ога, время настало, дает нам один рес, и записывает последнее время посещения как 40-вую минуту. Я захожу в начале следущего часа - а мне этот еще один рес так и не дали, ведь я получал их в 40-к минут, а полчаса для второго реса еще не прошло. тоесть надо делить час на промежутки (в данном случае по 30-ть минут) и давать ресы за промежутки. Тоесть при втором заходе проверялась бы не время предыдущего получения реурсов, а промежутки перед получением ресов, я бы даже написал формулу, да что-то голова не варит, то ли после абсента, то ли из-за того что 4-ре утра уж.
Нападение - я так понимаю каждое нападение записывается в таблицу, по времени прихода. И каждую секунду кроном запускается скрипт который разбирает все эти нападения. То же самое событие для рынков, постройки зданий. Правда обработка я думаю пишется на си, так как эт очень высоконагрузочое мероприятие для сервера и базы) | |
|
|
|
|
|
|
|
для: Гость
(23.01.2009 в 22:56)
| | а альтернативы никакой нету кроме крона? | |
|
|
|
|
|
|
|
для: Crayzers
(24.01.2009 в 00:01)
| | Думаю нет, это самое простое и естественное решение такой задачи) | |
|
|
|
|
|
|
|
для: Гость
(24.01.2009 в 07:59)
| | каждую секунду кроном что-то запускать - естественное решение?! | |
|
|
|
|
|
|
|
для: Trianon
(24.01.2009 в 09:59)
| | Ну про ресурсы, раз в полчаса согласен надо. А вот раз в секунду действительно мягко говоря нерационально.
До использования крона в собственной практике, я не дожил, но в моём понимании он нужен тогда когда результат какого-то действия будет актуален некоторое время и сохранён в кеше. | |
|
|
|
|
|
|
|
для: Valick
(24.01.2009 в 10:23)
| | Пытался разабраться с движком Ogame но что-то безрезультатно там все сделанно без крона за исключением статистики но она те так важна... Флот отпровляется и производит манипуляции даже когда игрок офлайн | |
|
|
|
|
|
|
|
для: Crayzers
(24.01.2009 в 17:51)
| | там все сделанно без крона
как вы это определили, если не секрет?
Флот отпровляется и производит манипуляции даже когда игрок офлайн
а причём тут ресурсы? и кто вам сказал что тот движок оптимально спроектирован?
Крон - если для всех игроков единое игровое время (по идее так и должно быть) на мой взгляд оптимален для раздачи слонов ресурсов.
А вот всяко разно боевые действия это уже другой вопрос. Тут нужно гораздо больше информации "что да как" | |
|
|
|
|
|
|
|
для: Valick
(24.01.2009 в 18:09)
| | >там все сделанно без крона
>как вы это определили, если не секрет?
>Флот отпровляется и производит манипуляции даже когда игрок офлайн
>а причём тут ресурсы? и кто вам сказал что тот движок оптимально спроектирован?
>Крон - если для всех игроков единое игровое время (по идее так и должно быть) на мой взгляд оптимален для раздачи слонов ресурсов.
>А вот всяко разно боевые действия это уже другой вопрос. Тут нужно гораздо больше информации "что да как"
А посты темы прочитайте я помимо ресурсов ниже написал еще 1 вопрос дабы не создовать новой темы....!!!!
А то что как я определил есть крон или нет....!!!
Устоновил игру в локальную сеть пользователи игруют и те файлы которые нужно запускать по крону я их не трогаю и не запускаю и все замечательно работает.... | |
|
|
|
|
|
|
|
для: Trianon
(24.01.2009 в 09:59)
| | Для травиана - вполне. Отчеты о нападениях появляются в ту же секунду, причем не только у игроков которые "атакавали/защищались", а и у просто тех что состоят в тех же альянсах. Кроме того статистика игрока изменяется сразу же, а она доступна вообще всем пользователям. Счас спецально проверил - статистика изменилась у игрока мнгновенно, хотя я к нему никакого отношения не имел.
Или у вас есть более "естественное" решение данной задачи? | |
|
|
|
|
|
|
|
для: Гость
(25.01.2009 в 08:27)
| | >Для травиана - вполне. Отчеты о нападениях появляются в ту же секунду, причем не только у игроков которые "атакавали/защищались", а и у просто тех что состоят в тех же альянсах. Кроме того статистика игрока изменяется сразу же, а она доступна вообще всем пользователям. Счас спецально проверил - статистика изменилась у игрока мнгновенно, хотя я к нему никакого отношения не имел.
Это никак не означает, что насервере стоит крон, запускающий что-то раз в секунду.
>Или у вас есть более "естественное" решение данной задачи?
Задачу опишите поконкретней. Может и подскажу. | |
|
|
|
|
|
|
|
для: Trianon
(25.01.2009 в 11:15)
| | >Это никак не означает, что насервере стоит крон, запускающий что-то раз в секунду.
Да, есть вариант что при обращении пользователя к странице обновляется вся возможная информация. Такой вариант был бы возможен если бы sic! акстивных пользователей не было более 10к на сервер. А количество нападений не доходило до 50-100к в сутки. | |
|
|
|
|
|
|
|
для: Гость
(25.01.2009 в 11:26)
| | >Да, есть вариант что при обращении пользователя к странице обновляется вся возможная информация.
Вероятно, не обновляется, а вычисляется. И не вся, а относящаяся только к этому пользователю.
>Такой вариант был бы возможен если бы sic! акстивных пользователей не было более 10к на сервер. А количество нападений не доходило до 50-100к в сутки.
Тем более. Разматывать еще и односекундный крон ему просто напросто некогда. | |
|
|
|
|
|
|
|
для: Trianon
(25.01.2009 в 11:54)
| | >Вероятно, не обновляется, а вычисляется. И не вся, а относящаяся только к этому пользователю.
Вероятно вы не читаете мои сообщения, в часности от (25.01.2009 в 08:27).
>Тем более. Разматывать еще и односекундный крон ему просто напросто некогда.
Что мешает поставить вторую машину? В подобных проектах с вероятностью в сто процентов используется распределенная среда, разве нет? | |
|
|
|
|
|
|
|
для: Crayzers
(23.01.2009 в 19:49)
| | вычисление происходит когда кто-то обращается к срипту, т.е. только при on-line
есть начальная точка - активация учетной записи. есть формула рассчета ресурсов.
в базе данных хранятся нужные коэфициенты. т.е. построил шахту - коэфициент увеличили. при обращение к скрипту происходит рассчет по формуле с использованием коэфициентов для данной учетной записи. | |
|
|
|
|
|
|
|
для: AlexSol
(24.01.2009 в 20:06)
| | С ресурсами мне все понятно но как с атаками поступать? | |
|
|
|