Arcana

Форум проекта L2Arcana.ru => ОШИБКИ => Тема начата: Dori от 01 Октябрь 2013, 08:39:37

Название: После снятия задачи L2.exe перс остался в игре
Отправлено: Dori от 01 Октябрь 2013, 08:39:37
Вчера произошел странный случай (около 23 часов по МСК). Играла в 2 окна. Какую из трасс выбрала для игры теперь не припомню. Суть в том, что в один момент начало сильно подлагивать и спустя несколько минут персы вообще отказались реагировать на команды. Выход из игры (кнопкой) не смогла сделать, пришлось снять процессы L2.exe через диспетчер задач. Перезашла первым персом и вижу что второй перс в игре, на том же месте где и был ! Его можно взять в таргет, пригласить в группу и т.д. Попробовала зайти вторым персом. При первой попытке входа сообщение: "Акаунт уже используется". Зашла со второй попытки. Времени с момента снятия задачи до запуска первого перса прошло около 3-х минут.  Возможно выставлены какие-то тайминги на сервере для определения присутсвия акаунта в игре, или тут чтото другое ?
Название: После снятия задачи L2.exe перс остался в игре
Отправлено: arutyun от 01 Октябрь 2013, 08:50:25
Вчера произошел странный случай (около 23 часов по МСК). Играла в 2 окна. Какую из трасс выбрала для игры теперь не припомню. Суть в том, что в один момент начало сильно подлагивать и спустя несколько минут персы вообще отказались реагировать на команды. Выход из игры (кнопкой) не смогла сделать, пришлось снять процессы L2.exe через диспетчер задач. Перезашла первым персом и вижу что второй перс в игре, на том же месте где и был ! Его можно взять в таргет, пригласить в группу и т.д. Попробовала зайти вторым персом. При первой попытке входа сообщение: "Акаунт уже используется". Зашла со второй попытки. Времени с момента снятия задачи до запуска первого перса прошло около 3-х минут.  Возможно выставлены какие-то тайминги на сервере для определения присутсвия акаунта в игре, или тут чтото другое ?

