Стратегическая онлайн игра DestinySphere
http://forum.destinysphere.ru/

Мысли вслух
http://forum.destinysphere.ru/viewtopic.php?f=832&t=202172
Страница 1 из 1

Автор:  Requiem [ Сб мар 14, 2009 22:39 ]
Заголовок сообщения:  Мысли вслух

Года полтора-два назад я ушёл из проекта из-за того что мне надоело день в день в 200+ пилонах заказывать войска. Пол года назад вернулся, просто не было чем заняться, решил посмотреть как там сфера. Обнаружил что в одном из миров соту не стёрли и что новый премиум позволяет намного комфортнее играть. Что многое поменялось в сторону улучшения. Первое время, пока я не участвовал в боевых действиях, меня всё устраивало, я не понимал почему люди так сильно возмущаются по поводу проблемы "12345". Я её просто не видел. Потом мне стало интересно расти в боевом рейтинге. Первое время было всё нормально, но когда у тебя более 200 армий в воздухе - любое нападение становится лотереей - сможешь ты обновиться перед атакой и посмотреть что на соте у противника или нет. Сейчас я даже грабли стараюсь с разных сот в разное время отправлять. Это всё лирика, и я понимаю что подобные посты были уже не один раз. И я не вижу смысла ничего требовать от администрации, не думаю что Вам самим нравиться подобная ситуация. Единственное что я хочу - это информации. Почему случилась та или иная проблема и т.п. Если вы позиционируете себя как очень демократичную администрацию, то давайте пожалуйста полную информацию о том почему игра не работает.

Ну не хватает у меня терпения играть в эту игру с постоянными проблемами и отсутствием информации.

Автор:  barbus_2004 [ Вс мар 15, 2009 0:40 ]
Заголовок сообщения: 

+1
С терпением совсем плохо ... :idea:

Автор:  ocimico [ Вс мар 15, 2009 2:56 ]
Заголовок сообщения: 

Сразу подчеркну, что я не видел кода Сферы, поэтому не могу быть на 100 процентов уверен в своей догадке. Основываюсь я на услышанном от тех, кто код видел, и на собственных знаниях.
Причина 12345 - в необходимости синхронизировать действия, меняющие состояние соты, между разными потоками обработки данных.
Что имеется в виду?
Движок игры построен на принципе "задержанных рассчетов". То есть, большинство действий, которые должны производиться в определенный момент, производятся не в тот момент, а в момент, когда результат этих действий востребован игроком (рефреш) или внутренними нуждами сервера (начало боя, освобождение заводов и т.д.)
Каждая сессия игрока ДС - это отдельный процесс на одном из серверов игры. Запрос данных (рефреш, но не только) этим игроком вызывает определенный каскад действий, задержанных ранее до этого момента. Результат некоторых из этих действий - изменения записей в базах данных игры. Весь процесс занимает в сложных случаях десятки секунд серверного времени.
Теперь, что происходит если несколько игроков пытаются обновить свою соту более-менее одновременно (в рамках 10 секунд)?
А происходит следующее:
Если эти игроки хоть коссвенно связаны (или один летел на другого, или оба они летали на кого-то третьего в разное время, но с тех пор не обновлялись, либо кто-то третий летел к ним обоим) - два параллельных процесса пытаются произвести изменения. Например, чтоб выяснить, кто первый ограбил кормушку и сколько ресурсов отгружать второму, и т.д.
Раньше, до НСБ, это совмещение вызывало зависание иногда целого мира. Теперь в большинстве случаев, сервер распознает подобное и выдает одному или обоим игрокам "счетчик"...
Проблема в том, что оба сразу вновь рефрешатся... снова вызвав те же "грабли".

Теперь о возможных решениях:

1) в идеале, было бы убрать совсем "задержанные вычисления". это решило бы не только баг с 12345, но и много других глюков сферы. Проблема, что для этого придется переписать начисто весь движок игры.

2) автоматическая блокировка потоков и создание очереди. К сожалению, это не намного проще чем 1), и программистам ДС не очень хочется за это браться

3) Рандомизация времени ожидания. То есть, если шарик выдан нескольким игрокам, заставить одного ждать 5 секунд, а другого, скажем, 10. Это "расцепит" их и повысит шансы развисания ситуации. Думаю, это несложно реализовать.

4) ничего не сделать. это проще всего, так скорее всего и поступят ;)
Поэтому рекомендую после появления шарика прождать от 5 до 15 секунд, если возникнет снова - от 5 до 30, снова - от 5 до 60. Как правило, такой "алгоритм" помогает.

ЗЫ: И не в коем случае не начинайте тыкать в ф5, перегружать страницу и т.д. - это только ухудшит положение. А вот выйти из игры и перелогиниться - может помочь.

Автор:  konstantin666 [ Вс мар 15, 2009 4:29 ]
Заголовок сообщения: 

Цитата:

4) ничего не сделать. это проще всего, так скорее всего и поступят ;)
Поэтому рекомендую после появления шарика прождать от 5 до 15 секунд, если возникнет снова - от 5 до 30, снова - от 5 до 60. Как правило, такой "алгоритм" помогает.

ЗЫ: И не в коем случае не начинайте тыкать в ф5, перегружать страницу и т.д. - это только ухудшит положение. А вот выйти из игры и перелогиниться - может помочь.
15+30+60 грубо говоря полторы минуты если не получилось перезаходим в игру....... и за сколько в этом случае кидать развед перед армами? при всем том что не факт что зайдеш на соту а не получиш шарик?

зы кстать а как без ф5 если черный экран?

Автор:  konstantin666 [ Вс мар 15, 2009 19:48 ]
Заголовок сообщения: 

прикольно атачу а перегрузиться не могу уже все легло на соту 1 пробой отстрелялся а дальше 54321))))

Автор:  konstantin666 [ Вс мар 15, 2009 19:49 ]
Заголовок сообщения: 

как бы на что то не претендую но блин все рецепты не срабатывают обновиться не могу

Автор:  victor98 [ Вс мар 15, 2009 19:50 ]
Заголовок сообщения: 

Цитата:
прикольно атачу а перегрузиться не могу уже все легло на соту 1 пробой отстрелялся а дальше 54321))))
надеюсь не ко мне )) а то тоже чето зайти проблематично )

Автор:  ocimico [ Вс мар 15, 2009 20:15 ]
Заголовок сообщения: 

Цитата:
15+30+60 грубо говоря полторы минуты если не получилось перезаходим в игру....... и за сколько в этом случае кидать развед перед армами? при всем том что не факт что зайдеш на соту а не получиш шарик?
ну я бы советовал 2 минуты оставить свободными от армий.
Цитата:
зы кстать а как без ф5 если черный экран?
Просто: вбиваешь адрес с портала (http://ds.rambler.ru/)
ф5 только если экран белый, например сразу после входа в мир.

Автор:  Karmoponizhatel [ Вс мар 15, 2009 20:23 ]
Заголовок сообщения: 

Цитата:
1) в идеале, было бы убрать совсем "задержанные вычисления"...
Ввод вычислений в реальном времени - потребует смену всей идеалогии игры.
В том числе отмену всем надоевшего рефреша - как данности.
Да и кучу всего.

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

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

Страница 1 из 1 Часовой пояс: UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/