InSim протокол: взаимодействие с LFS¶
InSim — это сетевой протокол прикладного уровня, разработанный для взаимодействия внешних приложений с симулятором гонок Live for Speed (LFS). Протокол позволяет сторонним программам в реальном времени получать телеметрию автомобилей, данные о состоянии трассы, результаты заездов, а также отправлять в игру команды управления, включая создание сообщений в чате, управление гоночной сессией и администрирование сервера.
¶История и назначение
Протокол InSim был создан разработчиками LFS (компания Scawen Roberts) в начале 2000-х годов как открытый интерфейс для интеграции симулятора с внешним миром. Основной целью являлось предоставление возможности создания сторонних утилит: от простых программ отображения телеметрии до полноценных гоночных менеджеров и серверных платформ. В отличие от закрытых протоколов других гоночных игр, InSim изначально документировался и распространялся бесплатно, что способствовало формированию активного сообщества разработчиков.
¶Архитектура и принцип работы
InSim работает поверх протокола UDP (User Datagram Protocol). Взаимодействие строится по клиент-серверной модели, где сервером выступает игровой процесс LFS (в режиме хоста или выделенного сервера), а клиентом — внешнее приложение. Приложение устанавливает соединение с игрой, отправляя специальный пакет инициализации (IS_ISI), в котором указываются версия протокола, порт для приёма данных и флаги интересов (какие типы событий необходимо получать).
¶Пакетная структура
Все данные передаются в виде бинарных пакетов фиксированной структуры. Каждый пакет начинается с заголовка, содержащего размер, тип и идентификатор. Основные типы пакетов включают:
- IS_VER — проверка версии протокола;
- IS_TINY — служебные команды (например, запрос состояния);
- IS_SMALL — компактные сообщения (смена погоды, времени суток);
- IS_STA — полная информация о состоянии гонки (круг, позиции, время);
- IS_MCI — телеметрия автомобилей (координаты, скорость, ускорение, состояние шин);
- IS_MSO — сообщения чата;
- IS_NLP — информация о пит-стопах и текущем круге.
Протокол использует механизм подписки: приложение указывает, какие типы данных ему нужны, что снижает нагрузку на сеть и процессор.
¶Возможности и применение
InSim предоставляет разработчикам широкий спектр возможностей:
¶Получение данных
- Точная телеметрия всех транспортных средств на трассе (до 100+ машин на сервере).
- Результаты кругов, времена, штрафы, информация о соединении игроков.
- Данные о конфигурации сервера, погоде, времени суток.
¶Управление и модификация
- Отправка сообщений в игровой чат (включая системные уведомления).
- Создание и удаление узлов связи (connection) для многосессионных инструментов.
- Принудительное управление гоночной сессией: старт, рестарт, завершение гонки.
- Администрирование: кик, бан, смена пароля, изменение настроек сервера на лету.
¶Расширенные сценарии
- Гоночные менеджеры: автоматические стартовые процедуры, контроль пит-лейна, управление квалификацией.
- Телеметрические анализаторы: программы для отображения графиков скорости, торможения, угла поворота руля в реальном времени.
- Трансляционные плагины: интеграция с OBS и другими системами для отображения позиций гонщиков на стримах.
- Статистические сервисы: сбор данных для веб-сайтов с результатами соревнований.
¶Версии и совместимость
Протокол развивался вместе с игрой. Наиболее распространённой является версия InSim 4 (используется в LFS с 2005 года), которая поддерживает все современные функции. Существуют также расширения, такие как OutSim (передача телеметрии из игры во внешнее приложение с высокой частотой) и OutGauge (передача данных на внешние приборные панели). Версии протокола обратно совместимы: приложения, написанные для более старых версий, обычно работают с новыми серверами при условии корректной инициализации.
¶Сообщество и инструменты
Вокруг InSim сформировалось сообщество разработчиков, созданы библиотеки для различных языков программирования: InSim.NET (C#), pyinsim (Python), LFSLib (C++). Эти библиотеки абстрагируют бинарную структуру пакетов, предоставляя объектно-ориентированный интерфейс. Актуальная документация по протоколу поддерживается в официальном руководстве LFS и на специализированных форумах.
¶Ограничения и особенности
Протокол не предназначен для передачи графики или звука — он работает только с текстовой и числовой информацией. Задержка передачи данных зависит от качества сетевого соединения, однако для локальных серверов она минимальна. InSim не предоставляет доступа к внутренней памяти игры, что исключает создание читов, но ограничивает глубину модификации. Кроме того, для использования InSim на сервере необходимо, чтобы он был запущен с включённой опцией «Allow InSim».
¶Литература и источники
- Официальная документация Live for Speed: «InSim Manual» (входит в дистрибутив игры).
- LFS Manual: раздел «InSim and OutSim».
- Спецификации библиотеки InSim.NET (репозиторий проекта).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


