Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2011, 01:23   #21
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Цитата:
Вы слишком преувеличиваете опасность использования сессий.
Я не преувеличиваю. Просто знаю, что у меня есть идиотская привычка вместо свертывания окна закрывать его. Машинально...

Цитата:
Пришло время завершения строительства. Происходит второе подключение к БД. Игроку добавляется мельница и списываются 100 "рупий".
Ага, со списанием бабла поняла. Но, допустим, мельница строится не 10 минут, а 10 часов. Допустим, я фанатичный игрок, который не выходит из игры ни днем, ни ночью. 10 часов прошли, инет отключился(по любой причине: плохая погода, соседи-вражины порезали кабель , просто фиговая связь(пишу из своего опыта, потому что у меня каждые полтора-два часа стабильно вырубается инет), злюки родители, которым надоело, что их чадо не спит по ночам, пришли и выдернули комп из сети, отключение электричества - в общем, всякая ерунда в жизни случается, результат один - вырубился инет), второго подключения к БД не произошло. Итог - 10 часов бессмысленного ожидания построения мельницы, которая в результате не построилась. Если меня спросят, что лучше: подождать лишние 20 секунд каждый раз при строительстве какого-либо здания либо ответ от сервера придет мгновенно, на поле у меня появится иллюзия строительства мельницы, я буду ждать несколько часов ее построения, но не факт, что в результате я получу желаемое, то я выберу первый вариант. Или же есть способы, как с этим бороться?

P.S. Вы не подумайте, что я пытаюсь упрямо доказать что-то свое, просто мне самой это интересно, и я уверена, что в данном споре родится истина

P.P.S. Стыдно признаться, но я когда-то тоже платила за одну игру... Так вот когда деньги пропали, а вещь не купилась, было очень обидно. И я серьезно была готова подождать лишнее время, лишь бы деньги не улетели в пустоту.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 04.01.2011, 09:15   #22
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

Цитата:
Ага, со списанием бабла поняла. Но, допустим, мельница строится не 10 минут, а 10 часов. Допустим, я фанатичный игрок, который не выходит из игры ни днем, ни ночью. 10 часов прошли, инет отключился(по любой причине: плохая погода, соседи-вражины порезали кабель , просто фиговая связь(пишу из своего опыта, потому что у меня каждые полтора-два часа стабильно вырубается инет), злюки родители, которым надоело, что их чадо не спит по ночам, пришли и выдернули комп из сети, отключение электричества - в общем, всякая ерунда в жизни случается, результат один - вырубился инет), второго подключения к БД не произошло. Итог - 10 часов бессмысленного ожидания построения мельницы, которая в результате не построилась. Если меня спросят, что лучше: подождать лишние 20 секунд каждый раз при строительстве какого-либо здания либо ответ от сервера придет мгновенно, на поле у меня появится иллюзия строительства мельницы, я буду ждать несколько часов ее построения, но не факт, что в результате я получу желаемое, то я выберу первый вариант. Или же есть способы, как с этим бороться?
Вот у Вас фантазия...
Ну, ладно. Тут всё тоже очень просто. В предыдущем моём топике Я описал механизм с сессиями и переменные-триггеры. Так вот при инициализации строительства мельницы заносите переменный начала постройки в сессию и мастер-таблицу, дописываете функционал инициализации игры для новой переменной-триггера. Данные прогресса также берёте из сессии. И можете закрывать окно браузера сколько хотите. В этом случаи просто немного возрастёт нагрузка на мастер-таблицу.
Прошу отметить, что если временной промежуток мал (несколько минут), то лучше использовать способ без мастер-таблицы.

По поводу вредных привычек:
- В периоды спада игровой активности (ночью) около 30% нагрузки на сервер идёт со стороны "спящих" клиентов - игроков, которые не закрыли перед уходом окно браузера. Если в игру играют в нескольких часовых поясах, то это является серьёзной проблемой.
А Вы говорите "у меня есть идиотская привычка вместо свертывания окна закрывать его"
Виталий Желтяков вне форума Ответить с цитированием
Старый 04.01.2011, 21:32   #23
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Цитата:
заносите переменный начала постройки в сессию и мастер-таблицу
А чем тогда отличается запись в мастер-таблицу от записи просто в таблицу? Ведь после постройки придется это добро переписать в нормальную таблицу и удалить из мастер-таблицы. А если я строю не одну мельницу, а 10 мельниц, 2 конюшни, 5 амбаров ну и т.д.?
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 04.01.2011, 23:45   #24
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Виталий Желтяков Посмотреть сообщение
Вот у Вас фантазия...
Да это как бы и не фантазии - приводятся вполне "штатные" ситуации для браузерных игр...
Учитывать возможность таких ситуаций,а также проектировать адекватные действия при их возникновении - это и есть "продуманная, грамотная функциональность" любого приложения.

