Pull to refresh

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

Reading time11 min
Views62K

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

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

Читать далее
Total votes 27: ↑27 and ↓0+27
Comments20

Как достичь производительного рендеринга в браузере

Reading time10 min
Views5.5K

Один великий китайский философ сказал: «каждый разработчик должен понимать, как исполняется его программа». Что ж, давайте разбираться. Говорить будем про рендеринг и его производительность.

Меня зовут Глеб Михеев, я CTO Skillbox Holding, а также руководитель программного комитета FrontendConf. Уже как 19 лет работаю в коммерческой разработке. Сегодня я расскажу, как устроен браузерный конвейер поставки кадров на экран и что нужно знать каждому разработчику, чтобы его интерфейсы были отзывчивыми, не лагали, а анимации были плавными и выдавали 60fps даже при высокой вычислительной нагрузке на main thread.

Читать далее
Total votes 17: ↑16 and ↓1+15
Comments1

Как работа с ресурсами вызывает микрофризы

Reading time10 min
Views5.5K

Думаю, каждый из нас периодически сталкивается с непонятными микрофризами при взаимодействии с, казалось бы, простым UI…

Просто скролишь список, и тут — бац! Лагнуло! Сегодня я бы хотел разобрать одну из множества причин такого поведения — работу с ресурсами. Мы разберёмся, в каких случаях работа с ресурсами может стать проблемой. Почему это происходит и как лучше всего от этого избавится.

Читать далее
Total votes 23: ↑22 and ↓1+21
Comments9

Генератор энтропии Seeder 1.1 существенно уменьшает лаги на Android-устройствах

Reading time2 min
Views141K
В старых версиях Android некоторые системные компоненты и JVM активно считывали большие объёмы случайных чисел из псевдоустройства /dev/random. Это устройство предоставляет интерфейс к системному генератору случайных чисел (ГСЧ), который выводит шумы из драйверов устройств и других источников в «хаотичный» пул. На старых версиях Android иногда возникали проблемы с наполнением пула случайных чисел. В случае опустошения пула возникали лаги UI, пока пул не наполнялся. В новых версиях Android проблему с лагами UI решили, но не до конца: всё-таки иногда возникают характерные задержки.

Многие пользователи считали, что лаги интерфейса объясняются недостаточной производительностью CPU, на самом деле это не так. Проблема именно в истощении пула случайных чисел.

Один из разработчиков с форума XDA-Developers перекомпилировал rngd, так что пул случайных чисел каждую 1 секунду пополняется из пула псевдослучайных чисел /dev/urandom. Результат — потрясающее ускорение интерфейса Android с почти полным исчезновением лагов! Chrome, карты и другие тяжеловесные приложения теперь мгновенно переключаются между задачами.
Читать дальше →
Total votes 116: ↑95 and ↓21+74
Comments216

Обновления Андроид: почему Cyanogen настолько быстрее Google/OEM-производителей?

Reading time4 min
Views193K
От переводчика:

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

UPD. По просьбе трудящихся ...
Лучше бы вы это до «ката» написали...
Вобщем, пишу до «кота»..., чтоб так сказать убрать «замануху»...
Дописывать в заголовке «Вопрос риторический — Ответа нет...» все таки не буду — думаю оно все же правильней, если свое мнение каждый составит или выскажет сам.
Для себя я частично ответил (жирно выделив ответ в Прим. переводчика в самом конце). Более полный ответ думаю сформулирует сообщество.

image

ENG. Android Updates: Why Is Cyanogen So Much Faster Than Google/OEMs?
GER. Android Updates: Warum ist Cyanogen so viel schneller als Google/OEMs?



Мой коллега Эрик был несколько лет активным членом на xda-developers и мог «вживую» видеть до чего отпадные, интересные и впечатляющие вещи разработчики там смогли поставить на ноги.

У него возникло два вопроса:
1. Почему Google и OEM-производители не нанимают xda разработчиков, чтобы быстрее выпускать андроид обновления;
2. Как удается Cyanogen'у быть настолько быстрее, чем Google и OEM, когда дело доходит до выпуска обновлений и оптимизации/улучшения Андроида?

