Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вычисление ресурсов...
 
 автор: Crayzers   (23.01.2009 в 19:49)   письмо автору
 
 

Доброе время суток.

Подскажите как реализован механизм подсчета ресурсов в таких играх как Travian и ВП(Войны племен).

То есть мне интересно к происходит вычисление ресурсов когда пользователь on-line, off-line.

Если можно то на каком ни будь легком примере…

  Ответить  
 
 автор: Гость   (23.01.2009 в 20:07)   письмо автору
 
   для: Crayzers   (23.01.2009 в 19:49)
 

>То есть мне интересно к происходит вычисление ресурсов когда пользователь on-line, off-line.

А откуда мнение что вычисления различаются при онлайне и оффлайне?

  Ответить  
 
 автор: Crayzers   (23.01.2009 в 20:26)   письмо автору
 
   для: Гость   (23.01.2009 в 20:07)
 

>>То есть мне интересно к происходит вычисление ресурсов когда пользователь on-line, off-line.
>
>А откуда мнение что вычисления различаются при онлайне и оффлайне?

Возможно они и одинаковые но как эта реализуется на php...
Я не могу понять логики как это можно рганизовать...

  Ответить  
 
 автор: Гость   (23.01.2009 в 20:41)   письмо автору
 
   для: Crayzers   (23.01.2009 в 20:26)
 

Смотри, в час мы получаем допустим 20 древесины. В начале часа у нас ее скажем 0, потом мы заходим и видим что у нас ее уже 9. Делается имхо так:
Есть формула дл расчета кол-ва добываемого реса, что-то типа (час/кол-во в час)*прошедшее время. Есть временная отметка когда последний раз этот расчет происходил. При необходимости имея эти данные мы можем посчитать текущее кол-во ресурсов и обновить значения. Такие расчеты наверника делаются перед нападениями, обновлениями страниц, доставке ресурсов через рынок и прочих операциях где они могут быть затронуты. Только в формуле надо учесть еще время начала отсчета, иначе кол-во ресурсов окажется немного неверным, при постоянных обращениях.

  Ответить  
 
 автор: Crayzers   (23.01.2009 в 20:46)   письмо автору
 
   для: Гость   (23.01.2009 в 20:41)
 

>Только в формуле надо учесть еще время начала отсчета, иначе кол-во ресурсов окажется немного неверным, при постоянных обращениях.


Тоесть?


Что то мне кажется это легче чем я себе это предстовлял)))

Тогда следующий вопрос как по логике реализуется нападение то есть:
Отправил я войска на кого-то нападать, а сам закрыл браузер и ушол….

Нападение должно произойти так скажем офлайн как данная ситуация реализуется

  Ответить  
 
 автор: Гость   (23.01.2009 в 22:56)   письмо автору
 
   для: Crayzers   (23.01.2009 в 20:46)
 

Ну смотри например, если мы делаем просто по той формуле. Возьмем два реса в час. Я захожу на 40-вой минуте, игра смотрит - ога, время настало, дает нам один рес, и записывает последнее время посещения как 40-вую минуту. Я захожу в начале следущего часа - а мне этот еще один рес так и не дали, ведь я получал их в 40-к минут, а полчаса для второго реса еще не прошло. тоесть надо делить час на промежутки (в данном случае по 30-ть минут) и давать ресы за промежутки. Тоесть при втором заходе проверялась бы не время предыдущего получения реурсов, а промежутки перед получением ресов, я бы даже написал формулу, да что-то голова не варит, то ли после абсента, то ли из-за того что 4-ре утра уж.

Нападение - я так понимаю каждое нападение записывается в таблицу, по времени прихода. И каждую секунду кроном запускается скрипт который разбирает все эти нападения. То же самое событие для рынков, постройки зданий. Правда обработка я думаю пишется на си, так как эт очень высоконагрузочое мероприятие для сервера и базы)

  Ответить  
 
 автор: Crayzers   (24.01.2009 в 00:01)   письмо автору
 
   для: Гость   (23.01.2009 в 22:56)
 

а альтернативы никакой нету кроме крона?

  Ответить  
 
 автор: Гость   (24.01.2009 в 07:59)   письмо автору
 
   для: Crayzers   (24.01.2009 в 00:01)
 

Думаю нет, это самое простое и естественное решение такой задачи)

  Ответить  
 
 автор: Trianon   (24.01.2009 в 09:59)   письмо автору
 
   для: Гость   (24.01.2009 в 07:59)
 

каждую секунду кроном что-то запускать - естественное решение?!

  Ответить  
 
 автор: Valick   (24.01.2009 в 10:23)   письмо автору
 
   для: Trianon   (24.01.2009 в 09:59)
 

Ну про ресурсы, раз в полчаса согласен надо. А вот раз в секунду действительно мягко говоря нерационально.
До использования крона в собственной практике, я не дожил, но в моём понимании он нужен тогда когда результат какого-то действия будет актуален некоторое время и сохранён в кеше.

  Ответить  
 
 автор: Crayzers   (24.01.2009 в 17:51)   письмо автору
 
   для: Valick   (24.01.2009 в 10:23)
 

