Перейти к содержимому
RU
Играть

Форум

Неофициальный фикс критических ошибок в HTML5 (серого экрана)


Niced

Рекомендованные сообщения

25.09 вышел официальный фикс проблемы. Выключаем скрипт, убираем параметр. Повредить они не должны (если только не --max-active-webgl-contexts=1, ломающий переодевалку в битве), но кто знает... 

 

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

 

 

Для скачиваемого клиента (работает, но с оговоркой)
 

Скрытый текст

 

Если вы играете через скачиваемый клиент и не хотите переходить на Chrome, есть простой способ - запускать клиент с параметром --max-active-webgl-contexts=число контекстов. Чем меньше, тем, разумеется, лучше. Но! Число контекстов будет влиять на то, сколько раз за одну битву можно зайти и выйти из гаража без серого экрана и перезапуска клиента. Два контекста - одно переодевание, три - два переодевания и т. д. Вот такой подводный камень. Можно установить один, если вы вообще не переодеваетесь или готовы перезапускать клиент после каждого переодевания в битве.

 

Все, что необходимо - изменить свойства ярлыка клиента, дописав параметр:

 

Скрытый текст

EBD793A.png

 

 

 

 

 

Для Chrome

 

Скрытый текст

 

В Chrome вышеуказанный способ тоже работает, но не всегда стабильно, поэтому я рекомендую воспользоваться моим фиксом, суть которого состоит в том, чтобы автоматически уничтожать неиспользуемые контексты. Как бонус - неограниченное количество переодеваний и потребление памяти в 3 контекста. Инструкция чуть посложнее:

 

1. Устанавливаете расширение User JavaScript and CSS, позволяющее запускать пользовательский скрипт на заданном сайте.

 

2. В настройках расширения создаем новое правило ("Добавить новый сайт"), сверху в поле адреса пишем tankionline.com, а в большом поле для скрипта JS слева - вот это:

 

Скрытый текст

HTMLCanvasElement.prototype.getContext_ = HTMLCanvasElement.prototype.getContext;

var storedContexts = [];

HTMLCanvasElement.prototype.getContext = function(contextType, contextAttributes) {

    var newContext = this.getContext_(contextType, contextAttributes);

    if (contextType == "webgl" || contextType == "webgl2") {

        newContext.numOfCalls = 0; newContext.lastNumOfCalls = 0;
        newContext.useProgram = function(program) { this.numOfCalls++;
            return this.__proto__.useProgram.call(this, program); };

        storedContexts = storedContexts.filter(function(context) { if(context.numOfCalls == context.lastNumOfCalls)
            { if(!context.isContextLost()) { context.getExtension("WEBGL_lose_context").loseContext(); }
            return false; } else { context.lastNumOfCalls = context.numOfCalls; return true; } });

        storedContexts.push(newContext);
    }

    return newContext;
};

 

3. Сохраняете правило и перезагружаете страницу с игрой. И, надеюсь, играете без критов. ;)

 

 

 

Уменьшение потребления видеопамяти (если ничего не помогло)

 

Скрытый текст

 

* Выключите сглаживание. Нет, так: ВЫКЛЮЧИТЕ СГЛАЖИВАНИЕ! Если у вас 4K+ монитор - тем более. Оно очень прожорливое, причем его аппетиты прямо зависят от разрешения окна браузера или клиента. С 4K монитором и окном во весь экран выключение сглаживания освобождает 500 Мб в лобби для скачиваемого клиента и 1 Гб (!) - для Chrome.

 

* Ладно, совсем без сглаживания плохо, поэтому можно снизить его качество параметром --webgl-msaa-sample-count=2

 

* Для скачиваемого клиента, пользователей карт NVIDIA и операционной системы Windows, а также любителей консольного мыльца кинематографичности доступен "легкий" метод сглаживания - FXAA. Активируется в панели управления NVIDIA, точную инструкцию не скажу - не все же мне самому делать. ;)

 

* Снизьте настройки графики. Это было скучно.

 

 

Ну, в общем, все. Спасибо всем за внимание, отдельно @Fizzika, @HACTEHKA_KX, @Power.Bank, @Serene - за тестирование и информацию, позволившую разобраться, что вообще происходит.

 

Изменено пользователем Niced
  • Нравится 13
  • Спасибо 4
  • Хаха 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Тему бы в закреп :rolleyes:

Хотя, зная некоторых товарищей мочераторов, повезёт, если всё это не потрут.

  • Нравится 3

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Благодаря тебе я снова начал играть в танки. Я даже на х6-8 не заходил из-за этой фигни. Лучший!

Час играю, вопросов нет!

Изменено пользователем Bloody_Jaguar

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В 19.09.2020 в 02:47, Serene сказал:

Штука работает, approved by Serene, ага

А как сделать чтобы и ограничение на фпс тоже снятое было?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не, бесполезное это всё! Годится только для тех, у кого кроме клиента для танчиков на компе ничего больше нет;)

  • Нравится 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

