สำหรับสตูดิโอพัฒนามืออาชีพ การตั้งค่าเครื่องมือของบุคคลที่สามและการลงทุนในระบบอัตโนมัติสามารถปรับปรุงผลผลิตของนักพัฒนาได้อย่างมาก แนวทางการพัฒนาของ Roblox ที่มุ่งเน้นไปที่คลาวด์มีข้อดีหลายประการ แต่การย้ายบางส่วนของกระบวนการพัฒนาจากคลาวด์ ออกไป อาจช่วยให้ทีมขนาดใหญ่ติดตามการเปลี่ยนแปลงตลอดเวลา ตรวจสอบโค้ด และใช้ภาษาและเครื่องมือที่พวกเขาคุ้นเคยอยู่แล้ว
- หากคุณต้องการเพียงใช้โปรแกรมแก้ไขข้อความภายนอกหรือเก็บโค้ดในระบบควบคุมเวอร์ชัน Script Sync เป็นตัวเลือกที่ยอดเยี่ยม
- หากคุณต้องการจัดการโปรเจ็กต์ทั้งหมดของคุณเป็นชุดของไฟล์ในเครื่อง หน้านี้จะครอบคลุมเครื่องมือและกลยุทธ์บางอย่าง
ปัญหาการซิงค์
ในแกนหลัก การใช้เครื่องมือภายนอกกับ Roblox เป็นปัญหาเกี่ยวกับการ ซิงค์:
- คุณต้องการให้อินสแตนซ์ของ Roblox ของคุณมีอยู่เป็นไฟล์ในดิสก์เพื่อที่คุณจะสามารถใช้เครื่องมือของคุณทำงานร่วมกับมันได้
- คุณต้องนำไฟล์ของคุณกลับเข้าสู่โปรเจ็กต์ Roblox ของคุณหลังจากที่คุณทำงานกับไฟล์เหล่านั้นเสร็จแล้ว
- หากมีคนอื่นเปลี่ยนแปลงไฟล์เดียวกันในระหว่างนี้ คุณจะต้องจัดการกับความขัดแย้งที่เกิดขึ้น
เพื่อให้โซลูชันทั้งหมดรู้สึกอิสระและเป็นอัตโนมัติ คุณต้อง a) ฟังการเปลี่ยนแปลงของไฟล์และ b) นำการเปลี่ยนแปลงเหล่านี้กลับเข้าสู่ Studio
แทนที่จะใช้แนวทางที่มุ่งเน้นไปที่คลาวด์ของ Roblox Rojo เปิดโอกาสในการใช้แนวทาง "ระบบไฟล์ก่อน" มันทำงานบนเซิร์ฟเวอร์ในเครื่องของคุณที่สื่อสารกับ Studio plugin เพื่อซิงค์ไฟล์ของคุณกับโมเดลข้อมูลของ Studio
ติดตั้ง Rojo ด้วย Rokit
คุณสามารถดาวน์โหลดและเรียกใช้ไฟล์ไบนารี Rojo ด้วยตนเอง แต่แนวทางนี้มีความเสี่ยงในการใช้เวอร์ชัน Rojo ที่แตกต่างกันโดยนักพัฒนาคนต่างๆในทีมของคุณ โซลูชั่นที่ดีกว่าคือการใช้เครื่องมือการจัดการเช่น Rokit ซึ่งใช้ไฟล์การกำหนดค่า—รายการของที่เก็บและเวอร์ชัน—เพื่อทำให้งานติดตั้งและอัปเกรดเป็นไปอย่างสม่ำเสมอในเครื่องต่างๆ
เนื่องจากมันจัดการสภาพแวดล้อมการพัฒนาพื้นฐานของคุณมากกว่าที่แพ็คเกจภายในโปรเจ็กต์ของคุณ Rokit จึงมีความคล้ายคลึงกับ nvm มากกว่า npm แต่การเปรียบเทียบไม่สมบูรณ์ ไฟล์ rokit.toml ที่ง่ายๆ มีลักษณะดังนี้:
[tools]
rojo = "rojo-rbx/rojo@7.6.1"
wally = "upliftgames/wally@0.3.2"
lune = "lune-org/lune@0.10.4"
จากนั้นคุณติดตั้งเครื่องมือเหล่านี้ด้วย rokit install นอกเหนือจากไฟล์ rokit.toml ทั่วไป Rokit ยังรองรับไฟล์เฉพาะโปรเจ็กต์ ซึ่งสามารถใช้เวอร์ชันที่แตกต่างกันของ Rojo, Wally หรือเครื่องมืออื่นๆ สำหรับโปรเจ็กต์แตกต่างกันและทำให้ทีมของคุณใช้เวอร์ชันเดียวกันได้
เมื่อมีเครื่องมือออกเวอร์ชันใหม่ คุณสามารถปรับเวอร์ชันในไฟล์ .toml ของคุณ ใช้ Rokit เพื่ออัปเกรด ทดสอบเวอร์ชันใหม่ และลดเวอร์ชันลงหากเกิดปัญหา สำหรับคำสั่งและคำแนะนำการติดตั้ง ดูที่ Rokit
รัน Rojo
หลังจากที่คุณติดตั้ง Rojo ด้วย Rokit สิ่งที่คุณติดตั้งจริงๆ คือเซิร์ฟเวอร์ Rojo ขั้นตอนถัดไปคือติดตั้งปลั๊กอิน Rojo สำหรับ Roblox Studio
คุณสามารถติดตั้งจาก Creator Store หรือทำการติดตั้งโลคัลด้วยคำสั่งนี้:
rojo plugin install
จากนั้นสร้างโครงสร้างโปรเจกต์สำหรับเกมใหม่ของคุณและสร้างมันขึ้นมา:
rojo init my-new-experiencecd my-new-experiencerojo build -o my-new-experience.rbxl
หรือคุณสามารถ พอร์ตเกมที่มีอยู่ ไม่ว่าจะด้วยวิธีใด หลังจากที่คุณมีโปรเจต์ให้เริ่มเซิร์ฟเวอร์ Rojo:
rojo serve
ใน Roblox Studio เปิดไฟล์ .rbxl ที่คุณสร้างขึ้น เปิดปลั๊กอิน Rojo และเชื่อมต่อกับเซิร์ฟเวอร์ที่กำลังรันอยู่ ในจุดนี้คุณสามารถเริ่มทำการเปลี่ยนแปลงในโปรแกรมแก้ไขข้อความที่คุณชื่นชอบและดูการเปลี่ยนแปลงเหล่านั้นซิงค์กลับไปยัง Studio โดยอัตโนมัติ


