WEPPY

Sync Dua Arah

Aturan sinkronisasi dua arah antara proyek lokal dan Studio, struktur direktori, penanganan konflik, dan cara menggunakan riwayat.

Sync adalah fitur yang menghubungkan status Roblox Studio dengan file lokal, sehingga AI dapat membaca dan memodifikasi seluruh konteks proyek secara konsisten.

Mengapa Sync Penting

Tanpa Sync, AI hanya dapat menilai berdasarkan sebagian kode yang ditempelkan dalam percakapan. Dengan mengaktifkan Sync, AI bekerja berdasarkan keseluruhan proyek sehingga hal-hal berikut menjadi lebih mudah.

  • Menerapkan refaktor secara konsisten di beberapa skrip
  • Mengidentifikasi dengan cepat perubahan berisiko berdasarkan riwayat perubahan
  • Menjaga arah yang jelas antara Studio dan lokal sebagai standar

Cara Kerja Dasar

Alur Sync — Pohon Studio yang disinkronisasi ke file lokal

  1. Full Sync: Sinkronisasi awal pohon instans Studio ke mirror lokal
  2. Incremental Sync: Hanya mencerminkan perubahan selanjutnya melalui pemantauan perubahan
  3. Pelacakan History/Status: Memeriksa perubahan apa yang dicerminkan kapan dan ke arah mana

Data Sync dibuat di bawah {projectRoot}/weppy-project-sync/place_{placeId}/explorer. WEPPY juga mencatat sourcemap per place di {projectRoot}/weppy-project-sync/place_{placeId}/sourcemap.json, dan mempertahankan file representatif root di {projectRoot}/weppy-project-sync/sourcemap.json.

Struktur Direktori Proyek dan Multi Place

WEPPY Sync membuat direktori weppy-project-sync/ di bawah root proyek dan menyimpan mirror tree terpisah per Place.

weppy-project-sync/
├── sourcemap.json             # Sourcemap representatif root (jalur yang direkomendasikan luau-lsp)
├── .sync-config.json          # Konfigurasi global (dibagikan oleh semua Place)
├── place_123456/              # Direktori per Place
│   ├── explorer/              # Mirror workspace (format nested v2)
│   │   ├── Workspace/
│   │   │   ├── _tree.json
│   │   │   ├── Part/
│   │   │   │   └── Part.props.json
│   │   │   └── MyScript/
│   │   │       └── MyScript.server.luau
│   │   └── ServerScriptService/
│   │       └── _tree.json
│   ├── sourcemap.json         # Sourcemap per Place
│   ├── .sync-meta.json        # Metadata Place
│   └── .sync-index.json       # Indeks hash (version: 2)
└── place_789012/              # Place lain
    └── ...

Setiap Place memiliki direktori place_XXXXX/ uniknya sendiri. Pada tier Pro, hingga 3 Place dapat disinkronisasi secara bersamaan, dan Place yang jarang digunakan dieviksi dari memori sesuai kebijakan LRU (data disk tetap dipertahankan). Berkat struktur ini, status sync tidak tercampur meskipun Anda berpindah antara beberapa game dalam root proyek yang sama.

Menjelajahi Data Sync di VSCode

Dengan menginstal ekstensi WEPPY Roblox Explorer, Anda dapat menjelajahi pohon instans yang tersinkronisasi dalam bentuk yang sama persis dengan Roblox Studio di dalam VSCode. Explorer membaca file sync yang dibuat di sini, dan jika server MCP lokal sedang berjalan, informasi status sync dan direction secara real-time ditampilkan tambahan.

WEPPY Roblox Explorer — Menjelajahi pohon instans yang tersinkronisasi di VSCode

  • Menampilkan pohon layanan/instans dengan ikon kelas Roblox
  • Klik file skrip untuk langsung mengeditnya
  • Periksa perubahan/konflik dengan badge status Sync

Basic vs Pro

ItemBasicPro
Arah sinkronisasiStudio → LocalDua arah
Direction per tipeTidak didukungDidukung (Scripts / Values / Containers / Data / Services)
Apply Mode per tipeTidak didukungDidukung (Auto / Manual)
API kueri status/riwayatTidak didukungDidukung (status_current_place, history, progress)
Penggunaan alat manage_syncTidak didukungDidukung
Multi Place SyncTidak didukungDidukung (maks. 3 Place)

Target Sinkronisasi dan Aturan Pengecualian Default

Layanan target sinkronisasi default:

  • Workspace
  • Lighting
  • ReplicatedStorage
  • ServerStorage
  • ServerScriptService
  • StarterGui
  • StarterPlayer
  • StarterPack
  • ReplicatedFirst
  • SoundService
  • Chat
  • LocalizationService

Item yang dikecualikan secara default:

  • Kelas: Terrain, Camera
  • Jalur yang dilarang demi keamanan: CoreGui, CorePackages, RobloxScript, RobloxScriptSecurity

Direction dan Apply Mode

Direction (Arah sinkronisasi per tipe)

  • forward: Studio → Local
  • reverse: Local → Studio
  • bidirectional: Dua arah

Tipe dikelola terpisah sebagai scripts, values, containers, data, services.