Могу конечно ошибаться, но думаю что вполне логично когда при принудительном отключении окна или внезапной потери интернета информация об онлайне игрока остается не сервере, правда сколько времени игрок должен оставаться онлайн не знаю. По крайней мере у меня так было на всех неофф серверах, на которых играл.
Название: После снятия задачи L2.exe перс остался в игре
Отправлено: 1a0 от 01 Октябрь 2013, 10:30:52
Согласен, логичность в этом моменте присутствует.
1. Персонаж перестал отвечать на команды - значит появилась патеря пакетов, либо их задержка на линии маршрута.
2. Выход из игры - та же причина что и в первом случае.
3. Снятие задачи через диспетчер закрывает процесс и программу вцелом, но! команды персонажу, а так же последующий выход еще блуждают в просторах интернета пытаясь достучаться до сервера.
4. Повторный логин через пару минут - сервер получает еще предыдущие команды о передвижении и выходе и тут же на него пытаются зайти через другой канал - результат "Аккаунт уже используется"  :pardon:.
К слову, если на один аккаунт поступают команды с двух сторон - акк уходит в автоматический офф, при этом последнее системное сообщение высвечивается тому кто логинится, а тому кто использует акк выдает "Соединение было разорвано" с последующим выходом акка из игры.
ну и повторная попытка залогинится - дает возможность зайти в игру.
ПС: легко это наблюдается, если в два окна попытаться зайти на один и тот же аккаунт.
Название: После снятия задачи L2.exe перс остался в игре
Отправлено: Dori от 01 Октябрь 2013, 11:10:30
Спасибо за разьяснения. Просто такое случилось впервые, вот и не знала что гадать.
Название: После снятия задачи L2.exe перс остался в игре
Отправлено: ABC от 01 Октябрь 2013, 18:12:13
Да, Лао все правильно расписал. Непонятно вот что: какое время перс должен оставаться в игре без поступления команд? На данный момент на автоатаке перс может находиться в игре до 40 минут, просто стоять до 30 минут (возможно и больше, не проверял). И это все при том, что при заходе, если персу не посылать команды, сервер разрывает соединение.
Как мне кажется, сервер должен периодически проверять состояние сессии. Тогда не было бы таких приколов:  на фарме РБ сервер разорвал соединение, дестр остался в пати, исправно бил РБ (конечно без лимитов), принимал бафы и тд. При этом хозяин не смог зайти и отправился спать. РБ зафармили, все улетели, дестр остался. Сколько он там еще стоял не знаю.
Название: После снятия задачи L2.exe перс остался в игре
Отправлено: 1a0 от 01 Октябрь 2013, 20:13:09
Да, Лао все правильно расписал. Непонятно вот что: какое время перс должен оставаться в игре без поступления команд? На данный момент на автоатаке перс может находиться в игре до 40 минут, просто стоять до 30 минут (возможно и больше, не проверял). И это все при том, что при заходе, если персу не посылать команды, сервер разрывает соединение.
Как мне кажется, сервер должен периодически проверять состояние сессии. Тогда не было бы таких приколов:  на фарме РБ сервер разорвал соединение, дестр остался в пати, исправно бил РБ (конечно без лимитов), принимал бафы и тд. При этом хозяин не смог зайти и отправился спать. РБ зафармили, все улетели, дестр остался. Сколько он там еще стоял не знаю.
Боюсь, что все команды, которые "дестр" в панике перед выходом отправлял серверу до последнего таки доходили, с некоторым промежутком... Боюсь, что если работать в этом направлении, то начнутся приколы с выбрасыванием игроков при временном пинге больше 300 или однократной потере пакетов более 20%. И тогда все начнут жаловаться, что играть невозможно - все время дисконектит. А в ситуации с "дестром" для меня остается загадкой - почему человек не мог зайти. Во всех подобных случаях первый же логин на этого персонажа (даже более того - на этот аккаунт) выбивает его из игры с пометкой "Аккаунт уже используется", повторный логин позволяет зайти.
К слову, в свое время на ц4 фришках это был один из моментов, когда можно было избежать неминуемого слива прямо посреди пвп, так как персонаж при таком "релогине" моментально вылетал из игры даже в боевом режиме. Насколько я знаю, уже давно такого не происходит, так как после подобного "выбивания" перса он еще несколько секунд остается в игре.
Название: После снятия задачи L2.exe перс остался в игре
Отправлено: ABC от 02 Октябрь 2013, 15:54:16
40 минут шли... Не много ли?
Ситуация с дестром вполне понятна, например обрыв по физике у абонента или проблемы на оборудовании у провайдера. Непонятно почему дестр остался в игре, если клиент отвалился.
Вернее вполне понятно, если предположить что сервер ждет только команды от клиента. Тогда теоретически перс может остаться в игре до рестарта сервера или до до попытки зайти на аккаунт.
Проверка состояния сессии это немного не то, о чем Вы написали. Это что то вроде пинга до клиента через какие то промежутки времени. Если клиент например не отвечает 5 пингов подряд с промежутком скажем в 2 минуты, то сервер принудительно рвет сессию и перс уходит в оффлайн.
Удивительно другое, при входе и дальнейшем бездействии сервер таки разрывает соединение. Получается что система срабатывает, только не всегда. Что дает основание предположить наличие некоторых проблем в работе сервера.
Релог происходит в течении 2-3 сек. Сравнимо с применением БСоЕ.
Название: После снятия задачи L2.exe перс остался в игре
Отправлено: 1a0 от 02 Октябрь 2013, 16:13:41
40 минут шли... Не много ли?
В единичных случаях такую ситуацию представить можно: постоянное обращение к серверу от клиентского компьютера при подобном завершении задачи, или же ежеминутное проскальзывание пакетов в обе стороны с потерей всех остальных, или же банальное зацикливание, которое, впрочем, не исключено, что происходит на сервере.

