Untuk studio pengembangan profesional, mengatur alat pihak ketiga dan berinvestasi dalam otomatisasi dapat secara dramatis meningkatkan produktivitas pengembang.Pendekatan awan pertama Roblox memiliki banyak keuntungan, tetapi memindahkan bagian tertentu dari alur kerja pengembangan ke luar awan dapat membantu tim yang lebih besar melacak perubahan seiring waktu, meninjau kode, dan menggunakan bahasa dan alat yang sudah mereka kenal.
Masalah sinkronisasi
Pada intinya, menggunakan alat eksternal dengan Roblox adalah masalah sinkronisasi :
- Anda ingin skrip Roblox Anda ada sebagai .luau file di disk sehingga Anda dapat menggunakan alat sendiri untuk bekerja di atasnya.
- Anda harus mendapatkan file Anda kembali ke proyek Roblox Anda setelah Anda selesai mengerjakannya.
- Jika orang lain mengubah file yang sama di antara waktu, Anda harus menangani konflik apa pun.
Untuk solusi keseluruhan untuk terasa tanpa batas dan otomatis, Anda perlu a) mendengarkan perubahan pada file dan b) mengintegrasikan perubahan ini kembali ke Studio.Dengan kata lain, Anda membutuhkan server dan plugin Studio, yang adalah cara Rojo memecahkan masalah ini.
Daripada pendekatan awan pertama Roblox, Rojo memungkinkan pendekatan "sistem file terlebih dahulu"Ini mengekstrak semua file skrip di proyek Anda ke file Luau.Kemudian menjalankan server.Plugin Rojo terhubung ke server untuk menyinkronkan file-file tersebut dengan Studio.
Pasang Rojo dengan Foreman
Anda dapat secara manual mengunduh dan menjalankan binary Rojo, tetapi pendekatan itu berisiko penggunaan pengembang yang berbeda di tim Anda menggunakan versi Rojo yang berbeda.Solusi yang lebih baik adalah menggunakan manajer alat seperti Foreman, yang menggunakan file konfigurasi - daftar repositori dan versi - untuk membuat proses instalasi dan upgrade konsisten di antara mesin.
Karena mengelola lingkungan pengembangan dasar Anda daripada paket dalam proyek Anda, Foreman lebih mirip dengan nvm daripada npm, tetapi perbandingan tidak sempurna.Sebuah file sederhana foreman.toml tampak seperti ini:
[tools]
rojo = { github = "rojo-rbx/rojo", version = "7.4.1" }
wally = { github = "UpliftGames/wally", version = "0.3.2" }
Kemudian Anda menginstal alat ini dengan foreman install .Selain file global foreman.toml , Foreman mendukung file per proyek, sehingga Anda dapat dengan mudah menggunakan versi berbeda dari Rojo, Wally, atau alat lain untuk proyek yang berbeda dan menyimpan seluruh tim Anda pada versi yang sama.
Ketika alat merilis versi baru, Anda kemudian secara eksplisit meningkatkan nomor versi di file .toml Anda, gunakan Foreman untuk melakukan upgrade, uji versi baru, dan turunkan jika menyebabkan masalah.Untuk perintah dan instruksi instalasi, lihat Foreman .
Jalankan Rojo
Setelah Anda menginstal Rojo dengan Foreman, apa yang benar-benar Anda instal adalah server Rojo. Langkah berikutnya adalah menginstal plugin Rojo untuk Roblox Studio:
rojo plugin install
Kemudian hasilkan struktur proyek untuk pengalaman baru Anda dan buat:
rojo init my-new-experiencecd my-new-experiencerojo build -o my-new-experience.rbxl
Alternatifnya, Anda dapat memindahkan pengalaman yang ada. Either way, setelah Anda memiliki proyek, mulai server Rojo:
rojo serve
Di Roblox Studio, buka file .rbxl yang baru saja Anda buat, mulai plugin Rojo, dan terhubung ke server yang sekarang berjalan, di mana Anda dapat mulai membuat perubahan di editor teks favorit Anda dan menyaksikan perubahan itu secara otomatis disinkronkan kembali ke Studio.
Proyek Rojo memiliki persyaratan nama tertentu untuk file, banyak opsi konfigurasi, dan beberapa batasan, semua yang ditutupi dalam dokumentasi Rojo.
Manajer paket
Roblox memiliki serangkaian API yang kuat yang termasuk, tetapi jika Anda ingin memanfaatkan paket perangkat lunak komunitas dengan cara yang konsisten dan dapat diulang, Anda membutuhkan manajer paket.Wally adalah pilihan populer.Anda dapat menginstalnya melalui Foreman, seperti Rojo.
Dalam direktori Rojo pengalaman Anda, jalankan wally init . Kemudian tambahkan paket yang diinginkan ke wally.toml . File mungkin terlihat seperti ini:
[package]
name = "my-home-directory/my-new-experience"
version = "0.1.0"
registry = "https://github.com/UpliftGames/wally-index"
realm = "shared"
[dependencies]
react = "jsdotlua/react@17.1.0"
react-roblox = "jsdotlua/react-roblox@17.1.0"
cryo = "phalanxia/cryo@1.0.3"
Kemudian jalankan wally install .Wally membuat direktori Packages dan mengunduh paket yang ditentukan di sana.Langkah terakhir adalah menambahkan direktori Packages ke Rojo sehingga kontennya disinkronkan kembali ke Roblox.Buka default.project.json dan tambahkan jalur.Untuk kesederhanaan, contoh ini menambahkan seluruh direktori ke ReplicatedStorage sehingga semua paket tersedia untuk semua skrip, tetapi Anda mungkin lebih suka menambahkan paket khusus ke ServerScriptService atau StarterPlayerScripts :
{
"name": "my-new-experience",
"tree": {
"$className": "DataModel",
"ReplicatedStorage": {
"Shared": {
"$path": "src/shared"
},
"Packages": {
"$path": "Packages"
}
},
...
}
}
Kemudian Anda dapat memerlukan paket dalam skrip Anda seperti yang lain ModuleScript :
local Players = game:GetService("Players")local ReplicatedStorage = game:GetService("ReplicatedStorage")local React = require(ReplicatedStorage.Packages.react)local ReactRoblox = require(ReplicatedStorage.Packages["react-roblox"])local handle = Instance.new("ScreenGui", Players.LocalPlayer.PlayerGui)local root = ReactRoblox.createRoot(handle)local helloFrame = React.createElement("TextLabel", {Text = "Hello World!",Size = UDim2.new(0, 200, 0, 200),Position = UDim2.new(0.5, 0, 0.5, 0),AnchorPoint = Vector2.new(0.5, 0.5),BackgroundColor3 = Color3.fromRGB(248, 217, 109),Font = Enum.Font.LuckiestGuy,TextSize = 24})root:render(helloFrame)
Seperti kebanyakan proyek perangkat lunak lainnya, tujuannya adalah agar kontributor dapat menyalin repositori, menginstal Foreman, menjalankan beberapa perintah, dan memiliki lingkungan pengembangan yang sama dengan sisa tim.
Kontrol versi
Memiliki serangkaian file teks sederhana di komputer Anda membuka berbagai kemampuan, tetapi yang utama adalah kontrol versi.Anda dapat menyimpan skrip dan file konfigurasi Anda di repositori Git atau Mercurial; menyimpan repositori remote dan memeriksa perubahan kode di GitHub, GitLab, atau Bitbucket; dan gunakan editor teks mana pun yang Anda suka.
Kode Visual Studio memiliki ekosistem ekstensi terbesar, tetapi Sublime Text , Notepad++ , dan Vim semuanya adalah pilihan populer.Editor mana pun yang Anda pilih, sesuai dengan kemampuan editor skrip Studio akan memerlukan beberapa ekstensi.
Anda juga mungkin mempertimbangkan untuk menambahkan:
- Sebuah linter seperti selene untuk menangkap masalah umum dan memaksakan standar pemrograman
- Pembentuk kode seperti StyLua
- Server bahasa seperti Luau Language Server untuk penyelesaian otomatis, pemeriksaan jenis, dan banyak lagi
- Buka skrip Cloud (tidak disinkronkan ke Studio) ke memperbarui pengalaman yang dipublikasikan atau memulai ulang server
Aktiva
Alat-alat di halaman ini paling sesuai dengan skrip; seniman 3D sudah menggunakan alat eksternal seperti Blender dan Maya, menyimpan file sumber dalam kontrol versi, dan mengimpor kreasi mereka ke Studio.Setelah Anda memiliki aset Studio, kami sarankan untuk memanfaatkan paket kapan pun mungkin.
Implementasi paket Roblox mengikuti banyak prinsip yang sama dengan alat di halaman ini: repositori terpusat dengan riwayat versi yang menawarkan cara lancar untuk menyimpan semua salinan aset dalam sinkronisasi.Untuk informasi lebih lanjut tentang bagaimana mereka dapat meningkatkan alur kerja Anda, lihat Paket.
Membatalkan semuanya
Karena alat pihak ketiga menyinkronkan perubahan kembali ke Roblox Studio daripada menggantikannya, tidak ada bagian dari alur kerja ini yang melibatkan pengunci.Kapan saja, Anda dapat berhenti menggunakan satu atau semua alat ini dan kembali mengedit pengalaman Anda secara eksklusif di Studio.Kekurangan risiko membuat eksperimen dengan alat pihak ketiga terlihat sangat menarik.