Цитата:
Если хотят играют по-моим правилам быстро и достаточно удобно, не хотят пусть идут к конкурентам, у которых медленно, но удобней.
Такой подход допустим (но лично для меня - неприемлим) только в том случае, если вы игру делаете сами, "just for fun" как говорится....
Если же в проект вовлечены денежки серьёзных дядек-инвесторов - тут особо пользователями разбрасываться не получится,каждый будет на счету.
Ибо инвестиции - дело нервное (сроки+прибыль), а инвесторы - народ нетерпеливый.

Цитата:
- В периоды спада игровой активности (ночью) около 30% нагрузки на сервер идёт со стороны "спящих" клиентов - игроков, которые не закрыли перед уходом окно браузера. Если в игру играют в нескольких часовых поясах, то это является серьёзной проблемой.
Настолько серьёзной проблемой - что прям и "выключатель" для таких юзеров не придумать ну никак...???
Типа - 20-30мин отсутствия активности(ходов) - юзер переводится в стендбай-режим(сохранение текущих результатов для юзера, затем ограничение серверных ресурсов).
Ещё 20-30мин простоя - полное отключение юзера, в браузер ему заставку игры + сообщение о причине (простой столько-то минут).
При этом - вся последняя активность юзера сохранена, сервер свободен, все довольны.

Цитата:
К черту базу.
Сказано смело и громко - а ваши варианты всёравно на записи в БД опираются - как изначально и предлагала ACE Valery....
Andkorol вне форума Ответить с цитированием
Старый 05.01.2011, 02:24   #25
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

Цитата:
А чем тогда отличается запись в мастер-таблицу от записи просто в таблицу?
Данные из мастер-таблицы берутся при инициализации. Во время ожидания игрок может несколько раз перезагрузить страницу и несколько раз провести инициализацию игры. Если мы будем держать данные о постройке не в мастер-таблице или сессии, то каждый раз надо будет дергать при инициализации эту другую таблицу, что приведёт к нагрузкам при инициализации.
Цитата:
А если я строю не одну мельницу, а 10 мельниц, 2 конюшни, 5 амбаров ну и т.д.?
Несколько переменных.
Как же Я рад Вас видеть, Andkorol. Вас только тут и не хватало.
Цитата:
Если же в проект вовлечены денежки серьёзных дядек-инвесторов - тут особо пользователями разбрасываться не получится,каждый будет на счету.
Читаем внимательно предыдущие топики. Я там, вроде бы, доходчево объяснил почему Я ориентируюсь на производительность и безопасность. Игра должна быть быстрой и производительной.
Цитата:
Настолько серьёзной проблемой - что прям и "выключатель" для таких юзеров не придумать ну никак...???
Я, вообще, то этот пример привел по поводу плохих привычек - читаем внимательно. "Выключатель" Я не придумывал, т.к. использую более гибкое решение с динамическим периодом опроса сервера.
Цитата:
Сказано смело и громко - а ваши варианты всёравно на записи в БД опираются - как изначально и предлагала ACE Valery....
Читаем внимательно - в начале предлагалось постоянно обращаться к базе дабы получить время прогресса. Я же предложит обращаться к базе 1-2 раза.
Виталий Желтяков вне форума Ответить с цитированием
Старый 05.01.2011, 14:42   #26
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Цитата:
в начале предлагалось постоянно обращаться к базе дабы получить время прогресса
Подозреваю, что вы меня не правильно поняли. Я не предлагала обращаться постоянно к базе, чтобы получить время прогресса. Для этого достаточно двух раз: первый, когда мы даем команду построить здание. С сервера в клиент возвращается время, необходимое на строительство(для нашей мельницы 10 минут). В клиенте ставим таймаут на это время, и по окончании 10 минут клиент отсылает серверу команду, что мельница построилась. Сервер проверяет, действительно ли прошло 10 минут с начала строительства мельницы. И если да, то отвечает клиенту, мол, все хорошо.
А если каждую секунду обращаться к базе, то никаких супер-пупер мощных компов не хватит...