Apply Mode (Cara penerapan perubahan reverse)

  • manual: Pengguna mengkonfirmasi dan menerapkan sebelum direfleksikan ke Studio
  • auto: Perubahan yang terdeteksi diterapkan secara otomatis

Pada Pro, Anda dapat mengontrol alur kerja secara lebih detail dengan mengatur Direction/Apply Mode yang berbeda per tipe.

Panduan Aksi manage_sync (Pro)

AksiDeskripsiArgumen Utama
status_current_placePeriksa status sinkronisasi Place yang terhubung saat ini-
historyKueri riwayat perubahanplaceId, query.limit, query.offset
directionsKueri Direction per tipeplaceId
read_fileBaca file yang tersinkronisasiplaceId, instancePath
write_fileTulis file yang tersinkronisasiplaceId, instancePath, content
progressPeriksa kemajuan/throughput real-timeplaceId

Alur Kerja yang Direkomendasikan

1) Memulai dengan Aman

  • Pertama, selesaikan Full Sync untuk menjadikan status saat ini sebagai titik referensi.
  • Di awal, operasikan dengan penerapan manual untuk mengurangi risiko perubahan.

2) Membuat Perubahan Bersama AI

  • “Periksa status Sync, lalu ringkaskan hanya perubahan berisiko berdasarkan riwayat perubahan terbaru”
  • “Refaktor hanya skrip di sisi ServerScriptService terlebih dahulu, dan simpan riwayat perubahannya”

3) Menyelesaikan Konflik

Ketika perubahan terdeteksi di kedua sisi Studio dan lokal selama sinkronisasi dua arah, layar penyelesaian konflik berikut akan muncul.

Local Changes Detected — Opsi penyelesaian konflik (Studio Priority / Local Priority / Per-File)

  • Studio Priority: Timpa menggunakan status sisi Studio sebagai standar
  • Local Priority: Terapkan ke Studio menggunakan file lokal sebagai standar
  • Per-File: Pilih sisi mana yang diprioritaskan secara individual per file

4) Memulihkan saat Terjadi Masalah

  • Lacak perubahan terbaru dengan history
  • Periksa file yang diperlukan dengan read_file
  • Terapkan konten yang akan dipulihkan dengan write_file dan verifikasi kembali status Studio

Format File (v2 nested directory)

Setiap instans Roblox disimpan sebagai direktorinya sendiri, dengan file meta yang terletak di dalamnya:

explorer/
├── Workspace/
│   ├── _tree.json
│   ├── Part/
│   │   └── Part.props.json
│   ├── MyScript/
│   │   └── MyScript.server.luau
│   └── Coins/
│       └── Coins.value.json

Konvensi penamaan file:

  • Properti: {Name}/{Name}.props.json
  • Skrip: {Name}/{Name}.server.luau / .client.luau / .module.luau
  • Nilai: {Name}/{Name}.value.json

Instans dengan nama yang sama dibedakan dengan menambahkan sufiks ~N pada direktori (contoh: Part~2/Part.props.json). Jika nama mengandung ~, karakter tersebut di-escape menjadi ~~ (contoh: Part~2Part~~2/). Aturan Odd-Count Tilde: hanya diinterpretasikan sebagai sufiks collision ketika jumlah tilde pada ~+N di akhir adalah ganjil.

Integrasi luau-lsp

WEPPY Sync dapat secara otomatis menghasilkan file sourcemap yang dibutuhkan luau-lsp, sehingga Anda dapat menggunakan fitur editor yang mengenali Roblox tanpa harus mengkonfigurasi proyek Rojo secara terpisah.

Setelah Full Sync selesai, WEPPY menghasilkan file berikut:

  • Sourcemap Place: weppy-project-sync/place_<id>/sourcemap.json
  • File representatif root: weppy-project-sync/sourcemap.json

Ketika luau-lsp membaca sourcemap WEPPY, hal-hal berikut akan ditingkatkan:

  • Pelengkapan otomatis game.*
  • Navigasi berdasarkan skrip yang tersinkronisasi
  • Resolusi require di antara skrip yang tersinkronisasi

Metode Konfigurasi yang Direkomendasikan

  1. Jalankan Full Sync sekali agar WEPPY membuat weppy-project-sync/sourcemap.json.
  2. Atur konfigurasi sourcemap luau-lsp editor agar mengarah ke weppy-project-sync/sourcemap.json.
  3. Jika Anda dapat menonaktifkan pembuatan Rojo otomatis di klien yang Anda gunakan, atur luau-lsp.sourcemap.autogenerate ke false.

Contoh konfigurasi VSCode:

{
  "luau-lsp.sourcemap.enabled": true,
  "luau-lsp.sourcemap.autogenerate": false,
  "luau-lsp.sourcemap.sourcemapFile": "weppy-project-sync/sourcemap.json"
}

weppy-project-sync/sourcemap.json mengikuti place representatif proyek saat ini. Jika Anda ingin menggunakan place tertentu secara tetap, atur luau-lsp agar langsung membaca weppy-project-sync/place_<id>/sourcemap.json dari place tersebut.