Страница 1 из 2

Вопросы по теории и логике приложения

Добавлено: 01 сен 2013, 13:58
graf8787
Дабы не изобретать велосипед, с одной стороны, а с другой, не копировать под чистую чужой, хочется задать несколько вопросов.

К примеру мы пишем пресловутую ферму.
1. Насколько я понимаю, живет она на все тех же УРЛреквест?
2. Теоретически разберем элементарный процесс роста растения, не рассматривая исключения

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

соответственно, если пользователь не стал ждать бананов в онлайне:

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

Re: Вопросы по теории и логике приложения

Добавлено: 01 сен 2013, 14:39
alexei
Самый простой вариант. Сервер стучится каждые N секунд и спрашивает, а что выросло? Если что-то выросло клиент отображает.
Есть варианты с сокетами и лонгполла, т.е. обращение до тех пор как сервер не ответит. А он отвечает, когда что-то выросло.

Re: Вопросы по теории и логике приложения

Добавлено: 01 сен 2013, 17:39
cibersant
а попроще никак.Сервер запомнил время посадки,клиент тоже запомнил время посадки.На клиенте запускаем таймер,по истечении таймера запрос на сервер,сервер настоящее время отнимает время посадки ,если 2 часа,значит бананы выросли-то если клиент в сети.Если клиент вышел и по новой зашёл то сразу запрос если два часа прошло значит бананы выросли.

Re: Вопросы по теории и логике приложения

Добавлено: 02 сен 2013, 02:36
DDer
отправляется запрос на сервер с сообщением, что на данной грядке пытаемся посадить бананы.
- сервер проверяет можно ли на ней садить бананы. помечает грядку как используемую для выращивания бананов с результатом через два часа. результат сообщаем приложению.
- приложение запоминает когда будет результат и запускает таймер, по достижению которого стучится на сервер и спрашивает, а правда ли бананы доросли?
Все так!!!НО НЕ СТУЧИТСЯ ОН ПО ТАЙМЕРУ!!!(Для этого по ходу там и сделали кнопку собрать урожай :D ) Проверять не нужно, приложение без проверки говорит игроку да бананы доросли и сервер знает, что они выросли и клиент, но сравнивать незачем, НИКАКИХ НЕ НУЖНЫХ ПРОВЕРОК!!!
Самый простой вариант. Сервер стучится каждые N секунд и спрашивает, а что выросло? Если что-то выросло клиент отображает.
УЖАС!!!!Бррр Во первых наверно не сервер, а клиент стучится но не важно :D урлреквест по таймеру это просто пи пи пи!!!
Клиент знает что и когда выросло и не у кого ничего не спрашивает!!!
Все строго по клику игрока собрать, посадить и т д (не знаю что там не играл) :D вот тут все вопросы к серверу!!! типа а правда там можно посадить? а правда они там выросли? и т д

Re: Вопросы по теории и логике приложения

Добавлено: 02 сен 2013, 04:11
graf8787
Все так!!!НО НЕ СТУЧИТСЯ ОН ПО ТАЙМЕРУ!!!(Для этого по ходу там и сделали кнопку собрать урожай :D )
это собирать урожай нужно по клику, но показать, что он уже поспел и на него можно кликать - по таймеру (но не каждые Н секунд, а по его завершению). В остальном спасибо

Re: Вопросы по теории и логике приложения

Добавлено: 02 сен 2013, 05:32
DDer
это собирать урожай нужно по клику, но показать, что он уже поспел и на него можно кликать - по таймеру (но не каждые Н секунд, а по его завершению). В остальном спасибо
Наверно ты не понял :D По таймеру !!!Только показывать!!! Но ни какого обращения к серверу !!!

Клиент знает что бананы растут 2 часа
И сервер знает что что они растут 2 часа
При истечении этого времени по таймеру Нет абсолютно никакого смысла им переговариваться!!!

Re: Вопросы по теории и логике приложения

Добавлено: 02 сен 2013, 06:37
Serge
DDer
почему это нет? Надо как бы эти бананы на склад положить.

graf8787
в целом, вы то описали правильную идею, но, как по мне, это не очень хороший вариант. По той причине, что на всех этих фермах грядок по сотне штук, делать для каждой таймер и пулять на сервер сотню запросов в течении десяти секунд (игрок клацал не на все одновременно, а по одной грядке) - как по мне не очень оптимально.
Я не специалист в Java и C#, не знаю что за сокет сервер и "лонгполл", но, возможно, это было бы более оптимальным решением.

Re: Вопросы по теории и логике приложения

Добавлено: 02 сен 2013, 14:26
sasha^
Serge насчет java 100% согласен.. сокет - это постоянное! соединение сервера и клиента с 2 потоками каждому: input/output.... потому сервер только когда захочет может послать и все... не спрашивая ни о чем клиента... + серверу не нужно хранить все в бд, т.к. он может свободно это хранить в оперативке, это не php, который нужно каждый раз заново...
P.S. + на сервере или клиенте достаточно 1 раз запустить таймер, который раз в секунду будет в цикле все проверять...
сокет-сервер(многопоточный разумеется) очень оптимальное решение для ферм и всех онлайн-игр... я щяс не вспомню, но видел пример фермы-игры на php-сервере, которая ужасно лагала, т.к. сервер не справлялся с запросами уже при +300 человек онлайна..., ведь человек может и по 5 запросов в секудну отправлять...

Re: Вопросы по теории и логике приложения

Добавлено: 02 сен 2013, 16:13
DDer
DDer
почему это нет? Надо как бы эти бананы на склад положить.
А разве там автоматом на склад сбор? По моему пока не соберешь на склад они не попадут

Re: Вопросы по теории и логике приложения

Добавлено: 02 сен 2013, 16:25
razerw
DDer писал(а):бсолютно никакого
Все правильно говоришь. Нечего на сервер слать кучу запросов.