Меня в этой всей ситуации смущает другое:
При этом хозяин не смог зайти и отправился спать.
Или это была гипотетическая ситуация? К слову, бывает, что люди не знают как отличить закрытое окно от свернутого, если эксплоурер лагнул и на панеле нет активных окон. А после тщетных попыток загрузить еще одно несвернутое окно (40 минут) отправился спать. Думаю, что не зная ни ситуации ни человека, я могу и такое предположить.

Лично же больше 3 минут такого не наблюдал.
Название: После снятия задачи L2.exe перс остался в игре
Отправлено: 1a0 от 02 Октябрь 2013, 16:16:24
АВС, хотя все что я описал выше это лишь мое понимание и попытка объяснить ситуацию. Высказать предположения. Ничего общего с наукой сетей не имеет. :-[
Название: После снятия задачи L2.exe перс остался в игре
Отправлено: Strongman от 02 Октябрь 2013, 17:36:34
Я периодами пишу свою игруху, архитектурой (не гейплеем) похожую на линейку, поэтому тож поделюсь догадками... Каждый клиент соединяется с сервером отдельным коннектом (socket). Через этот коннект и происходит обмен данными между клиентом и сервером. Сервер и клиент "слушают" и "рассылают" друг другу "сообщения".

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

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

Предполагаю, что в линейке (конкретно у нас), клиент пингует сервер, а сервер просто отрабатывает асинхронные запросы. Клиент отвалился не послав команду серверу - помните может... в 90% случаев винда сообщает об этом ошибкой при закрытии клиента. Сервер ждет себе спокойно новых запросов по этому коннекту до ситуации, пока ему не понадобиться сообщить клиенту что-то. Например в радиусе нашего игрока пробежал другой игрок - уже отвалившемуся клиенту сервер пытается послать координаты, скорость, внешний вид, ник... перемещающегося игрока - фейл, тогда только он закрывает коннект со своей стороны.

Если значимых событий рядом не было, о которых надо сообщить клиенту по инициативе сервера, то коннект и будет продолжать висеть. А при попытке клиента зайти ещё раз, ему сообщиться, что он уже в игре. )
Название: После снятия задачи L2.exe перс остался в игре
Отправлено: 1a0 от 02 Октябрь 2013, 17:42:06
Если значимых событий рядом не было, о которых надо сообщить клиенту по инициативе сервера, то коннект и будет продолжать висеть. А при попытке клиента зайти ещё раз, ему сообщиться, что он уже в игре. )
Как объяснить ситуацию с дестром 40 минут бьющим РБ?
Название: После снятия задачи L2.exe перс остался в игре
Отправлено: Strongman от 02 Октябрь 2013, 17:52:22
Если значимых событий рядом не было, о которых надо сообщить клиенту по инициативе сервера, то коннект и будет продолжать висеть. А при попытке клиента зайти ещё раз, ему сообщиться, что он уже в игре. )
Как объяснить ситуацию с дестром 40 минут бьющим РБ?
- сервер ошибочно считал, что значимых событий для этого окна нет, хз почему
 - пакеты идущие в обе стороны кешируются на сервере, потом обрабатываются в порядке очереди... при лагах (тормоза софта/железа,канала) эта очередь может разгребаться очень долго
