Открыть сервис

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 →