feat: ������������� 3D-�������� (BillboardGui/SurfaceGui) #12

Merged
min merged 1 commits from feature/01-billboard-3d-ui into main 2026-05-29 09:04:50 +00:00
Owner

������ 01 � BillboardGui/SurfaceGui

�����: 1 - ������ 4/������ �������/01_billboard_ui.md

���������: P0 � ��� ����� ����������/�������/����� ����������.

��� ������

  • BillboardUiManager.js � ����� ������ (533 ������): 4 ������� (shop-item, shop-purchase, banner, sign), 18 ������, DynamicTexture-������ � �����������/�����������/��������, UV-hit-test.
  • ����� ��� ��������� billboard � ��������� ���������� � plane-��� � GUI-��������� 512?320.
  • ��� ������ ����������: face: camera (BillboardGui-������, ������ ������� �� ������) � face: fixed (SurfaceGui-������).
  • ����-��������: PointerEventTypes.POINTERDOWN > ray-pick > UV > ������� > AABB ������. �������� � ���������� ��������� ��� ����� �������� ������.
  • Scripting API: game.billboard.set/update/onClick, game.scene.spawn('billboard', ...).
  • �������-�������� BillboardEditorModal.jsx � ����� canvas-������, 8 ������� ����������, ��������� ������, �������� �� 18 ������.
  • ��������� ���������� ������ �������������� ���������� ��� billboard-���������.
  • ������ prim-billboard � �������.
  • ����: RUBLOX_STUDIO_FUNCTIONS.md �1.25 (� minecraftia-����, ��������� ��������).

���-���� ������

  • ��� billboard � ������� ���������
  • ������� � 4 ��������� � ����� ������
  • game.scene.spawn('billboard',�), game.billboard.set/update/onClick
  • ��������� + ���������� + ������� ��������
  • ���� � ������ � ���������� ��������� + ��� �������� ������
  • ������������ (�1.25)
  • �������� ���� �������� ���������� � ������� ��� � ������
  • �������� ������� �� �������� 01_billboard_ui_*.jpg

����-����

  1. ������� studio.rublox.pro/edit > ����� ������.
  2. � ������� ���������� > ������ ���������� > ����� ������ �3D-��������� > �������� 4 � ���.
  3. �� ������ ���� > ��������� > �������������� ���������� > ������ shop-item > ��������� ������/���������/����.
  4. � ������ ����:
    game.billboard.onClick(ref, 'buy', () => {
      if (game.economy.spend(10000, 'upgrade')) {
        game.broadcast('upgrade', {});
      }
    });
    
  5. Play > ���������:
    • �������� ������ ��������� � ������
    • ���� � $10,000 ��������� �������
    • ����� 1 > 2 ����������� ��� ������������
    • ���������/���������� ��� �� ��������-�������

?? Generated with Claude Code

