- 09.10.2026 4 коммита
-
-
Nikitos создал
-
Nikitos создал
-
Nikitos создал
Пересобраны снимки dist для linux-aarch64, macos-arm64 и windows-x86_64 (бинарники, архивы, AGENTS.md, README, контрольные суммы) и поднята версия проекта в CMakeLists.txt до 0.1.25. Co-Authored-By:
Claude Sonnet 5.5 <noreply@anthropic.com> -
Nikitos создал
- Исправлены мёртвые кнопки каталога: стили полос прокрутки в theme.rcss (без них RmlUi схлопывал содержимое overflow:auto в ширину 0). - Новая тема, навигация по группам, экраны Шаблоны и Сборки движка, Debug/Package. - Студии данных на общем хосте: Tilemap, Particle, Collision/Physics, Parallax, Font/Text, Audio, Input; плюс RmlUi Studio и DevTools. Форматы — JSON version:1. - r2d-sdk: templates, new, engines; нативные валидаторы новых форматов (паритет с JS проверен на 2912 правках); импорт OBJ + MTL в Baker. - Движок: виртуальная мышь агента доходит до RmlUi; hot reload игнорирует .r2d-*. - Те...
-
- 08.10.2026 34 коммита
-
-
Nikitos создал
-
Nikitos создал
-
Nikitos создал
-
Nikitos создал
-
Nikitos создал
-
Nikitos создал
-
Nikitos создал
-
Nikitos создал
-
Nikitos создал
- Загрузчик glTF: узлы (мировые матрицы), skins (inverseBind), JOINTS_0/WEIGHTS_0, VRM 0.x и 1.0 - bake-re2d --type character: 10 костей Re2D, сокеты кистей, владение по весам скина, отчёт о неоднозначности (SDK_BAKE_SKIN_AMBIGUOUS), сопоставление выражений с эмоциями - Отказы вместо угадывания: SDK_BAKE_CHARACTER_NO_HUMANOID, SDK_BAKE_HUMANOID_INCOMPLETE - GUI Baker: тип Character, *.vrm в реестре, панель VRM/владения/выражений - Тесты на синтетическом VRM (реальный VRoid-файл не проверялся); docs/SDK.md, handoff, changelog Co-Authored-By:
Claude Sonnet 5.5 <noreply@anthropic.com> -
Nikitos создал
- r2d-sdk bake-re2d: разбор GLB/glTF, оси Re2D, Coordinate Fit, Auto Unwrap / Existing UV, PNG v2 + character.json + отчёт - Re2D Baker в SDK: параметры, панель Coordinate Fit, превью настоящим Re2DSprite, переход в Studio - тестовые props (crate, barrel, lamp, chair) и негативные модели; детерминированный результат Co-Authored-By:
Claude Sonnet 5.5 <noreply@anthropic.com> -
Nikitos создал
- sdk/tools/re2dsprite-studio.js: вид (yaw/pitch, клипы, эмоции, варианты, стиль), поверхность (ID/XYZ/покрытие/владелец), скелет и сокеты - r2d-sdk: validate re2dsprite.character, re2d-info / re2d-debug / re2d-sample; декодер PNG v2 - паритет валидаторов C и рантайма (82 правки), роундтрип сохранения побайтно - src/highlevel/rotsprite.js: relativeAsset сохраняет «/» (модели по абсолютному пути) Co-Authored-By:
Claude Sonnet 5.5 <noreply@anthropic.com> -
Nikitos создал
- sdk/tools: Sprite Studio (кадры, пивоты, метаданные, undo/redo, нарезка сеткой) и Animation Studio (теги, просмотр рантаймом) - sdk/lib: модель атласа, общая сессия, каноническое сериализование (байты как у C) - r2d-sdk: atlas-grid / atlas-format / atlas-info, валидатор sprite.atlas (SDK_ATLAS_*), stb_image - движок: hot reload следит и за *.atlas.json - тесты: C, qjs, CLI и приёмочный sdk_classic2d_test (отдельный процесс игры перезапускается сам) Co-Authored-By:
Claude Sonnet 5.5 <noreply@anthropic.com> -
Nikitos создал
- sdk/: приложение SDK (проекты, Asset Browser, каталог инструментов, запуск/сборка, документация, диагностика) - sdk/native: C-бэкенд r2d-sdk (tools/assets/project/projects/validate/run/build) - $.sdk + src/sdk_host.c: мост инструментов по project.json toolHost - RmlUi: value/rect/click/attr, цель события для делегирования - тесты: C, qjs, агентские; docs/SDK.md, docs/highlevel/sdk.md Co-Authored-By:
Claude Sonnet 5.5 <noreply@anthropic.com> -
Nikitos создал
-
-
Nikitos создал
-
Nikitos создал
-
-
Nikitos создал
PHILOSOPHY/ARCHITECTURE/agent rules/HIGH_LEVEL_API describe the C -> $ scheme; docs/API.md moves to docs/internal/NATIVE.md (internal, excluded from release AGENTS.md); docs gate plugin and links updated. $ gains what games used to take from engine.*: .angularVelocity(), .mass(), .allowSleep(), $.sound.channel(ch), $.debug.render(). The method-name list in _CONTRACT.md is regenerated from the live engine (345 names). Co-Authored-By:
Claude Opus 5.5 <noreply@anthropic.com> -
Nikitos создал
drawWorld draws <text> nodes itself (measure on change, glyphs in walk order); static tilemap layers and particle emitters write into the batch via drawTiles/drawParticles; drawUI renders ui.label/ui.panel with a C-side HUD text queue shared with JS callers; widget ticks pick anchor, container and theme candidates with a native filter. Adds $.debug.memory(). native_passes_test covers all of it byte for byte. Release, 2000: text 7.2 -> 1.8 ms, ui.label 4.7 -> 2.7, tilemap 1.9 -> 1.0, particles 3.2 -> 2.3. Co-Authored-By:
Claude Opus 5.5 <noreply@anthropic.com> -
Nikitos создал
Simple node tweens with built-in easing run entirely in C (state, easing table ported 1:1, writes incl. body position); JS resolves promises by id. Effect timers (shake/flash/iframes) also native. Godot-style tween scenarios stay in JS but skip per-frame totalDuration, per-frame target dispatch and for-of iterators. nodes.c disables FMA contraction so results match QuickJS bit for bit (caught by native_passes_test). tween:2000 10.3 -> 2.9 ms; 2000 simple tweens 1.2 -> 0.04 ms per frame. Co-Authored-By:
Claude Opus 5.5 <noreply@anthropic.com> -
Nikitos создал
The registry index (all/by_tag/by_class/facets) is built in C; nodes keep a class_list array mirroring the classes Set. Constant node defaults move to Node.prototype, tag colours are computed once per tag, addClass has a regexp-free fast path, colour strings are cached. Multi-node .remove() compacts the registry once; single drops search from the end. churn:2000 6.2 -> 3.4 ms, $.batch:2000 5.1 -> 3.4 ms (Release). Co-Authored-By:
Claude Opus 5.5 <noreply@anthropic.com> -
Nikitos создал
Body sync, world events, mouse hover, world sort and batch assembly of plain nodes run in C, reading node fields via cached atoms (~4 ns/read). Special nodes are handed back to JS through a callback, so frame order is unchanged; native_passes_test compares C and JS frames byte for byte. The tilemap Y-sort hook is now active only with a ysort map. Release, 2000 nodes: sprites 6.9 -> 2.1 ms, bodies 6.6 -> 2.3, tweens 10.3 -> 4.2, $.batch 13.5 -> 5.1. Co-Authored-By:
Claude Opus 5.5 <noreply@anthropic.com> -
Nikitos создал
engine is captured by src/highlevel/native.js and deleted from globalThis after $ is installed; the module loader refuses r2d/* internals to game code. Agent eval sees engine only for the duration of the call. Adds $.startScene, $.gfx.white, $.time.perfNow; demos, game, web scene and fixtures migrated to $. Co-Authored-By:
Claude Opus 5.5 <noreply@anthropic.com> -
-
Nikitos создал
-
Nikitos создал
-
Nikitos создал
-
Nikitos создал
-
Nikitos создал
Узлы вида Re2D с картиночными тегами рисуются плоскими картинками на полу, лицом к камере: основания проецируются одним нативным вызовом, записи сортируются от дальних к ближним (детерминированно), затухают в тумане. Для <rotsprite> Re2D ставит .re2dPose(yaw, pitch) так, как модель видит камера: при обходе вокруг персонажа он плавно поворачивается. Поза квантуется (poseStep 3°), синтезов за кадр не больше poseBudget (4): pixel-стиль ~1.3 мс, anime ~11 мс на синтез — цифры замера в docs/highlevel/re2d.md. Проверено на трёх костюмах маскота: поза совпадает с независимым расчётом, основание стоит в точке пола, ближний рисуется поверх дальнего, лицом/спиной кадры различаются. Co-Authored-By:
Claude Sonnet 5.5 <noreply@anthropic.com> -
Nikitos создал
<wall>, <floor>, <ceiling> вида Re2D рисуются через вёдра по (текстура, режим граней) одним engine.re2d.mesh на ведро; грань режется на ячейки по тайлу (текстуры меша аффинные), геометрия узла кэшируется. Текстура — обычный .sprite(path), верх стены/потолка — атрибут top. Под 2D-камерой пол и стены — план этажа, потолок скрыт. $.re2d.room() собирает комнату из обычных узлов со статическими телами стен. Тест по пикселям: границы поверхностей совпадают с независимой формулой (расхождение < 0.4 строки), плиты снаружи отбракованы, игрок упирается в стену, кадр детерминирован, текстуры накладываются. Найдена и закрыта ловушка: .sprite() после .size() превращал тонкую плиту в квадрат. Co-Authored-By:
Claude Sonnet 5.5 <noreply@anthropic.com> -
Nikitos создал
Фаза 1 — .kind(), $.kinds, константа Re2D ($.Re2D и глобальная). Вид узла — строка '2d' по умолчанию; хук в render.js — одно сравнение строк на узел. В prefab и снимок агента ключ kind пишется только для не-2D (сохранения 2D побайтово прежние). Замер 15 сцен до/после: расхождения в пределах шума. Фаза 2 — engine.re2d.* на C (re2d_math.c): view/project/unproject/mesh/sprite/ info, отсечение по ближней плоскости, обход граней, туман. Тест математики на C с санитайзерами и сверка в движке с независимой формулой (0.001 px). Фаза 3 — $.camera.kind(Re2D): yaw/pitch/eye/fov/fog/look/mouseLook/info, worldToScreen и screenToWorld через нативное ядро, snapshot/restore; engine. mouseLock и $.window.mouseLock; реплей записывает dx/dy мыши (аддитивно, записи 2D прежние). Проход вида ($.kinds.pass) в render.js, модуль re2d.js. Доработан гейт доков для чтения страницами. Co-Authored-By:
Claude Sonnet 5.5 <noreply@anthropic.com> -
-
Nikitos создал
-
- 07.10.2026 2 коммита