Название: После снятия задачи L2.exe перс остался в игре
Отправлено: Dori от 02 Октябрь 2013, 22:37:47
Тема развилась совсем не в ту сторону.  Отдельный коннект (socket). ???? Понятие о том что это, я имею, в связи с профессиональной деятельностью. (уж более чем 17 лет) Тут имеет место настройка тайминга на серверной стороне. Значимые события ? Я же описала, что второе окно и в пати приглашала, и в торг тоже. Разве это не значимые события для перса (акаунта) ? И только тогда, когда во второй раз логинилась, акаунт раздуплился. Тут имеет место ретрейн акаунта. Но это беда уже не самго сервера, а оборудования на котором он работает или через какое он подключен к сети.
Название: После снятия задачи L2.exe перс остался в игре
Отправлено: Strongman от 02 Октябрь 2013, 23:12:39
ну, я всего лишь высказал свое дилетантское мнение
вы тут продолжайте, не отвлекайтесь )
Название: После снятия задачи L2.exe перс остался в игре
Отправлено: ABC от 03 Октябрь 2013, 09:58:48
Короче это догадки. Суть в том, что сервер работает неправильно и так не должно быть. На руоффе по крайней мере так не было. Там если дисконнект, то заходишь на сервер, перса в игре нет.
Название: После снятия задачи L2.exe перс остался в игре
Отправлено: 1a0 от 03 Октябрь 2013, 10:33:23
Короче это догадки. Суть в том, что сервер работает неправильно и так не должно быть. На руоффе по крайней мере так не было. Там если дисконнект, то заходишь на сервер, перса в игре нет.
Вопиющее заявление. А как технически правильно должен работать сервер?
И чем руофф отличался от любого другого фришарда, кроме самопровозглашения своего официального статуса? Может это на руоффе было неправильно? Может как раз дело в таймауте при некорректном выходе из игры? Может стоит корректно закрывать программы, а уже потом требовать корректной ответной работы сервера?
Название: После снятия задачи L2.exe перс остался в игре
Отправлено: LunaBoy от 03 Октябрь 2013, 11:07:52
Может это как то связанно с той же защитой?Я не думаю,что правильно по нескольку раз тыкать на кнопку,пока персонаж не зайдёт(имеется в виду эффект ,,соскакивания,,.)
Название: После снятия задачи L2.exe перс остался в игре
Отправлено: 1a0 от 03 Октябрь 2013, 11:23:16
Я не думаю,что правильно по нескольку раз тыкать на кнопку,пока персонаж не зайдёт
После релога? или после "снятия задачи через диспетчер"?
Название: После снятия задачи L2.exe перс остался в игре
Отправлено: LunaBoy от 03 Октябрь 2013, 11:59:20
Я не думаю,что правильно по нескольку раз тыкать на кнопку,пока персонаж не зайдёт
После релога? или после "снятия задачи через диспетчер"?
После релога.А ещё я заметил,что если персонаж долго сидит без дела,исключение торг,то дисконектит.
Название: После снятия задачи L2.exe перс остался в игре
Отправлено: ABC от 03 Октябрь 2013, 13:44:33
Короче это догадки. Суть в том, что сервер работает неправильно и так не должно быть. На руоффе по крайней мере так не было. Там если дисконнект, то заходишь на сервер, перса в игре нет.
Вопиющее заявление. А как технически правильно должен работать сервер?
И чем руофф отличался от любого другого фришарда, кроме самопровозглашения своего официального статуса? Может это на руоффе было неправильно? Может как раз дело в таймауте при некорректном выходе из игры? Может стоит корректно закрывать программы, а уже потом требовать корректной ответной работы сервера?
Как технически правильно знают разработчики. Я всего лишь знаю, что так быть не должно.
Руофф отличается тем, что ошибки и баги правят разработчики игры. При всем уважении к Старку, я думаю их квалификация повыше будет.
Может быть проблема и в тайм-ауте, так надо эту проблему решать.
О каком корректном закрытии программ Вы говорите? При пропадании интернета можете закрывать клиент как угодно, на сервер это никак не повлияет. Предугадать когда интернет отвалится и успеть перед этим корректно завершить программу, дано не каждому)
Название: После снятия задачи L2.exe перс остался в игре
Отправлено: 1a0 от 03 Октябрь 2013, 14:13:53
Как технически правильно знают разработчики. Я всего лишь знаю, что так быть не должно.
Руофф отличается тем, что ошибки и баги правят разработчики игры. При всем уважении к Старку, я думаю их квалификация повыше будет.
Может быть проблема и в тайм-ауте, так надо эту проблему решать.
О каком корректном закрытии программ Вы говорите? При пропадании интернета можете закрывать клиент как угодно, на сервер это никак не повлияет. Предугадать когда интернет отвалится и успеть перед этим корректно завершить программу, дано не каждому)