โปรเจกต์ Rojo มีข้อกำหนดการตั้งชื่อเฉพาะสำหรับไฟล์ ตัวเลือกการกำหนดค่ามากมาย และข้อจำกัดบางประการ ซึ่งทั้งหมดนี้จะอธิบายไว้ใน เอกสาร Rojo
ตัวจัดการแพ็คเกจ
Roblox มี API แบบรวมที่แข็งแกร่ง แต่ถ้าคุณต้องการใช้โปรแกรมซอฟแวร์ในชุมชนอย่างสม่ำเสมอและสามารถสร้างซ้ำได้ คุณต้องใช้ตัวจัดการแพ็คเกจ Wally เป็นตัวเลือกที่นิยม คุณสามารถติดตั้งผ่าน Rokit เช่นเดียวกับ Rojo
ภายในไดเรกทอรี Rojo ของเกมของคุณ ให้รัน wally init จากนั้นเพิ่มแพ็คเกจที่คุณต้องการใน wally.toml ไฟล์อาจมีลักษณะดังนี้:
[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.2.1"
react-roblox = "jsdotlua/react-roblox@17.2.1"
cryo = "phalanxia/cryo@1.0.3"
จากนั้นรัน wally install Wally จะสร้างไดเรกทอรี Packages และดาวน์โหลดแพ็คเกจที่ระบุไว้ที่นั่น ขั้นตอนสุดท้ายคือการเพิ่มไดเรกทอรี Packages ลงใน Rojo เพื่อให้เนื้อหาสามารถซิงค์กลับไปยัง Roblox เปิด default.project.json และเพิ่มเส้นทาง สำหรับความสะดวก ตัวอย่างนี้จะเพิ่มทั้งหมดไดเรกทอรีไปยัง ReplicatedStorage เพื่อให้สามารถใช้งานแพ็คเกจทั้งหมดได้ในทุกสคริปต์ แต่คุณอาจต้องการเพิ่มแพ็คเกจเฉพาะไปยัง ServerScriptService หรือ StarterPlayerScripts:
{
"name": "my-new-experience",
"tree": {
"$className": "DataModel",
"ReplicatedStorage": {
"Shared": {
"$path": "src/shared"
},
"Packages": {
"$path": "Packages"
}
},
...
}
}
จากนั้นคุณสามารถเรียกใช้แพ็คเกจภายในสคริปต์ของคุณได้เช่นเดียวกับ 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 = "สวัสดีโลก!",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)
เช่นเดียวกับโปรเจ็กต์ซอฟต์แวร์ส่วนใหญ่ เป้าหมายคือให้ผู้มีส่วนร่วมสามารถโคลนที่เก็บ ติดตั้ง Rokit รันคำสั่งไม่กี่คำสั่ง และมีสภาพแวดล้อมการพัฒนาที่เหมือนกันกับทีมงานที่เหลือ
การควบคุมเวอร์ชัน
การมีชุดไฟล์ข้อความธรรมดาบนคอมพิวเตอร์ของคุณปลดล็อคความสามารถต่างๆมากมาย แต่ความสามารถหลักคือ การควบคุมเวอร์ชัน คุณสามารถเก็บไฟล์ของคุณใน Git หรือ Mercurial โดยสามารถโฮสต์ที่เก็บระยะไกลและตรวจสอบการเปลี่ยนแปลงโค้ดใน GitHub, GitLab หรือ Bitbucket และใช้โปรแกรมแก้ไขข้อความใดก็ได้ที่คุณชอบ
Visual Studio Code และ Cursor มีระบบส่วนขยายที่ใหญ่ที่สุด แต่ Sublime Text, Notepad++ และ Vim ก็เป็นตัวเลือกที่ได้รับความนิยมเช่นกัน ไม่ว่าคุณจะเลือกโปรแกรมแก้ไขใด การจับคู่ความสามารถของโปรแกรมแก้ไขสคริปต์ Studio จะต้องใช้ส่วนขยายบางอย่าง
คุณอาจพิจารณาเพิ่ม:
- เครื่องมือป้องกันข้อผิดพลาดอย่าง selene เพื่อจับปัญหาที่เป็นไปได้ทั่วไปและบังคับให้เป็นไปตามมาตรฐานการเขียนโค้ด
- เครื่องมือจัดรูปแบบโค้ดอย่าง StyLua
- เซิร์ฟเวอร์ภาษาอย่าง Luau Language Server สำหรับการเติมคำอัตโนมัติ การตรวจสอบประเภท และอื่นๆ
ยกเลิกทุกอย่าง
เนื่องจากเครื่องมือของบุคคลที่สามซิงค์การเปลี่ยนแปลงกลับไปยัง Roblox Studio แทนที่จะทำการแทนที่ มันจึงไม่มีส่วนใดของกระบวนการนี้ที่เกี่ยวข้องกับการล็อกใน ในทุกเวลา คุณสามารถหยุดใช้เครื่องมือเหล่านี้บางตัวหรือทั้งหมดและกลับไปแก้ไขเกมของคุณเฉพาะใน Studio การขาดความเสี่ยงทำให้การทดลองกับเครื่องมือของบุคคลที่สามมีความน่าสนใจเป็นพิเศษ