9 минут назад, Kat-Go сказал:

Годится только для тех, у кого кроме клиента для танчиков на компе ничего больше нет;)

Не понимаю, как это связано. :heh:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

14 минуты назад, Niced сказал:

Не понимаю, как это связано. :heh:

думаю имелся в виду конфиг очень старого компа у которого всего лишь 3 гб оперативки и даже одна карта не способна прогрузиться

  • Нравится 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

22 минуты назад, Power.Bank сказал:

думаю имелся в виду конфиг очень старого компа у которого всего лишь 3 гб оперативки и даже одна карта не способна прогрузиться

Так фикс исправляет утечку видеопамяти, приводящую к серому экрану. Оперативная память - совсем другая история.

 

(Если речь не идет об интегрированной графике, конечно.)

 

Изменено пользователем Niced

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

  • Нравится 6

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Отыграл 7 битв подряд и ни одного крита. До этого 3 битвы и критическая ошибка выскакивала. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

2 часа назад, ALEX-KOROLEV сказал:

А как сделать чтобы и ограничение на фпс тоже снятое было?

Флаг --disable-frame-rate-limit по прежнему работает )

34 минуты назад, Dobraya_Diana сказал:

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

Если он не хочет, то может подождать фикса от разработчиков. Треды в этом разделе - для узкого круга лиц %)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Только что, Serene сказал:

Флаг --disable-frame-rate-limit по прежнему работает )

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1 минуту назад, ALEX-KOROLEV сказал:

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

А ты используешь скачанный клиент и пишешь в ярлыке --max-active-webgl-contexts=3 ?

Тогда просто допиши --disable-frame-rate-limit туда же через пробел

  • Спасибо 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1 hour ago, Power.Bank said:

думаю имелся в виду конфиг очень старого компа у которого всего лишь 3 гб оперативки и даже одна карта не способна прогрузиться

Можно конечно понимать как угодно, но игра то виснет на мощных компьютерах тоже. Для каких машин это вообще сделано и спозиционировано?) Это смешно, на улице 2020 год;)

  • Нравится 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

парень  молодец)  всем  сторонникам  хлама  пять  объяснил как  его  лечить  явой))))

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо автору, только грустно немного, что это находят и чинят юзеры, а не разрабочтики) 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

6 часов назад, Kolbaser сказал:

Спасибо автору, только грустно немного, что это находят и чинят юзеры, а не разрабочтики) 

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

 

Изменено пользователем iurik88

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Почему разрабы не додумались сделать удаление неиспользуемых контекстов? Очевидно же: выделил память, использовал её, а потом почистить надо. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1 минуту назад, danilasoq сказал:

Почему разрабы не додумались сделать удаление неиспользуемых контекстов? Очевидно же: выделил память, использовал её, а потом почистить надо. 

¯\_(ツ)_/¯

 

Вопрос, зачем они в принципе плодят контексты, каждый раз загружая ресурсы в видеопамять.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

27 минут назад, Niced сказал:

зачем они в принципе плодят контексты

со слов Fizzika из темы про решето, так работает react js. при каждом выходе в лобби создается новый canvas, из-за того что объекты неизменяемы, а вместе с ним и новый контекст

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

5 minutes ago, Guard_of_world said:

Игроки сами вынуждены танцевать с бубном над "современным стабильным" клиентом HTML5 :D

Так ресурсов же нет у бедных разработчиков чтоб наладить всё.Вот тратить ресурсы на новые пушки и корпуса,краски есть,а вот на это уже нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

22 hours ago, Power.Bank said:

со слов Fizzika из темы про решето, так работает react js. при каждом выходе в лобби создается новый canvas, из-за того что объекты неизменяемы, а вместе с ним и новый контекст 

Ну я немного про другое говорил (то касалось объектов в UI), всё-таки контекст webgl это таки unmanage-штука, которая явно создаётся где-то вручную. Но это не точно :D

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 начальник:  мы наконец-то нашли денег для программистов, и они завершили XTML5

 работник   но он же сильно глючит, может нужно еще доделать

 н:  если клиент работает, то все прекрасно, глюки потом поправим

р:  может найдем адекватного программиста, заплатим ему нормально и он починит?

н: наф деньги впустую тратить, лучше себе премию выпишу-_- ошибки игроки поправят:Dесли хотят играть без глюков

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

н : уволить работника за глупые идеи:ph34r:

 

  • Нравится 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Интересный у вас тут кружок по интересам.

Молодец, Нисёд! :ok:

On 9/19/2020 at 12:51 AM, Niced said:

...

3. Сохраняете правило и перезагружаете страницу с игрой. И, надеюсь, играете без критов. ;)

Но, всё-таки оборачивать каждый gl-рендер шейдером со счетчиком - это жоска!

Кто это использует с выключенным фпс лимитом, как у вас фпс не проседает?

На слабых cpu, инпут лэйтенся, должна ощутима подрасти во всяком случае.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Гость
Эта тема закрыта для публикации сообщений.
  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×
×
  • Создать...