Что такое CyanogenMOD?


Для тех кто не знает, кто такой Cyanogen — он изначально является крестным отцом Android, если речь заходит о пользовательских ПЗУ (custom ROMs) для Android. Соответственно CyanogenMOD — фундамент для custom ROMs. Steve Kondik (aka Cyanogen) и его команда создали основу для большинства других существующих Android ROMs. Не было бы Cyanogen, и сцена моддинга и рутинга выглядела бы определенно иначе.
Так например, команда позволила установить Ice Cream Sandwich на некоторые Android смартфоны, которые были названы компанией Google или OEM-производителями как несовместимые с последней версией мобильной операционной системы. И с многими предыдущими версиями дело обстояло точно так-же.

Кроме того Cyanogen удалось установить ICS на различные актуальные устройства за 4 месяца до первых изготовителей и операторов мобильной связи.
Огромное достижение то, чего уже добилась команда разработчиков и что она делает до сих пор.

Это осознал в какой-то момент и Samsung, т.к. Cyanogen был нанят в августе 2011 года, чтобы работать непосредственно на южнокорейскую компанию. CustomROMs — нечто гораздо большее, чем «просто» быстрые и нередко лучшие, чем выпущенные Google и OEM-производителями, прошивки, потому что они часто еженедельно обновляются и предлагают при этом много больше функций, которые никогда не были частью официальной продукции.

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

Читать дальше →
Total votes 101: ↑77 and ↓24+53
Comments191

Анимация против лагов, или лучшая битва та, которой не было

Reading time4 min
Views29K
image

Замечали, когда только открываете веб-сайт, первые секунды всё тормозит? Скрол как-то не ровно работает, параллаксы скачут, а из анимации словно вырезали львиную долю кадров. Но очень скоро всё нормализуется. Не замечали такого? Взгляните на демо-страницу плагина, и сразу поймёте, о чем я.

Проблема в том, что динамика не может нормально работать, пока страница лагает. В качестве решения предлагаю плагин «Afterlag.js». Плагин позволяет отслеживать событие окончания лагов. Лаги прошли, включайте анимацию, тормозить не будет. А пока страница лагает, нечего и динамику запускать, только вид портить.
Читать дальше →
Total votes 38: ↑35 and ↓3+32
Comments41

Компенсация лагов для оружия в MechWarrior Online

Reading time12 min
Views17K


Задержка в сети (лаг) — это реальность, которую нужно учитывать в многопользовательских играх. Сообщениям, передаваемым через Интернет, требуется время, чтобы достичь точки назначения. В зависимости от маршрута и его длины передача этих сообщений может занять довольно долгое время. Это может негативно влиять на процесс игры, особенно в динамичных клиент-серверных играх, таких как FPS. То, что кажется очень простой задачей (стреляй, пытаясь попасть в цель), внезапно становится очень сложным в создании плавного игрового процесса для всех игроков. Думаю, не нужно говорить, что создавать многопользовательские игры сложно, при этом возникает множество проблем, которые разработчики должны решить. В этой статье я расскажу, как система вооружения MechWarrior Online справляется с лагом.
Читать дальше →
Total votes 49: ↑48 and ↓1+47
Comments18

Один день без JavaScript: что может пойти не так?

Reading time5 min
Views19K
image

Предлагаем вам перевод ироничной статьи Чарли Сонниэседж, специалиста по веб-разработке с уклоном в высоконагруженные приложения. В один прекрасный момент Чарли решила отключить в браузере JavaScript и посмотреть, что может пойти не так. На этот смелый «эксперимент» отважится далеко не каждый, поэтому давайте почитаем, что у нее получилось.

Я очень не люблю тех, кто полагается на хрупкий JavaScript для client-side, в то время как есть куча других альтернатив. Точно так же я не стану надеяться лишь на один сервис такси, когда еду в аэропорт на суперважный рейс. Если есть другие возможности — почему бы ими не воспользоваться?
Читать дальше →
Total votes 46: ↑28 and ↓18+10
Comments178