-
Nikitos создал
Разобран §10. Главная проблема была не в самих числах, а в том, что игре нечем узнать, близко ли она к потолку, и что поведение при достижении разное — где-то -1, где-то исключение, где-то тихая потеря цвета. ЧТО СДЕЛАНО: * $.debug.limits() отдаёт ЗАНЯТОСТЬ, а не только потолки: вьюпорты, обработчики UI, события контакта, эффекты узлов, геймпады, касания. Раньше вьюпорты/обработчики/документы/контакты отдавали только максимум — то есть «где-то есть лимит», но не «сколько осталось»; * ИСПРАВЛЕН РАССИНХРОН СЛОЁВ: JS держал MAX_NODE_FX = 60, а C принимает 64 — четыре лишних эффекта JS терял молча. Теперь предел один (64, как в render.h); * новый r2d_render_viewport_live_count: занятость слотов вьюпорта; * API.md §14: ОДНА таблица всех лимитов с поведением при достижении (суставы, эффекты узла, шейдеры, вьюпорты, контакты, очередь текста, запросы к физике, группы звука, подписчики SDL, обработчики UI, документы, геймпады, касания) и указанием на $.debug.limits() для рантайма; * §10 переписан как «закрыто» с перечислением, что именно было не так, включая два пункта, о которых доки молчали: слоты вьюпортов берутся из общего бюджета 256 текстур, а «лимит 64 документа» не смертелен — слоты переиспользуются. Проверка (tests/agent/highlevel_limits_test.py, 15 проверок): отчёт отдаёт 23 поля, потолки совпадают с C (эффекты 64, вьюпорты 8, шейдеры 16, геймпады 4), занятость тел/суставов/вьюпортов РЕАЛЬНО растёт от действий игры, после destroy вьюпорта возвращается, занятость нигде не выше потолка. Полный набор qjs, агентские тесты, doc_coverage, doc_claims, быстрый набор — зелёные.
278cbe7d