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

Форум

Управление мышкой


Soul_Taker1

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

@r_Bodyan4 Просто ради эксперимента. Можно запустить Танки в Хроме, открыть консоль (Control+Shift+J), вставить туда скрипт и нажать Enter, а в игре очень быстро шевелить мышкой? У меня выводится число 120+. 

 

Скрипт:

 

let a = 0;
addEventListener("mousemove", () => a++);

setInterval(() => { console.log(a); a = 0; }, 1000);

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


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

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

300+

 

Все время? А если не в игре, а просто на пустой странице?

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


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

2 minutes ago, Niced said:

Все время? А если не в игре, а просто на пустой странице?

Скрипт работает корректно, это точно)
Если медленно мышью поворачиваю то около 100+, если как обычно играю - 250-350

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


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

15 минут назад, r_Bodyan4 сказал:

Скрипт работает корректно, это точно)

Тем нечему работать некорректно. :heh:

 

Но вообще это странно. От чего зависит количество ивентов? От модели мыши? Вот и верь этим статейкам. @Serene, примешь участие в эксперименте?

 

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

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


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

6 minutes ago, Niced said:

От чего зависит количество инвентов?

Полез в конфиг мышки - у меня стояла проверка скорости 500Гц, поставил 125Гц, перестало улетать)
@Niced ты мой герой))

Слишком крутая мышь для танков)

Изменено пользователем r_Bodyan4
  • Нравится 1

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


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

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

От модели мыши?

У меня это максимум частота опроса (500 стоит)

Вполне может зависеть от возможностей процессора ещё, хром сильно адаптивная к ресурсам штука

2 минуты назад, r_Bodyan4 сказал:

Слишком крутая мышь для танков)

Слишком крутая мышь для этого процессора %)

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


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

3 минуты назад, Serene сказал:

Вполне может зависеть от возможностей процессора ещё, хром сильно адаптивная к ресурсам штука

3 минуты назад, Serene сказал:

Слишком крутая мышь для этого процессора %)

Что-то он недоадаптировал. :rolleyes: И где же хваленая упаковка ивентов?

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


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

3 minutes ago, Serene said:

Вполне может зависеть от возможностей процессора ещё, хром сильно адаптивная к ресурсам штука

Скорее всего это приколы Хрома. Процессор работает на 55% нагрузки когда 250Гц(на этой частоте тоже не лагает) т.е. не нагружен. Если я ставлю 500Гц - проц уходит в 60%, на 1000Гц - 80%. Но это же всё равно не 100%, не должно ничего лагать. На тыще так вообще такая жесть твориться в танках, словами не передать

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


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

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

Но это же всё равно не 100%

Не-100% загрузка процессора не значит что "не должно лагать" - у нас по большей части однопоточное приложение

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

И где же хваленая упаковка ивентов?

Не знаю, а где она? Мне тоже интересно. И это я ещё на 800 dpi сижу (с g502 hero)

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

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


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

3 минуты назад, Serene сказал:

у нас по большей части однопоточное приложение

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

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


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

15 minutes ago, Serene said:

Вот тебе и инпут лаг, чем больше фпс - тем чаще они обрабатываются (и меньше очередь), даже если ты это на экране не видишь. И инпут "более гладкий" получается.. теоретически должен получаться

Так а причём тут фпс? У меня на высоком точно так же пролетает. Если говорить про данный случай то видимо хром (или всё же танки :)) не успевает обработать все ивенты и делает с ними какую-то магию, часть либо теряется, либо прилетает как один ивент пожирнее и происходит пролёт на сумму той же потерянной части.

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


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

40 минут назад, Serene сказал:

Вот тебе и инпут лаг, чем больше фпс - тем чаще они обрабатываются (и меньше очередь), даже если ты это на экране не видишь. И инпут "более гладкий" получается.. теоретически должен получаться

Еще бы время отрисовки периодически не подскакивало до 6-7 мс на довольно мощном компе... :(

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


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

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

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

Потому что из-за звука вкладка остаётся активной?)

Ну и отсутствие тредов (каких-то там JS воркеров) ты сам можешь посмотреть в девконсоли

7 минут назад, r_Bodyan4 сказал:

У меня на высоком точно так же пролетает

Это не "высокий", прям совсем) Ну, там процессор ещё не справляется, обычно высокая частота опроса увеличивает сильно нагрузку на него (даже на примере ясно как именно)

23 минуты назад, r_Bodyan4 сказал:

происходит пролёт

Я думаю что разработчики бы рады дискардить бОльшую часть из ~ 500/60 ивентов, прилетающих им перед каждым кадром, но вряд ли у них есть такая возможность %)

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


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

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

Таких игр почти нет. Хотя даже так - таких игр нет

Удивлю, но последнее время дикая куча классических игрушек (дум, контра, квака, вот) переехала (силами народных умельцев в основном)

За примерами в личку, но они гугляться по названию + "в браузере"

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


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

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

Удивлю

Да ты не то чтобы удивишь, я эти демки ещё лет 7 назад видела - кажется, это вообще первое что переносят в браузер (ещё задолго до этого на stage3d переносили кваку) %)

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


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

19 минут назад, Serene сказал:

Потому что из-за звука вкладка остаётся активной?)

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

 

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

 

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

 

a: 2.198083333981534, w: 6.9249999942258
a: 2.376583333777186, w: 5.559999990509823
a: 2.5435833347728476, w: 5.025000005844049
a: 2.650500001376107, w: 5.445000002509914

 

А иногда даже так:
 

a: 2.057750000434074, w: 9.534999990137294

 

Изредка внезапно:


a: 3.152083332921999, w: 52.1349999908125

 

Но чаще всего где-то так:

 

