Перевод исходной страницы на английском языке для OmsiLaunch 0.1.0-beta3. Нормативной является английская страница: при расхождениях приоритет имеют английская страница и код.
На этой странице по коду перечислено всё, что в OmsiLaunch 0.1.0-beta3 имеет статус UNAVAILABLE, PARTIAL или является принятым риском, чтобы пользователи и интеграторы не опирались на поведение, которого продукт не обеспечивает. В каждой строке указаны ограничение, его стабильность, причина его существования и место, где оно описано подробно. Нормативной является английская документация; локализованные копии в docs/localized/ не поддерживаются на том же уровне и могут отставать (см. последний раздел).
Поддерживается только Omsi23004_692EBFBF (692EBFBF...6243); хеш Steam LAA 7DAB063D...D759 внесён в список разрешённых; его отпечаток и план проверены на контролируемой копии, но для игрового процесса требуется подлинная установка Steam (образ — исполняемый файл Steam с защитой DRM)
LAST_MAP_STATE (/last, WorldMode.LastMapState) не реализован; резервная подстановка .osn по метке времени никогда не выполняется
UNAVAILABLE (BI-006)
Диагностическое сообщение плана OL_E_CAPABILITY_UNAVAILABLE
Явные или системные дата, время и год (/date, /time, /year, new.date/new.time/new.year профиля, DateSpec/TimeSpec/YearSpec) передаются в спецификации, но делают план неисполнимым; плагин отклоняет режимы, отличные от Unset
Пресет погоды, ICAO и текущая реальная погода при запуске (/weather*, new.weather)
UNAVAILABLE (STATICALLY_PARTIAL, BI-003)
как выше
Модель транспортного средства игрока, окраска (repaint), HOF, бортовой номер, регистрационный номер при запуске (семейство /vehicle, PlayerVehicleSpec) разрешаются по каталогу контента, но не применяются; запрос этих значений делает план неисполнимым; детерминированное headless-назначение PlayerVehicle — будущее расширение
Остановка сеанса — это принудительное завершение: session.stop, пункт «End session» в трее (завершить сеанс), Ctrl+C и CloseAsync приводят к TerminateProcess. Процедура завершения OMSI не выполняется, OMSI не перезаписывает options.cfg и свои логи при выходе, а любое несохранённое состояние OMSI теряется. Это сделано намеренно: так OMSI не может перезаписать восстановленные файлы.
При закрытии консоли или выходе из системы у владельца есть бюджет 4 s на остановку и восстановление; всё оставшееся восстанавливается по журналу при следующем запуске
закрытие консоли проверено в runtime; выход из системы не проверялся
Аренда установки (lease) — это семафор Local\: один владелец на установку в пределах сеанса входа в систему; между пользователями не соблюдается; не освобождается, пока другой процесс удерживает дескриптор; любой процесс того же пользователя может удерживать имя
Восстановление после сбоя отклоняется (OL_E_INSTALLATION_BUSY), пока работает процесс OMSI, записанный в журнал, а для журнала без PID — любой Omsi.exe из этого корневого каталога
так задумано
как выше
Изначально отсутствовавший путь overlay, содержимое которого изменилось во время сеанса, блокирует восстановление (OL_E_RECOVERY_ABSENT_OWNERSHIP_MISMATCH) до ручной проверки
так задумано
как выше
Журналы, созданные до появления отпечатков владения, может закрыть только сеанс с идентичными запланированными байтами (OL_E_RECOVERY_ABSENT_OWNERSHIP_UNVERIFIED)
PARTIAL
как выше
Восстанавливаются только пути, которыми владеет сеанс. Собственные записи OMSI во время сеанса (options.cfg[last_map], когда ни один параметр не накладывает overlay на options.cfg, Texture\standard.ipr, кэши, laststn.osn, профиль водителя, логи) сохраняются, как после прямого запуска OMSI
Удаление устаревшего closecheck перед сеансом является окончательным (фиксируется, но не восстанавливается), когда SuppressStaleClosecheckWarning равно true
Нет перемещения ТС, нет пространственной перепривязки между тайлами, нет безопасного для ODE права на изменение трансформации; поля позиции доступны только для чтения
UNAVAILABLE (BI-008)
road-vehicle.read
camera.lock / camera.unlock требуют PlayerVehicle; у headless-запуска NEW_MAP его нет (его предоставляет сохранённая ситуация)
так задумано (BI-007)
RV-004
Runtime-изменения (time.set, camera.set, camera.lock, vehicle.variable.set, spawn, place-random, текстуры D3D) не записываются в журнал и не восстанавливаются
Слепое пятно отпечатка handle: объект того же класса и определения, пересозданный по тому же адресу между двумя чтениями списка, не распознаётся как устаревший; для времени жизни при естественном удалении (RV-002) нет безопасного способа воспроизвести его в runtime, оно покрыто офлайн-тестами
Результаты ограничены почтовым ящиком (mailbox) на 64 KiB: длинные списки усекаются (truncated=true); данные пикселей ограничены 48 KiB на один d3d.texture.update
Канал с одним запросом в полёте: один запрос за раз на сеанс; занятый слот даёт OL_E_RUNTIME_CHANNEL_BUSY; идентификаторы запросов нельзя использовать повторно
Телеметрия — это слот последнего значения: всплески чаще, чем выборка хоста раз в 100 ms, могут терять промежуточные события (порядковые номера позволяют различать одинаковые последовательные события; разорванные выборки пропускаются)
Сброс устройства D3D наблюдался в runtime (resetting, restored, инвалидация поколения); отдельный переход lost воспроизвести не удалось, потому что устройство OMSI сразу перешло в DEVICENOTRESET
Результаты ограниченных списков (операции timetable.*.list, vehicle.variables.list, vehicle.string-variables.list) возвращают не больше строк, чем помещается в runtime-слот на 64 KiB; остальные строки не входят в ответ, при этом truncated=true, а returned_count меньше (аудит документации BUG-05). В этом выпуске постраничной выборки нет
timetable.logs.read, road-vehicles.list, humans.list, vehicle.constants.list и vehicle.curves.list не являются ограниченными: результат больше слота завершается ошибкой OL_E_RUNTIME_RESPONSE_TOO_LARGE (ни для одной из них на протестированных картах не наблюдалось)
Самостоятельно сообщаемые строки подтверждения (PublicCapabilityRegistryRuntimeValidation, GetCapabilitiesAsyncEvidenceState) не были обновлены после раунда закрытия проверки в runtime: для camera.lock по-прежнему указано STATICALLY_VALIDATED, а для runtime.d3d.lifecycle.reset — IMPLEMENTED_NOT_RUNTIME_VALIDATED. Авторитетной является страница статус проверки в runtime
отставание документации, а не различие в поведении
Некоторые расширенные поля графа карты/тайлов/путей/объектов не предоставляются; runtime-читатели — это типизированные снимки, заблокированные проверкой профиля, и никогда не произвольный доступ к памяти
Чтение памяти внутри процесса выполняется по схеме «проверка, затем использование» на живом OMSI; одновременное изменение в OMSI между проверкой и чтением может дать несогласованный снимок (OL_E_RUNTIME_OPERATION_FAILED)
Модель доверия в пределах одного пользователя: именованный канал (named pipe) (CurrentUserOnly), отображения памяти handoff/телеметрии/runtime и семафор lease доступны любому процессу того же пользователя Windows. Такой процесс, прочитав session_id, может читать состояние, останавливать сеанс или выполнять runtime-операции.
Конечная точка управления существует только пока владелец находится в состоянии Running; во время запуска и после завершения сеанса клиент получает OL_E_NO_ACTIVE_SESSION (выход 4)
Если имя pipe уже занято другим процессом, владелец продолжает работу без конечной точки (ListenFault), а второй запуск может ошибочно сообщить OL_E_SESSION_ALREADY_ACTIVE
Хранятся данные 50 последних сеансов; более старая диагностика с префиксом сеанса удаляется при запуске нового сеанса
так задумано
как выше
JSON-вывод и диагностика содержат пути установки (RootPath, каталоги ресурсов, пути .itx)
так задумано (локальные данные)
Диалог сбоя сеанса в OmsiLaunchW.exe показывает в качестве сообщения полезную нагрузку сбоя от плагина (например, {"name":"world.failed",...}), а не предложение; строка Code: корректна
Нормативной документацией этого выпуска являются английские страницы в docs/. docs/localized/<locale>/ содержит переводы тех же страниц 0.1.0-beta3 (см. LOCALIZATION-MANIFEST.md); если перевод расходится с английским текстом, авторитетными являются английский текст и код. Перечисленные там исторические и устаревшие (legacy) страницы доступны только на английском.