# ������ 01 � BillboardGui/SurfaceGui **�����:** `1 - ������ 4/������ �������/01_billboard_ui.md` **���������:** P0 � ��� ����� ����������/�������/����� ����������. ## ��� ������ - **`BillboardUiManager.js`** � ����� ������ (533 ������): 4 ������� (`shop-item`, `shop-purchase`, `banner`, `sign`), 18 ������, DynamicTexture-������ � �����������/�����������/��������, UV-hit-test. - **����� ��� ���������** `billboard` � ��������� ���������� � plane-��� � GUI-��������� 512?320. - **��� ������ ����������:** `face: camera` (BillboardGui-������, ������ ������� �� ������) � `face: fixed` (SurfaceGui-������). - **����-��������:** `PointerEventTypes.POINTERDOWN` > ray-pick > UV > ������� > AABB ������. �������� � ���������� ��������� ��� ����� �������� ������. - **Scripting API:** `game.billboard.set/update/onClick`, `game.scene.spawn('billboard', ...)`. - **�������-��������** `BillboardEditorModal.jsx` � ����� canvas-������, 8 ������� ����������, ��������� ������, �������� �� 18 ������. - **���������** ���������� ������ �������������� ���������� ��� billboard-���������. - **������** `prim-billboard` � �������. - **����:** `RUBLOX_STUDIO_FUNCTIONS.md` �1.25 (� minecraftia-����, ��������� ��������). ## ���-���� ������ - [x] ��� `billboard` � ������� ��������� - [x] ������� � 4 ��������� � ����� ������ - [x] `game.scene.spawn('billboard',�)`, `game.billboard.set/update/onClick` - [x] ��������� + ���������� + ������� �������� - [x] ���� � ������ � ���������� ��������� + ��� �������� ������ - [x] ������������ (�1.25) - [ ] �������� ���� �������� ���������� � ������� ��� � ������ - [ ] �������� ������� �� �������� `01_billboard_ui_*.jpg` ## ����-���� 1. ������� `studio.rublox.pro/edit` > ����� ������. 2. � ������� ���������� > ������ ���������� > ����� ������ �3D-��������� > �������� 4 � ���. 3. �� ������ ���� > ��������� > �������������� ���������� > ������ `shop-item` > ��������� ������/���������/����. 4. � ������ ����: ```js game.billboard.onClick(ref, 'buy', () => { if (game.economy.spend(10000, 'upgrade')) { game.broadcast('upgrade', {}); } }); ``` 5. Play > ���������: - �������� ������ ��������� � ������ - ���� � `$10,000` ��������� ������� - ����� `1 > 2` ����������� ��� ������������ - ���������/���������� ��� �� ��������-������� ?? Generated with [Claude Code](https://claude.com/claude-code)
min added 1 commit 2026-05-29 08:43:40 +00:00
feat: интерактивные 3D-таблички (BillboardGui/SurfaceGui)
Some checks failed
CI / Lint (pull_request) Failing after 7s
CI / Build (pull_request) Failing after 9s
CI / PR size check (pull_request) Successful in 15s
CI / Secret scan (pull_request) Successful in 2m40s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
3279d59f02
Задача 01 из 1 - Неделя 4/ЗАДАЧИ РУБЛОКС. P0-приоритет: без таблиц
с кнопками невозможны симуляторы, тайкуны, фермы.

Новое:
- engine/BillboardUiManager.js — 4 пресета (shop-item, shop-purchase,
  banner, sign), 18 иконок, DynamicTexture-рендер, UV-hit-test
- PrimitiveTypes: новый тип 'billboard' в категории 'gameplay'
- PrimitiveManager: case billboard в _createMeshForType (Plane), init
  через applyToMesh, billboardOpts в updateInstance
- BabylonScene: PointerEventTypes-handler для кликов с _isPlaying-чеком
  и pointer-lock поддержкой
- GameRuntime: команды billboard.set/update/onClick, callback через
  sandbox.sendEvent('billboardClick')
- ScriptSandboxWorker: пространство game.billboard.{set,update,onClick}
- BillboardEditorModal.jsx — модалка с живым canvas-превью, 8 готовых
  градиентов + кастомные пикеры, дропдаун из 18 иконок
- InspectorPanel: кнопка 'Редактировать табличку…' для billboard-примитива
- KubikonEditor: проброс модалки через onEditBillboard prop
- Icon.jsx: SVG prim-billboard

Два режима ориентации: 'camera' (BillboardGui-аналог, всегда смотрит
на игрока) и 'fixed' (SurfaceGui-аналог, прикреплён к поверхности).

Клик-детекция через ray-pick → UV → пиксели текстуры → поиск кнопки
по AABB; работает с пиксельной точностью даже при повороте камеры.

Документация: RUBLOX_STUDIO_FUNCTIONS.md раздел 1.25.

Тестовая игра 'Магазин апгрейдов' (4 таблички + банер + HUD) — МИН
соберёт в студии drag-n-drop'ом.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
min force-pushed feature/01-billboard-3d-ui from 3279d59f02 to c32914c819 2026-05-29 08:59:11 +00:00 Compare
min merged commit 6f8b654671 into main 2026-05-29 09:04:50 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: rublox/studio#12
No description provided.