О том, что руофф правили разработчики игры, у меня диаметрально противоположная информация, хотя... она вполне может быть не достоверной.
И как они реализовали обсуждаемый момент тоже не известно. Откровенно говоря, если не считать примера с дестром - я вообще проблемы не вижу (Везде где играл так было и неудобств особых не доставляло), так как При пропадании интернета - мой персонаж всегда выходит из игры с определенным ТаймАутом (в секунд в 10-15). Нужен тайм-аут в 0 секунд? - "Альт-Ч" -> "выход" и ждем пока интернет заработает  :pardon:

Кстати, если бы тайм-аут был бы в 1-2 секунды это можно было бы использовать как баг: Собрал парик и ушел в офф, после чего сразу же зашел, ребафнулся и убил без риска быть убитым во время слива. (К примеру... первое что представилось)
Название: После снятия задачи L2.exe перс остался в игре
Отправлено: Stark от 03 Октябрь 2013, 19:07:09
То, что персонаж находится определенное количество секунд в игре после пропадания интернета или неправильного завершения работы, правильно и также на официалььном сервре, как раз для того, о чем выше написал 1a0. Зайти персонажем после такого аварийного завершения работы можно со второй попытки, как и в режиме оффлайн торговли, чтобы зайти на офф торговца, первой попыткой захода Вы сначала выбиваете его из игры, второй заходите.
Про то, что персонаж при аварийном завершении работы оставался в игре и продолжал бить 40 минут, не верю - персонаж исчезает с игры через 15-30 секунд.
Название: После снятия задачи L2.exe перс остался в игре
Отправлено: GrinVIR от 03 Октябрь 2013, 19:48:07
Про то, что персонаж при аварийном завершении работы оставался в игре и продолжал бить 40 минут, не верю - персонаж исчезает с игры через 15-30 секунд.
Если до этого нажимались команды типо атаки - может бить и в течении пару минут как было у нас:) Касалось РБ - дестры после вылета бьют нормально пока не релогнишься.
Название: После снятия задачи L2.exe перс остался в игре
Отправлено: GrinVIR от 03 Октябрь 2013, 19:48:26
Но это лишь в плюс я считаю :)
Название: После снятия задачи L2.exe перс остался в игре
Отправлено: ABC от 04 Октябрь 2013, 08:11:52
1a0
Мы вероятно о разном ) Речь о том, что персонах непозволительно долго остается в игре на СЕРВЕРЕ, а не в клиенте. Повторюсь, когда интернета нет, нажимайте на компе что хотите, можете его вообще его в окно выбросить. Сервер никак не прореагирует на Ваши действия.
Название: После снятия задачи L2.exe перс остался в игре
Отправлено: ABC от 04 Октябрь 2013, 09:16:39
То, что персонаж находится определенное количество секунд в игре после пропадания интернета или неправильного завершения работы, правильно и также на официалььном сервре, как раз для того, о чем выше написал 1a0. Зайти персонажем после такого аварийного завершения работы можно со второй попытки, как и в режиме оффлайн торговли, чтобы зайти на офф торговца, первой попыткой захода Вы сначала выбиваете его из игры, второй заходите.
Про то, что персонаж при аварийном завершении работы оставался в игре и продолжал бить 40 минут, не верю - персонаж исчезает с игры через 15-30 секунд.
Конечно, так и должно работать и я с этим не спорю. Вопрос в том, что перс остается в игре больше 30 сек и похоже не только у меня одного. Это собственно не влияет на процесс игры, но забавно. И если уж создали тему про это, почему бы не отписаться? Как бы поддержать, не только у нее одной так ))
Название: После снятия задачи L2.exe перс остался в игре
Отправлено: Strongman от 04 Октябрь 2013, 21:06:31
Объективно, я подтверждаю, что бывает так, что перс не в состоянии перезайти более 20 минут после дисконнекта.
Даже разок был удивлен, что почти через сутки после дисконнекта, при логине писало "Ваш чар в игре".
Постараюсь найти более весомые доказательства своему слову, но пока только так.