Untuk studio pengembangan profesional, mengatur alat pihak ketiga dan berinvestasi dalam otomatisasi dapat secara dramatis meningkatkan produktivitas pengembang. Roblox's cloud-first approach memiliki banyak kelebihan, tetapi pindahkan beberapa bagian dari workflow pengembangan ke luar dari cloud dapat membantu tim yang lebih besar melacak perubahan sepanjang waktu, meninjau kode, dan m
Masalah Sinkronisasi
Pada intinya, menggunakan alat eksternal dengan Roblox adalah masalah sinkronisasi :
- Anda ingin skrip Roblox Anda ada sebagai .luau file on disk sehingga Anda dapat menggunakan alat Anda sendiri untuk bekerja di atasnya.
- Anda harus mendapatkan file Anda kembali ke proyek Roblox Anda setelah Anda selesai bekerja di atasnya.
- Jika seseorang lain mengubah file yang sama tersebut dalam waktu yang sama, Anda harus menangani setiap konflik.
Untuk seluruh solusi untuk merasa lancar dan otomatis, Anda perlu a) mendengarkan perubahan file dan b) mengambil ini perubahan kembali ke Studio. Dengan kata lain, Anda memerlukan server dan plugin Studio, yang merupakan cara Rojo menyelesaikan masalah ini.
Sebagai gantinya, pendekatan cloud-first Roblox, Rojo mengizinkan pendekatan "sistem file pertama". Ini mengekstraksi semua file script di proyek Anda ke file Luau. Kemudian itu mengeksekuskan server. Plugin Rojo terhubung ke server untuk menyinkronkan file-file ini dengan Studio.
Menginstal Rojo dengan Foreman
Anda dapat secara manual mengunduh dan mengeksekusi binatu Rojo, tetapi pendekatan tersebut menjalankan risiko berbagai pengembang di tim Anda menggunakan versi Rojo yang berbeda. Sebuah solusi yang lebih baik adalah menggunakan manajer alat seperti Foreman, yang menggunakan file konfigurasi—daftar repositori dan versi—untuk membuat proses penginstalan dan pembaruan konsisten di antara mesin.
Karena mengelola lingkungan pengembangan dasar Anda daripada paket-package dalam proyek Anda, Foreman lebih mirip dengan nvm daripada npm, tetapi perbandingan tidak sempurna. Sebuah file foreman.toml sederhana seperti ini:
[tools]
rojo = { github = "rojo-rbx/rojo", version = "7.4.1" }
wally = { github = "UpliftGames/wally", version = "0.3.2" }
Kemudian Anda menginstal alat-alat ini dengan foreman install . Selain file global foreman.toml , Foreman mendukung file proyek per proyek, sehingga Anda dapat dengan mudah menggunakan versi yang berbeda dari Rojo, Wally, atau alat lain untuk proyek yang berbeda dan menjaga seluruh tim Anda pada versi yang sama.
Ketika alat melepaskan versi baru, Anda kemudian secara eksplisit menumpuk nomor versi di file .toml Anda, gunakan Foreman untuk melakukan upgrade, menguji versi baru, dan menurunkan jika itu menyebabkan masalah apa pun. Untuk perintah dan instruksi pemasangan, lihat Foreman.
Menjalankan Rojo
Setelah Anda menginstal Rojo dengan Foreman, yang Anda benar-benar menginstal adalah server Rojo. Langkah berikutnya adalah menginstal plugin Rojo untuk Roblox Studio:
rojo plugin install
Kemudian generasikan struktur proyek untuk pengalaman baru Anda dan bangun:
rojo init my-new-experiencecd my-new-experiencerojo build -o my-new-experience.rbxl
Alternatifnya, Anda dapat porting pengalaman yang sudah 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 memulai membuat perubahan di editor teks favorit Anda dan menonton perubahan tersebut secara otomatis sinkronisasi kembali ke Studio.
Proyek Rojo memiliki beberapa persyaratan nama untuk file, banyak pilihan konfigurasi, dan beberapa keterbatasan, semuanya dibahas dalam dokumenasi Rojo.
Manajer Paket
Roblox memiliki set API yang kuat, tetapi jika Anda ingin menggunakan paket perangkat lunak komunitas dalam cara yang konsisten, dapat diulang, Anda memerlukan manajer paket. Wally adalah pilihan populer. Anda dapat menginstalnya melalui Foreman, seperti Rojo.
Dalam direktori Rojo pengalaman Anda, lari wally init . Kemudian tambahkan paket yang diinginkan Anda 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 lari wally install . Wally menciptakan direktori Packages dan mengunduh paket yang dit
{
"name": "my-new-experience",
"tree": {
"$className": "DataModel",
"ReplicatedStorage": {
"Shared": {
"$path": "src/shared"
},
"Packages": {
"$path": "Packages"
}
},
...
}
}
Maka Anda dapat mengharuskan paket dalam skrip Anda seperti paket lainnya 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, tujuan utama adalah agar kontributor dapat mklon仓库,安装Foreman,実行幾個命令,並且有同樣的開發環境作為其他團隊的剩下。
Mengontrol Versi
Memiliki satu set file teks murni di komputer Anda membuka berbagai kemampuan, tetapi yang utama adalah kontrol versi. Anda dapat menyimpan skrip dan file konfigurasi di repositori Git atau Mercurial; menyimpan perubahan kode di repositori
Kode Studio Visual memiliki ekosistem ekstensi terbesar, tetapi Sublime Text, Notepad++, dan 0> Vim0> semuanya populer. Apa pun editor yang Anda pilih, menyesuaikan kemampuan script editor Studio akan memerlukan beberapa ekstensi.
Anda juga mungkin ingin menambahkan:
- Sebuah linter seperti selene untuk menangkap masalah umum dan menegakkan standar kode
- Sebuah pembentuk kode seperti StyLua
- Sebuah server bahasa seperti Luau Language Server untuk autocompletion, type checking, dan banyak lagi
- Buka Cloud skrip (tidak disinkronisasi dengan Studio) untuk menyimpan pengalaman yang diterbitkan atau meluncurkan server baru
Aset
Alat-alat pada halaman ini paling diterapkan kepada skrip; 3D seniman sudah menggunakan alat eksternal seperti Blender dan Maya, menyimpan file sumber dalam kontrol versi, dan impor kreasi mereka ke Studio. Setelah Anda memiliki aset Studio, kami sarankan menggunakan paket setiap kali mungkin.
Penerapan Roblox paket mengikuti banyak prinsip yang sama dengan alat-alat di halaman ini: repositori pusat yang menyediakan catatan versi yang menawarkan cara yang lancar untuk menjaga semua salinan aset dalam sinkronisasi. Untuk lebih banyak informasi tentang cara mereka dapat meningkatkan workflow Anda, lihat Paket.
Mengulangi Semuanya
Karena alat pihak ketiga menyinkronisasi perubahan kembali ke Roblox Studio daripada menggantikannya, tidak ada bagian dari workflow ini yang melibatkan kunci-lock. Pada saat apa pun, Anda dapat berhenti menggunakan salah satu atau semua alat ini dan kembali ke mengedit pengalaman Anda secara eksklusif di Studio. Ketidakrisauan membuat eksperimen dengan alat pihak ketiga sangat menarik.