-
Nikitos создал
НАЙДЕНО ПРИ СБОРКЕ audm-neko В ОТДЕЛЬНОЙ ПАПКЕ. `--game <каталог>` выбирал точку входа (main.js), но `r2d_app_resolve_path` знал только `base_path` — каталог, откуда запущен движок. Поэтому игра в СВОЕЙ папке не находила ни одного своего ассета: `assets/tiles/hideout_atlas.png` резолвился в каталог движка и возвращал -1. Тайлмап при этом исправно держал коллизии (они в данных карты), так что игра «работала» — просто без картинок. ЧТО СДЕЛАНО: * R2DApp получил game_path (каталог игры) и r2d_app_set_game_path(); * `--game` теперь задаёт его (относительный путь делается абсолютным от cwd); * r2d_app_resolve_path: относительный путь сначала проверяется В КАТАЛОГЕ ИГРЫ (именно проверкой существования файла), и лишь потом склеивается с base_path. Так встроенные шрифты и иконки движка, которых в игре нет, остаются доступны, а игра может держать свои ассеты рядом с собой. ПРОВЕРКА: tests/agent/highlevel_game_path_test.py создаёт НАСТОЯЩУЮ игру во временном каталоге со своим PNG (генерируется без внешних библиотек), project.json и main.js, запускает её и убеждается, что `assets/probe.png` грузится (8x8, id >= 0), несуществующий ассет по-прежнему даёт -1, а абсолютный путь возвращает ту же текстуру. ДОКИ: API.md §6 — порядок поиска путей с объяснением, почему одного base_path мало. Полный qjs, агентские тесты (включая resource, atlas, mipmap, text — они грузят ассеты по путям), doc_coverage, doc_claims, быстрый набор — зелёные.
1a1e6ab5