@adiholick/nvstudio-mcp 2.4.0 â 2.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agent-plugin/rules/AGENTS.md +25 -0
- package/agent-plugin/skills/nvstudio-animation-vfx/SKILL.md +98 -1
- package/package.json +1 -1
- package/public/index.html +3 -3
- package/studio-plugin/Main.server.lua +1 -1
- package/studio-plugin/nvstudio_mcp.rbxmx +2 -2
- package/studio-plugin/ui_manager.lua +1 -1
|
@@ -114,5 +114,30 @@ Saat memeriksa, membuat, atau memodifikasi sendi karakter (`Motor6D` / `Weld`):
|
|
|
114
114
|
- **PENGELASAN ASSEMBLY SENJATA/PROP**: Gunakan `weld_assembly` untuk menyatukan seluruh komponen prop/senjata secara kaku ke part pegangan sebelum ditautkan ke karakter.
|
|
115
115
|
- **DOKUMENTASI REFERENSI LENGKAP**: lihat `docs/NV_RIG_ENGINE_GUIDE.md`.
|
|
116
116
|
|
|
117
|
+
## 11. Standar Dekomposisi VFX Prosedural & Protokol Creator Store Higienis (Anti-Shortcut Ground Truth)
|
|
118
|
+
Saat diminta merancang efek visual, sihir, aura, proyektil, atau skill anime/game (seperti Rasengan, Fireball, Katana Slash, Aura Super, dll):
|
|
119
|
+
- **HAKEKAT DASAR VFX**: Sejatinya sebuah efek visual di Roblox adalah gabungan dari gambar/decal/tekstur 2D yang diputar (`RotSpeed`), diskalakan (`SizeSequence`), diinterpolasi warnanya (`ColorSequence`), dipancarkan via `ParticleEmitter` / `Beam` / `Trail`, diperkaya pencahayaan dinamis (`PointLight`), dan disinkronkan dengan efek suara (`Sound`).
|
|
120
|
+
- **LARANGAN KERAS PENGGUNAAN MENTAH (ANTI-RAW MODEL SHORTCUT)**:
|
|
121
|
+
- Dilarang keras mengandalkan free model Creator Store yang disuntikkan secara mentah ke karakter atau workspace dengan script bawaannya yang rentan backdoor, malware, laggy loop, dan ukuran tidak proporsional.
|
|
122
|
+
- **KATEGORI CREATOR STORE RESMI YANG DIIZINKAN**:
|
|
123
|
+
- `Images` (Decals/Textures): Mengambil aset visual 2D murni (misal: *wind swirl*, *energy blade*, *magic ring*, *lightning sprite*, *flipbook sheet*) tanpa risiko kode eksekusi.
|
|
124
|
+
- `Visual Effects` (Sub-kategori `Particle Effects`): Mengambil preset partikel kompleks.
|
|
125
|
+
- `Audio`: Mengambil efek suara resmi (*charge whine*, *whoosh*, *blast*, *boom*).
|
|
126
|
+
- **PROTOKOL PEMBEDAHAN ASET (ASSET SURGERY PROTOCOL)**:
|
|
127
|
+
Jika mengimpor aset dari kategori `Visual Effects` atau Model:
|
|
128
|
+
1. **Audit Keamanan Mutlak**: Wajib panggil `scan_security` untuk memusnahkan seluruh script, backdoor, dan `require(id)`.
|
|
129
|
+
2. **Dekomposisi Visual**: Ekstrak HANYA objek visual murni (`ParticleEmitter`, `Beam`, `Attachment`, `TextureId`, sequences).
|
|
130
|
+
3. **Pemusnahan Container**: Hapus model pembungkus asli beserta script-scriptnya.
|
|
131
|
+
4. **Rekonstruksi Higienis**: Pasang partikel bersih ke anchor/rig karakter menggunakan `batch_create_instances` / `set_properties`.
|
|
132
|
+
5. **Simpan ke Database**: Simpan konfigurasi ke NV-VFX Database via `scan_vfx` agar menjadi aset mandiri portabel proyek.
|
|
133
|
+
- **BLUEPRINT 5-LAYER PROSEDURAL WAJIB**:
|
|
134
|
+
Setiap efek skill berkekuatan tinggi wajib dibangun dengan dekomposisi 5 layer:
|
|
135
|
+
1. *Core Anchor*: Part/Mesh Ball Neon transparan + Attachment pusat rotasi.
|
|
136
|
+
2. *Dynamic Emitters*: `ParticleEmitter` akselerasi inward (hisapan angin/energi) dengan `RotSpeed` tinggi.
|
|
137
|
+
3. *Ribbons & Blades*: `Beam` atau `Trail` silang (*X-Shape*) membentuk bilah tajam memotong.
|
|
138
|
+
4. *Atmosphere & Glow*: `PointLight` dinamis (pantulan ke tubuh karakter) + cincin shockwave tanah.
|
|
139
|
+
5. *Acoustic Feedback*: Objek `Sound` (Charge high-pitch whine + Burst impact).
|
|
140
|
+
|
|
141
|
+
|
|
117
142
|
|
|
118
143
|
|
|
@@ -108,7 +108,7 @@ Gunakan tool `scan_vfx` pada Project A untuk mengekstrak seluruh hierarki partik
|
|
|
108
108
|
|
|
109
109
|
---
|
|
110
110
|
|
|
111
|
-
##
|
|
111
|
+
## 6. Terapkan Efek Visual di Proyek Lain (`apply_vfx`)
|
|
112
112
|
|
|
113
113
|
Buka proyek baru (Project B), lalu panggil `apply_vfx` untuk menginstansiasi efek visual yang tersimpan dengan fidelitas 100%.
|
|
114
114
|
|
|
@@ -118,3 +118,100 @@ Buka proyek baru (Project B), lalu panggil `apply_vfx` untuk menginstansiasi efe
|
|
|
118
118
|
- `scale`: Skala ukuran efek (contoh: `1.5` untuk memperbesar 50%, `0.8` untuk mengecilkan 20%).
|
|
119
119
|
- `enabled`: Boolean opsional untuk menyalakan/mematikan seluruh emitter saat pertama dibuat.
|
|
120
120
|
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## 7. Dekomposisi Partikel Prosedural & Pembedahan Aset Creator Store (Asset Surgery)
|
|
124
|
+
|
|
125
|
+
DILARANG mengambil free model mentah dari Creator Store untuk efek skill/kemampuan game. Seluruh efek wajib dirakit secara prosedural atau dibedah secara higienis melalui alur berikut:
|
|
126
|
+
|
|
127
|
+
### A. Blueprint 5-Layer Prosedural Wajib:
|
|
128
|
+
1. **Core Anchor**: Objek bola neon (`Ball`, `Neon`, transparansi $0.2-0.4$) atau `Attachment` pusat gravitasi.
|
|
129
|
+
2. **Rotational Emitters**: `ParticleEmitter` berkecepatan putar tinggi (`RotSpeed = [400, 700]`) dengan akselerasi inward (menyedot ke pusat).
|
|
130
|
+
3. **Ribbons & Blades**: 4 `Beam` atau `ParticleEmitter` silang (*X-Shape*) untuk membentuk bilah energi berputar.
|
|
131
|
+
4. **Atmosphere & Shockwave**: `PointLight` dinamis (Range: 12, Brightness: 3, Color Cyan/Orange) + partikel cincin gelombang kejut (*Ring Wave*).
|
|
132
|
+
5. **Acoustic SFX**: Objek `Sound` (Charge whine frekuensi tinggi + Burst explosion impact).
|
|
133
|
+
|
|
134
|
+
### B. Pengambilan Aset Creator Store yang Sah & Higienis:
|
|
135
|
+
- **`Images` (Decals/Textures)**: Cari aset visual 2D (seperti *wind swirl*, *energy blade*, *magic ring*, *lightning sprite*). Salin `Texture` ID dan gunakan langsung di properti `Texture` dari `ParticleEmitter` atau `Beam`.
|
|
136
|
+
- **`Visual Effects` (Sub-kategori `Particle Effects`)**: Jika mengimpor preset partikel kompleks:
|
|
137
|
+
1. Jalankan `scan_security` untuk memastikan 100% bebas script backdoor dan `require(id)`.
|
|
138
|
+
2. Ekstrak hanya instance visual (`ParticleEmitter`, `Beam`, sequences).
|
|
139
|
+
3. Hapus model pembungkus asli dan seluruh script bawaan.
|
|
140
|
+
4. Rakit ulang ke rig karakter via `batch_create_instances`.
|
|
141
|
+
5. Simpan ke NV-VFX Database via `scan_vfx`.
|
|
142
|
+
|
|
143
|
+
### C. Contoh Blueprint Perakitan Prosedural (`batch_create_instances`):
|
|
144
|
+
```json
|
|
145
|
+
{
|
|
146
|
+
"instances": [
|
|
147
|
+
{
|
|
148
|
+
"className": "Attachment",
|
|
149
|
+
"parent": "Workspace.Dummy.RightHand",
|
|
150
|
+
"name": "RasenAnchor",
|
|
151
|
+
"properties": {
|
|
152
|
+
"Position": [0, -1.2, 0]
|
|
153
|
+
},
|
|
154
|
+
"children": [
|
|
155
|
+
{
|
|
156
|
+
"className": "Part",
|
|
157
|
+
"name": "CoreOrb",
|
|
158
|
+
"properties": {
|
|
159
|
+
"Shape": "Ball",
|
|
160
|
+
"Size": [1.2, 1.2, 1.2],
|
|
161
|
+
"Material": "Neon",
|
|
162
|
+
"Color": [0, 0.85, 1],
|
|
163
|
+
"Transparency": 0.25,
|
|
164
|
+
"CanCollide": false,
|
|
165
|
+
"Anchored": false
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
"className": "ParticleEmitter",
|
|
170
|
+
"name": "InwardSwirl",
|
|
171
|
+
"properties": {
|
|
172
|
+
"Rate": 60,
|
|
173
|
+
"Lifetime": [0.3, 0.5],
|
|
174
|
+
"Speed": [1, 3],
|
|
175
|
+
"RotSpeed": [400, 800],
|
|
176
|
+
"Acceleration": [0, 0, 0],
|
|
177
|
+
"Color": [
|
|
178
|
+
[0, [0.4, 0.9, 1]],
|
|
179
|
+
[1, [0.9, 1, 1]]
|
|
180
|
+
],
|
|
181
|
+
"Size": [
|
|
182
|
+
[0, 1.8, 0],
|
|
183
|
+
[1, 0.2, 0]
|
|
184
|
+
],
|
|
185
|
+
"Transparency": [
|
|
186
|
+
[0, 0.8, 0],
|
|
187
|
+
[0.5, 0.1, 0],
|
|
188
|
+
[1, 1, 0]
|
|
189
|
+
]
|
|
190
|
+
}
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"className": "PointLight",
|
|
194
|
+
"name": "AmbientGlow",
|
|
195
|
+
"properties": {
|
|
196
|
+
"Color": [0, 0.8, 1],
|
|
197
|
+
"Range": 14,
|
|
198
|
+
"Brightness": 3.5,
|
|
199
|
+
"Shadows": true
|
|
200
|
+
}
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
"className": "Sound",
|
|
204
|
+
"name": "ChargeSFX",
|
|
205
|
+
"properties": {
|
|
206
|
+
"Volume": 0.85,
|
|
207
|
+
"Looped": true,
|
|
208
|
+
"PlaybackSpeed": 1.15
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
]
|
|
212
|
+
}
|
|
213
|
+
]
|
|
214
|
+
}
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
|
package/package.json
CHANGED
package/public/index.html
CHANGED
|
@@ -1156,7 +1156,7 @@
|
|
|
1156
1156
|
</nav>
|
|
1157
1157
|
|
|
1158
1158
|
<div class="sidebar-footer">
|
|
1159
|
-
<span class="badge-v2" id="pkg-version">v2.4.
|
|
1159
|
+
<span class="badge-v2" id="pkg-version">v2.4.1</span>
|
|
1160
1160
|
<span style="font-size:10px; opacity:0.6;">Model Context Protocol</span>
|
|
1161
1161
|
</div>
|
|
1162
1162
|
</aside>
|
|
@@ -1484,7 +1484,7 @@
|
|
|
1484
1484
|
<div class="page" id="page-about">
|
|
1485
1485
|
<div class="about-section">
|
|
1486
1486
|
<div class="about-hero">
|
|
1487
|
-
<h2>nvstudio-mcp <span class="v2-chip" id="about-version-chip">v2.4.
|
|
1487
|
+
<h2>nvstudio-mcp <span class="v2-chip" id="about-version-chip">v2.4.1</span></h2>
|
|
1488
1488
|
<p>Jembatan pintar berbasis <strong>Model Context Protocol (MCP)</strong> yang menghubungkan AI Agent (Antigravity IDE, Cursor, Claude Desktop, Windsurf) secara langsung ke dalam <strong>Roblox Studio</strong>.</p>
|
|
1489
1489
|
<div class="about-links">
|
|
1490
1490
|
<a class="about-link" href="https://github.com/Adiholick/nvstudio-mcp" target="_blank">
|
|
@@ -1499,7 +1499,7 @@
|
|
|
1499
1499
|
</div>
|
|
1500
1500
|
|
|
1501
1501
|
<div class="about-card">
|
|
1502
|
-
<h3>ð Fitur Baru v2.4.
|
|
1502
|
+
<h3>ð Fitur Baru v2.4.1</h3>
|
|
1503
1503
|
<ul>
|
|
1504
1504
|
<li><strong>ðĶī NV-Rig Engine:</strong> Rigging headless presisi $O(1)$ untuk R6, R15, dan Custom Rig. Menyediakan inspeksi sendi (<code>inspect_rig</code>), pemindahan poros C0/C1 simultan anti-dislokasi (<code>edit_rig_joint</code>), auto-rigging instan (<code>auto_rig</code>), dan assembly welding senjata/prop (<code>weld_assembly</code>).</li>
|
|
1505
1505
|
<li><strong>ðŽ NV-Animation Engine:</strong> Pembuatan animasi karakter halus alami (Walk, Slash, Punch, Idle, IK) langsung menjadi <code>KeyframeSequence</code> resmi dengan interpolasi Bezier (Cubic/Quad) dan penegakan batas anatomis aman tanpa glitch.</li>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
-- ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
|
|
2
|
-
-- NVStudio MCP Plugin v2.4.
|
|
2
|
+
-- NVStudio MCP Plugin v2.4.1
|
|
3
3
|
-- Arsitektur: Dual-Mode WebSocket Duplex (Port 3055/ws) + Fallback Long-Polling
|
|
4
4
|
-- Plugin auto-connect saat dimuat via WebSocket native, dengan fallback otomatis
|
|
5
5
|
-- ke HTTP stream jika WebSocket tidak tersedia di environment Roblox Studio ini.
|
|
@@ -976,7 +976,7 @@ end
|
|
|
976
976
|
<BinaryString name="Tags"></BinaryString>
|
|
977
977
|
<token name="RunContext">0</token>
|
|
978
978
|
<ProtectedString name="Source"><![CDATA[-- ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
|
|
979
|
-
-- NVStudio MCP Plugin v2.4.
|
|
979
|
+
-- NVStudio MCP Plugin v2.4.1
|
|
980
980
|
-- Arsitektur: Dual-Mode WebSocket Duplex (Port 3055/ws) + Fallback Long-Polling
|
|
981
981
|
-- Plugin auto-connect saat dimuat via WebSocket native, dengan fallback otomatis
|
|
982
982
|
-- ke HTTP stream jika WebSocket tidak tersedia di environment Roblox Studio ini.
|
|
@@ -5584,7 +5584,7 @@ function UIManager.init(pluginInstance, studioId)
|
|
|
5584
5584
|
|
|
5585
5585
|
-- Version
|
|
5586
5586
|
local versionLabel = Instance.new("TextLabel")
|
|
5587
|
-
versionLabel.Text = "v2.4.
|
|
5587
|
+
versionLabel.Text = "v2.4.1"
|
|
5588
5588
|
versionLabel.Font = Enum.Font.Gotham
|
|
5589
5589
|
versionLabel.TextSize = 11
|
|
5590
5590
|
versionLabel.TextColor3 = Color3.fromRGB(120, 120, 130)
|
|
@@ -95,7 +95,7 @@ function UIManager.init(pluginInstance, studioId)
|
|
|
95
95
|
|
|
96
96
|
-- Version
|
|
97
97
|
local versionLabel = Instance.new("TextLabel")
|
|
98
|
-
versionLabel.Text = "v2.4.
|
|
98
|
+
versionLabel.Text = "v2.4.1"
|
|
99
99
|
versionLabel.Font = Enum.Font.Gotham
|
|
100
100
|
versionLabel.TextSize = 11
|
|
101
101
|
versionLabel.TextColor3 = Color3.fromRGB(120, 120, 130)
|