Пытался разабраться с движком Ogame но что-то безрезультатно там все сделанно без крона за исключением статистики но она те так важна... Флот отпровляется и производит манипуляции даже когда игрок офлайн

  Ответить  
 
 автор: Valick   (24.01.2009 в 18:09)   письмо автору
 
   для: Crayzers   (24.01.2009 в 17:51)
 

там все сделанно без крона
как вы это определили, если не секрет?
Флот отпровляется и производит манипуляции даже когда игрок офлайн
а причём тут ресурсы? и кто вам сказал что тот движок оптимально спроектирован?
Крон - если для всех игроков единое игровое время (по идее так и должно быть) на мой взгляд оптимален для раздачи слонов ресурсов.
А вот всяко разно боевые действия это уже другой вопрос. Тут нужно гораздо больше информации "что да как"

  Ответить  
 
 автор: Crayzers   (24.01.2009 в 18:49)   письмо автору
 
   для: Valick   (24.01.2009 в 18:09)
 

>там все сделанно без крона
>как вы это определили, если не секрет?
>Флот отпровляется и производит манипуляции даже когда игрок офлайн
>а причём тут ресурсы? и кто вам сказал что тот движок оптимально спроектирован?
>Крон - если для всех игроков единое игровое время (по идее так и должно быть) на мой взгляд оптимален для раздачи слонов ресурсов.
>А вот всяко разно боевые действия это уже другой вопрос. Тут нужно гораздо больше информации "что да как"


А посты темы прочитайте я помимо ресурсов ниже написал еще 1 вопрос дабы не создовать новой темы....!!!!

А то что как я определил есть крон или нет....!!!


Устоновил игру в локальную сеть пользователи игруют и те файлы которые нужно запускать по крону я их не трогаю и не запускаю и все замечательно работает....

  Ответить  
 
 автор: Гость   (25.01.2009 в 08:27)   письмо автору
 
   для: Trianon   (24.01.2009 в 09:59)
 

Для травиана - вполне. Отчеты о нападениях появляются в ту же секунду, причем не только у игроков которые "атакавали/защищались", а и у просто тех что состоят в тех же альянсах. Кроме того статистика игрока изменяется сразу же, а она доступна вообще всем пользователям. Счас спецально проверил - статистика изменилась у игрока мнгновенно, хотя я к нему никакого отношения не имел.

Или у вас есть более "естественное" решение данной задачи?

  Ответить  
 
 автор: Trianon   (25.01.2009 в 11:15)   письмо автору
 
   для: Гость   (25.01.2009 в 08:27)
 

>Для травиана - вполне. Отчеты о нападениях появляются в ту же секунду, причем не только у игроков которые "атакавали/защищались", а и у просто тех что состоят в тех же альянсах. Кроме того статистика игрока изменяется сразу же, а она доступна вообще всем пользователям. Счас спецально проверил - статистика изменилась у игрока мнгновенно, хотя я к нему никакого отношения не имел.

Это никак не означает, что насервере стоит крон, запускающий что-то раз в секунду.

>Или у вас есть более "естественное" решение данной задачи?

Задачу опишите поконкретней. Может и подскажу.

  Ответить  
 
 автор: Гость   (25.01.2009 в 11:26)   письмо автору
 
   для: Trianon   (25.01.2009 в 11:15)
 

>Это никак не означает, что насервере стоит крон, запускающий что-то раз в секунду.

Да, есть вариант что при обращении пользователя к странице обновляется вся возможная информация. Такой вариант был бы возможен если бы sic! акстивных пользователей не было более 10к на сервер. А количество нападений не доходило до 50-100к в сутки.

  Ответить  
 
 автор: Trianon   (25.01.2009 в 11:54)   письмо автору
 
   для: Гость   (25.01.2009 в 11:26)
 

>Да, есть вариант что при обращении пользователя к странице обновляется вся возможная информация.
Вероятно, не обновляется, а вычисляется. И не вся, а относящаяся только к этому пользователю.

>Такой вариант был бы возможен если бы sic! акстивных пользователей не было более 10к на сервер. А количество нападений не доходило до 50-100к в сутки.

Тем более. Разматывать еще и односекундный крон ему просто напросто некогда.

  Ответить  
 
 автор: Гость   (25.01.2009 в 12:16)   письмо автору
 
   для: Trianon   (25.01.2009 в 11:54)
 

>Вероятно, не обновляется, а вычисляется. И не вся, а относящаяся только к этому пользователю.
Вероятно вы не читаете мои сообщения, в часности от (25.01.2009 в 08:27).

>Тем более. Разматывать еще и односекундный крон ему просто напросто некогда.
Что мешает поставить вторую машину? В подобных проектах с вероятностью в сто процентов используется распределенная среда, разве нет?

  Ответить  
 
 автор: AlexSol   (24.01.2009 в 20:06)   письмо автору
 
   для: Crayzers   (23.01.2009 в 19:49)
 

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

  Ответить  
 
 автор: Crayzers   (25.01.2009 в 02:07)   письмо автору
 
   для: AlexSol   (24.01.2009 в 20:06)
 

С ресурсами мне все понятно но как с атаками поступать?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования