
Новости
Плавное управление и сетевой код
Финальная часть рассказа о 0.11.5 — про то, как корабль стал слушаться мгновенно, серверные коррекции перестали телепортировать, скачки пинга больше не трясут всю сцену, а попадания засчитываются по тому, что ты видел на экране.
Плавность движения — одна из самых трудных вещей в сетевом экшене: между твоим экраном и сервером всегда лежит задержка, и её нельзя убрать, можно только спрятать. Это третий и финальный материал серии, в которой мы догоняем рассказ до версии 0.11.5, — и он про то, как мы прятали эту задержку, чтобы корабль ощущался живым.
Корабль слушается сразу
Раньше между нажатием клавиши и движением корабля висела задержка размером с твой пинг: жмёшь — и ждёшь, пока сервер подтвердит. На спокойном соединении это терпимо, но стоило пингу подрасти — и корабль начинал ощущаться ватным: команды словно доходили до него с запозданием.
Теперь клиент не ждёт ответа сервера, чтобы сдвинуть корабль: ввод применяется к нему мгновенно, а сервер лишь тихо подтверждает всё в фоне. Разгон, поворот, торможение происходят в тот же миг, когда ты их запросил, — управление перестало зависеть от того, далеко ли до сервера.
Мягкие коррекции
Раз корабль движется у тебя на экране раньше, чем об этом узнал сервер, две картины неизбежно немного расходятся. Вопрос в том, что происходит, когда сервер присылает свою, авторитетную версию. Раньше корабль просто прыгал на серверную позицию — резкий рывок, будто его дёрнули за нитку.
Теперь расхождение не выправляется одним скачком: корабль плавно сводится к тому месту, где ему полагается быть, за несколько кадров, и глаз рывка почти не ловит. Поворот при этом мы развели с позицией — поправка положения больше не подкручивает твой прицел вбок.
Отдельный, самый заметный случай — столкновения. Другие корабли и обломки показаны у тебя на экране с небольшой задержкой, по сути — чуть в прошлом. Раньше удар о них считался только на сервере: ты влетал в бота, который для тебя стоял на месте, корабль просто резко замирал, а реакция на контакт доходила лишь спустя задержку. Теперь клиент отыгрывает столкновение сразу, у тебя на экране: толчок ощущается мгновенно и физично, а картинка затем плавно сходится с серверной, без резкого возврата.
Плавнее при скачках пинга
Пинг почти никогда не бывает ровным: пакеты приходят с неравномерными паузами, а задержка то подскакивает, то снова оседает — это и называют джиттером. Чтобы показывать чужие корабли плавно, клиент держит картинку с небольшой задержкой и всё время подстраивает её под текущий пинг. Раньше он делал эту подстройку рывками, целыми кадрами: при каждом изменении пинга сцена дёргалась мелкими ступеньками, будто её тянет туда-сюда.
Теперь клиент ведёт подстройку плавно — вместо ступенек он мягко подтягивает картинку, и заметить это почти нельзя. Ступенчатая тряска при скачках и восстановлении пинга ушла, движение остаётся ровным.
Попадания при задержке
В прошлый раз мы чинили саму пулю — чтобы быстрый снаряд не проскакивал сквозь цель между кадрами. Здесь речь о другом: о задержке между тобой и сервером. Из-за пинга то, что ты видишь, — это чуть-чуть прошлое, и честный вопрос сетевого боя звучит так: если на твоём экране враг был точно под прицелом, засчитается ли попадание, хотя на сервере он к тому моменту уже сдвинулся?
Теперь — да. В момент выстрела сервер отматывает мир назад, к тому кадру, который видел ты, и проверяет попадание по нему. Твой пинг больше не крадёт заслуженные попадания: куда целился на своём экране — туда и попал. У отмотки есть разумный предел, чтобы это оставалось честным и по отношению к тому, в кого стреляют.
Что дальше
На этом наш рассказ о версии 0.11.5 завершается. Все три части были про фундамент — клиент, бой и сеть, — на котором держится игра. Дальше начнём рассказывать уже про сами игровые механики, которые войдут в первую играбельную альфу: основной цикл вылетов в инстансы сектора, добычу ресурсов, бои с пиратами и другими игроками, трофеи и починку на станции, прокачку кораблей и модулей. Об этом — в следующих материалах.
Еще новости
Новый движок физики: повреждения и обломки
Под боем сменилась основа: попадания физически вырезают куски корпуса, оторванные части становятся настоящими обломками, а быстрые пули наконец попадают туда, куда должны.
Обновлённый интерфейс: живое меню и настройки
Главное меню превратилось в живую сцену с затмением и пролётами кораблей, а экран настроек собран заново — с категориями и понятными переключателями.
Новости на сайте, новый центр загрузки и блок новостей в лаунчере
Мы обновили сайт и лаунчер: появился полноценный раздел новостей, новые страницы поддержки и загрузки, а новости теперь доступны и прямо в лаунчере.