a: 1.9969999993918464, w: 3.6899999977322295
a: 1.9345833333015132, w: 3.2749999954830855
a: 1.7520833328793135, w: 2.459999988786876
a: 1.7441666680194128, w: 2.5599999935366213

 


Вот тебе и 240 ФПС...

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


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

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

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

"Худшее" не очень интересно, потому что GC, на этом фоне оно выглядит очень хорошо. Репрезентативнее какие-нибудь 0.1% и 1% худших

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

Но чаще всего где-то так:

тем более чуть ли не "идеально", хотя фиг знает чем ты там занимался, может ночной александровск в закрытке разглядывал стоя на месте %)

 

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

Ну, рендеринг в такой ситуации точно не выполняется. Привет, поломка управления.

А мне не удалось себе сломать управление. Такие дела. 

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

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


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

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

"Худшее" не очень интересно, потому что GC, на этом фоне оно выглядит очень хорошо.

Какой GC? Мы же знаем, что GC выполняется отдельно от кода. А это чисто время выполнения функций, переданных requestAnimationFrame.

 

4 минуты назад, Serene сказал:

Репрезентативнее какие-нибудь 0.1% и 1% худших

Да по-быстрому состряпал, можно и подзаморочиться.

 

5 минут назад, Serene сказал:

тем более чуть ли не "идеально", хотя фиг знает чем ты там занимался, может ночной александровск в закрытке разглядывал стоя на месте %)

Нет, это все из одной ММ битвы.

 

Как бы то ни было, на 120 Гц мониторе пики еще не будут заметны (ну, не 52 мс конечно), выше - уже будут довольно часто. Особенно в начале битвы.

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


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

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

Мы же знаем, что GC выполняется отдельно от кода. А это чисто время выполнения функций, переданных requestAnimationFrame.

Что значит "отдельно от кода"? В какие-то моменты (между рендерингом или может даже во время) этот GC же выполняется (тем более он там же какой-то хитрый конкурентный) и вызывает задержки

Хотя на фоне общего оверхеда от браузера это наверное даже ерунда

 

И что значит "время выполнения функций"? Обычно подразумевается что оно равно времени между двумя подготовленными кадрами, но в нашем случае это может быть не так? 

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


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

2 минуты назад, Serene сказал:

Что значит "отдельно от кода"? В какие-то моменты (между рендерингом или может даже во время) этот GC же выполняется (тем более он там же какой-то хитрый конкурентный) и вызывает задержки

Значит, что GC незачем тревожить код JS, если он может втиснуться между. Я же тебе давал ссылку. :rolleyes: Хотя он теоретически может потревожить выполнение, но что-то я сомневаюсь, что он это так нагло делает, вызывая подобные скачки. Особенно учитывая, что затем идет куча почти idle time до следующего фрейма.

 

8 минут назад, Serene сказал:

И что значит "время выполнения функций"? Обычно подразумевается что оно равно времени между двумя подготовленными кадрами, но в нашем случае это может быть не так? 

То и значит. :heh: Это те функции, занимающиеся отрисовкой и внутриигровой логикой (хотя это спорно), и без выполнения которых поезд дальше не двинется, т. е. фреймбуферы не переключатся, если этого не произойдет вовремя (за 16.6 мс в вакууме) - на экран уйдет старый кадр и пользователь это заметит.

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


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

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

Я же тебе давал ссылку.

Я не помню что ты мне давал. Ну я и без этого начиталась этого всего и, релейтед: в ориноко много оптимизаций которые сокращают задержку StW, а ещё какой-нибудь хром старается воткнуть именно StW между рендером кадров. 

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

То и значит. :heh: 

Ну так это довольно бессмысленные значения, хотя ты почему-то сомневаешься что вся логика в эти функции упакована)

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

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


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

    Опять Найсет какую-то дичь пофиксил. Монстр :heh:

2 hours ago, Niced said:

Что-то он недоадаптировал. :rolleyes: И где же хваленая упаковка ивентов?

    Там апи другое, чтобы получть буффер ивентов надо подписываться на "pointermove". И потом че-то с ним делать.
    А клиент ТО обрабатывает обычный "mousemove". Собственно в той заметке и пишут, что в таком случае может возникать лишнее давление на cpu.

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


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

Вот уж не думал, что моя тема побудит людей на всяческие изыскания)

11 час назад, r_Bodyan4 сказал:

Полез в конфиг мышки - у меня стояла проверка скорости 500Гц, поставил 125Гц, перестало улетать)

Это самое, не подскажешь, как мне в конфиг залезть? ._.

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


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

10 часов назад, Serene сказал:

Я не помню что ты мне давал.

https://blog.chromium.org/2015/12/smarter-garbage-collection-for-smoother.html

 

10 часов назад, Serene сказал:

Ну так это довольно бессмысленные значения, хотя ты почему-то сомневаешься что вся логика в эти функции упакована)

Для того, чтобы продемонстрировать суть, а именно боль игры на 240 Гц мониторе, этого достаточно. Время между началами подготовки будет больше - здесь к бабке ходить не надо. К тому же, чтобы время между подготовками было не 16.6 мс, нужно снимать лимит, и ты будешь гарантированно измерять еще и GC паузы. А я хотел всего-навсего измерить то, что блокирует дальнейшую отрисовку страницы - а это те самые функции, переданные requestAnimationFrame. После их выполнения браузер волен дальше композайтить страницу в другом потоке, который GC не затрагивает.

 

10 часов назад, DieHard_5 сказал:

Там апи другое, чтобы получть буффер ивентов надо подписываться на "pointermove". И потом че-то с ним делать.

Блин, это называется "смотрю в книгу, вижу..." :heh: Ну теперь все прояснилось.

 

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

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


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

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

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

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