• Nikitos's avatar
    Ассеты игры ищутся в каталоге игры (--game), а не только в каталоге движка
    · 1a1e6ab5
    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