По мастер-таблице есть вопрос: можете показать как она примерно выглядит. В смысле какие поля и данные туда предполагается внести?

З.Ы. Нам ведь при инициализации все равно придется брать инфу с других таблиц. Не будем же мы в мастер-таблице хранить все мои постройки, которых может быть больше сотни, все мое оружие ну и т.п.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 05.01.2011, 15:28   #27
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

Цитата:
Подозреваю, что вы меня не правильно поняли.
Возможно, не будем спорить.
Цитата:
ля этого достаточно двух раз: первый, когда мы даем команду построить здание. С сервера в клиент возвращается время, необходимое на строительство(для нашей мельницы 10 минут). В клиенте ставим таймаут на это время, и по окончании 10 минут клиент отсылает серверу команду, что мельница построилась. Сервер проверяет, действительно ли прошло 10 минут с начала строительства мельницы. И если да, то отвечает клиенту, мол, все хорошо.
Это плохой способ. Я уже проверял на практике. Дело в том, что js-скрипты на клиенте работают порой совершенно непредсказуемо (особенно в IE). Мало того, что скрипты довольно часто виснут, они работают с разной скоростью. Эти 10 минут на клиенте могут выполнятся и 9,5 минут, и все 11. Возникает рассинхронизация с сервером, что порождает ряд проблем в обработке, но самое главное пользователь видит либо долгую работу, либо зависание - это очень плохо.
Цитата:
А если каждую секунду обращаться к базе, то никаких супер-пупер мощных компов не хватит...
Каждую секунду не надо. У меня время обращение к серверу колеблется от 3 секунд для чатов до 30 секунд для обычных локаций.
У меня содержание мастер-таблицы следующие:
- user_id
- Логин
- Хэш пароля
- ключ пароля
- статус игрока
- ip
- локация
- пол
- уровень
- состояние счёта
- аватар
- девиз
- состояние квестов
- настройки звука, обучения и пр.
- несколько важных параметров
- переменные-триггеры
Цитата:
Нам ведь при инициализации все равно придется брать инфу с других таблиц.
В мастер-таблице хранятся данные необходимые для отображения страницы после перезагрузки и больше ничего, т.к. на неё итак большая нагрузка.
Виталий Желтяков вне форума Ответить с цитированием
Старый 05.01.2011, 21:13   #28
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

Если уж пошел обмен опытом, то, ACE Valery, как в вашем проекте хранятся многомерные массивы данных? Или как Вы храните данные об взаимодействующих игроках, например, при битве?
Виталий Желтяков вне форума Ответить с цитированием
Старый 05.01.2011, 21:36   #29
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Виталий Желтяков
к сожалению, тут я ничего не могу сказать. Я пишу простую игрушку для "ВКонтакте" и битв там никаких нет(тоже к сожалению).
А многомерные массивы есть только на клиенте, и они там создаются из данных, взятых из нескольких таблиц базы.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 06.01.2011, 12:49   #30
kpachbiu
взагрузке.рф
Форумчанин
 
Аватар для kpachbiu
 
Регистрация: 13.06.2010
Сообщений: 117
Радость

Цитата:
Сообщение от ACE Valery Посмотреть сообщение
Виталий Желтяков
к сожалению, тут я ничего не могу сказать. Я пишу простую игрушку для "ВКонтакте" и битв там никаких нет(тоже к сожалению).
А многомерные массивы есть только на клиенте, и они там создаются из данных, взятых из нескольких таблиц базы.
А ссылку дадите, посмотреть?)
Взагрузке.рф - Файлы для людей
Ищу художника или веб-дизайнера для создания браузерной онлайн игры! icq 340-289-851
kpachbiu вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как написать БОТ для онлайн игры? Roshan Gamedev - cоздание игр: Unity, OpenGL, DirectX 22 30.03.2011 22:19
Как сделать бота для онлайн игры? zotox Gamedev - cоздание игр: Unity, OpenGL, DirectX 15 24.09.2009 17:34
из каких модулей создаются игры alex(21) Паскаль, Turbo Pascal, PascalABC.NET 6 14.08.2009 18:42