Проанализированы все четыре пользовательских файла исходной ревизии cb90770143c300b8bcafe8b55296a43340ca6ec7. Служебный каталог .git не является материалом API. Сохранённые артефакты читаются целиком генератором; инструкции дампа интерпретируются только как построение таблиц данных, без запуска игрового кода.
| Файл | Результат |
|---|---|
README.md (исходный) |
Краткое описание находки и интересных подсистем. Утверждения о «полном API», оригинальных комментариях в байткоде и вырезанных механиках не подтверждаются сами по себе; README заменён справочной точкой входа. |
DespairEngine_API_FEAR3 |
3 686 строк; побайтовая копия luasense_decompiled.lua. Сохранена для совместимости, не учитывается повторно при подсчёте функций. |
luasense_decompiled.lua |
3 686 строк, 1 503 объявления функций, подготовка таблиц пространств имён. Все тела пустые. Параметры обозначены argN. Полного набора редакторских путей из дампа здесь нет. |
luasense_bytecode_disassembly.txt |
55 632 строки: заголовок, 52 603 инструкции корневого прототипа и сводки 3 025 дочерних прототипов. Содержит создание таблиц функций и справочных записей Editor. Тела дочерних прототипов не дизассемблированы подробно. |
В дампе 3 024 дочерних прототипа отмечены как body=RETURN; child#0 (GetCallTipInfo) отмечен как helper с 67 инструкциями. Следовательно, неверно считать абсолютно все исходные тела пустыми: пустой является именно предоставленная Lua-реконструкция. Текст не позволяет восстановить поведение helper.
Объединение 1 503 путей из заглушек и 3 002 ключей call-tip даёт 3 879 записей. Пересечение — 626 путей. Короткие имена (Player, Game.Player) и длинные (GameScript.Game.Player) учитываются раздельно: общность реализации автоматически не предполагается. Редакторские пути часто имеют описание, но не достоверную сигнатуру из Lua-реконструкции.
- Из аннотированных
LOADK,GETGLOBALиSETGLOBALизвлекаются доступные значения констант черезast.literal_eval. - Выполняется ограниченная модель восьми встречающихся инструкций: создание таблицы, загрузка константы, чтение/запись глобала, чтение/запись таблицы, ссылка на closure и возврат. Неизвестная инструкция вызывает ошибку.
- Неаннотированные константы представлены символами
@K[n]. Полные оригинальные имена полей из них не выдумываются. - Из единственной дочерней таблицы
Editorберутся строковые ключи call-tip и их вложенные данные. Сохраняются в JSON без потери структуры. - Имена функций и арность отдельно извлекаются из Lua-заглушек. Сопоставление с подсказками производится только по точному полному пути.
- Генерируются JSON, индекс и Markdown-страницы пространств имён. SHA-256 исходных артефактов фиксируют именно использованную версию данных.
В справочнике принята структурная интерпретация: @K[203] содержит описание функции, @K[202] — нумерованную таблицу параметров, @K[209] — имя параметра, @K[211] — описание параметра. Это вывод по структуре и содержимому, не восстановленные имена констант. Сырой объект доступен под каждой записью; дополнительные поля не отбрасываются. Порядок параметров подсказки не является подтверждением ABI, типов или возвращаемых значений.
- Строки описаний сохранены как данные call-tip, а не как доказательство сохранения обычных Lua-комментариев в байткоде.
- Заголовок заявляет Lua 5.1; бинарник в репозитории отсутствует, поэтому формат независимо не проверен.
- Нет доказательств полноты публичного или внутреннего API Despair Engine.
- Нет типов объектов, верифицированного жизненного цикла, среды выполнения, тестовой карты или рабочего SDK.
- Системы possession, tethering, scares и редакторские команды следует исследовать по имеющимся записям, но их наличие не доказывает, что они доступны в релизной игре.
- Автотесты проверяют извлечение и воспроизводимость справочника, а не работоспособность игровых вызовов.
Исходные артефакты намеренно не перемещены и не исправлены: они остаются проверяемой основой для последующих исследований.